1

時間の関数として mp3 から振幅データを抽出するコードを作成しようとしています。この関数を使用して、しばらく前に MATLAB で大まかなバージョンを作成しました。

私は多くの調査を行いましたが、これまでのところ、.mp3 を .wav に変換するには mpg321 などを使用する必要があることがわかりました。それを機能させる方法を理解できませんでした。

次のステップは、.wav ファイルからデータを読み取ることですが、これも成功していません。誰かが同様のことをしたか、これを支援するためにいくつかのライブラリを推奨できますか? ありがとう!

4

3 に答える 3

1

subprocessモジュールを使用して呼び出すことができますmpg123:

import subprocess
import sys

inname = 'foo.mp3'
outname = 'out.wav'
try:
    subprocess.check_call(['mpg123', '-w', outname, inname])
except CalledProcessError as e:
    print e
    sys.exit(1)

wav ファイルを読み取るには、次のように wave モジュールを使用する必要があります。

import wave
import numpy as np

wr = wave.open('input.wav', 'r')
sz = 44100 # Read and process 1 second at a time.
da = np.fromstring(wr.readframes(sz), dtype=np.int16)
wr.close()
left, right = da[0::2], da[1::2]

その後、同じチャンネルのサンプルを含めますleftright

より精巧な例をここで見つけることができます。

于 2013-07-23T12:47:59.873 に答える
1

これは、リアルタイムよりも約 10 倍遅い MP3 ファイルをデコードできる純粋な python のプロジェクトです: http://portalfire.wordpress.com/category/pymp3/

残りはフーリエ数学などによって行われます。

waveファイルの周波数解析方法

そしてpythonモジュールを見てくださいwave

http://docs.python.org/2/library/wave.html

于 2013-07-23T12:50:24.087 に答える