web-dev-qa-db-ja.com

Python Pydubでmp3をwavに変換

さて、今私はmp3をwavに変換することに行き詰まっています。私はさまざまな答えを見てきましたが、私はpydubの1つに行くと思います。

from pydub import AudioSegment

AudioSegment.from_mp3("/input/file.mp3").export("/output/file.wav", format="wav")

しかし、上記のコードを実行すると、次のエラーが発生します

C:\ Python27\lib\site-packages\pydub-0.14.2-py2.7.Egg\pydub\utils.py:165:RuntimeWarning:ffmpegまたはavconvが見つかりませんでした-デフォルトのffmpegですが、機能しない可能性があります

トレースバック(最後の最後の呼び出し):ファイル "C:/Users/phourlhar/Desktop/VoiceDetector/yeah.py"、7行、stereo_to_mono()

ファイル「C:\ Users\phourlhar\Desktop\VoiceDetector\utils.py」、25行目、stereo_to_mono

sound = AudioSegment.from_mp3(PROJECT_DIR+'\\files\\rec'+str(c)+'.mp3')

From_file内のファイル「build\bdist.win32\Egg\pydub\audio_segment.py」、346行目

ファイル "C:\ Python27\lib\subprocess.py"、行711、init errread、errwrite)

_execute_child startupinfo内のファイル「C:\ Python27\lib\subprocess.py」、948行

WindowsError:[エラー2]指定されたファイルが見つかりません

ファイルが存在することを確信しているので、なぜこのエラーが発生するのかわかりません。 ffmpegのインストールを提案する回答はありますが、後でアプリの展開に何らかの影響があるかどうかはわかりません

17
phourxx

pydubモジュールはffmpegまたはavconfプログラムを使用して実際の変換を行います。したがって、これを機能させるにはffmpegをインストールする必要があります。

ただし、pydubが必要ない場合は、組み込みのsubprocessモジュールを使用して、次のようにffmpegのようなコンバータープログラムを呼び出すことができます。

  import subprocess

  subprocess.call(['ffmpeg', '-i', '/input/file.mp3',
                   '/output/file.wav'])

ちなみに、これにはffmpegバイナリが$ PATHの場所にあることが必要です。

Editffmegでは、私の知る限り、ステレオをモノラルに変換することはできません。左または右のチャネルのみ選択できます。これはあなたが望むものではないと思います。

sox プログラムはステレオをモノラルに変換できます

  import subprocess

  subprocess.call(['sox', '/input/file.mp3', '-e', 'mu-law', 
                   '-r', '16k', '/output/file.wav', 'remix', '1,2'])

これは、8 kHz /サンプルで16 kHzでサンプリングし、16 kb/sを提供します。

14
Roland Smith

あなたはpydubに行く必要があります、それはオーディオファイルに関連する操作のための素晴らしいモジュールです。

注意。 pydubを使用する前に、ffmpegを必ずインストールしてください。

ffmpegのインストールに関するヘルプは、これ link を使用できます。

次にpydubをインストールするには、コマンドプロンプトを開いて次のように入力します。

pip install pydub

次に、mp3からwavにファイルを変換するには、次のようにpydubを使用します。

import pydub
sound = pydub.AudioSegment.from_mp3("D:/example/Apple.mp3")
sound.export("D:/example/Apple.wav", format="wav")
9