1

Pydubライブラリを使用して mp3 ファイルからG. 711 alawコンパンディングで wav ファイルを生成しようとしています。wav ファイルが生成されていますが、周波数 8 kHz にリサンプリングされていません。次のコードを試しました:

from_path = '/home/nikhil/Music/m1.mp3' #this is a mp3 file
to_path = '/home/nikhil/Music/m1.wav' #resulted file
from_format = 'mp3'
to_format = 'wav'
params = ["-acodec", "pcm_alaw", "-ar", "8000"]
AudioSegment.from_file(from_path, from_format).export(to_path, format=to_format, parameters=params)

誰かが私を助けることができますか?

4

1 に答える 1

2

export メソッドのコードを調べていたところ、出力形式が "wav" の場合は ffmpeg が使用されていないことに気付きました。

wav は内部で使用されるため、オーディオのメモリ内バージョンをディスクに直接書き込むだけです (これは、ffmpeg をオプションの依存関係にするために行われました。wav サポートのみが必要な場合は、インストールする必要はありません)。

この問題を回避するための 2 つのアイデアがあります。

  1. 「pcm」など、別の形式の kwarg を使用します。これが機能するかどうかはわかりません。また、現在のマシンにテストする ffmpeg がありませんが、試してみる価値は間違いありません。

    from_path = '/home/nikhil/Music/m1.mp3' #this is a mp3 file
    to_path = '/home/nikhil/Music/m1.wav' #resulted file
    from_format = 'mp3'
    to_format = 'pcm'
    params = ["-acodec", "pcm_alaw", "-ar", "8000"]
    AudioSegment.from_file(from_path, from_format).export(to_path, format=to_format, parameters=params)
    
  2. pydub の内部メカニズムを使用して 8kHz にリサンプリングします: 繰り返しますが、現時点ではこれを正しくテストできません...

    from_path = '/home/nikhil/Music/m1.mp3' #this is a mp3 file
    to_path = '/home/nikhil/Music/m1.wav' #resulted file
    
    seg = AudioSegment.from_mp3(from_path)
    seg = seg.set_frame_rate(8000)
    seg.export(to_path, format="wav")
    
于 2013-12-02T19:56:04.517 に答える