mp3ファイルをwavファイルに変換するプログラムを書きたいのですが、エラーが出ます。
したいこと
作成後のmp3
ファイルをwav
ファイルへ変換するプログラムを書きたいです。
自分が調べた二つの方法
その方法を探るため、本家を回ってみました。
すると、本家より、
1.subprocess
2.pydub
を使う方法があるとわかりました。
自分が書いてみたコード(本当は引用したものを改編したものです。)
そこで、自分も適当にmp3ファイルを引っ張ってきて、
import subprocess
subprocess.call(['sox', 'filename.mp3', '-e', 'mu-law',
'-r', '16k', 'filename.wav', 'remix', '1,2'])
import pydub
sound = pydub.AudioSegment.from_mp3("filename.mp3")
sound.export("filename.wav", format="wav")
と二つのコードを書いてみました。しかし、エラーが出ます。
出現するエラー
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
ちなみに、pydub
のコードを実行すると、
RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work
warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
というエラーが出ます。
他の方法を模索
さらに、ほかのQ&A(Pydub (WindowsError: [Error 2] The system can not find the file specified)を見てみました。
こちらの解答には、このように書かれていました。
Make sure that you have ffmpeg http://www.ffmpeg.org/ installed. You can get help from this official page.
Other thing that I can think of is that ffmpeg is installed and is in your path but not in the path of the process using pydub.
If this is the reason for the error, then you can set the absolute path to ffmpeg directly like shown below
ffmpeg
ファイルをダウンロードしてインストールされているかどうかを確認せよ。
こちらの公式ページからヘルプを得ることが出来る。他に考え付くことは、
ffmpeg
がインストールされ、パスにあるが、pydubを使うプロセスのパスの中には存在していないのであるという事だ。もしそれらが理由であるならば、下記のようにffmpegの絶対パスを指定すること。
まず、ffmpegをダウンロード、インストールさえしていなかったので、それを行ってみました。
手続きは、windowsにffmpegをダウンロードするを参考にしてみました。
そのうえで、
AudioSegment.ffmpeg = "absolute-path"
と、指示通りにパスを打って、実行してみました。
しかし、結果は相変わらずでした。
どなたか解決法をご存じありませんか?