9

重複して送信した場合は申し訳ありませんが、オーディオ ファイルからサウンド スペクトルを抽出できるようにする lib が python にあるかどうか疑問に思います。オーディオ ファイルを取得して、一連のデータ {TimeStampInFile; を返すアルゴリズムを記述できるようにしたいと考えています。周波数-振幅}。

これは通常 Beat Detection と呼ばれていると聞きましたが、私が見る限り、ビート検出は正確な方法ではありません。抽出したデータを操作してからオーディオ ファイルに変換したいため、視覚化にのみ適しています。これをリアルタイムで行う必要はありません。

提案や推奨事項をいただければ幸いです。

4

2 に答える 2

9

あなたの質問には3つの別々の部分があると思います:

  1. オーディオファイルをPythonにロードするには?
  2. Pythonでスペクトルを計算するには?
  3. スペクトルをどうするか?

1. Python でオーディオ ファイルをロードする方法は?

scipy多くの信号処理機能を提供するため、おそらく を使用することをお勧めします。オーディオファイルをロードする場合:

import scipy.io.wavfile

samplerate, data = scipy.io.wavfile.read("mywav.wav")

これで、サンプル レート (サンプル/秒) が にsamplerate、データが として得numpy.arrayられdataます。アプリケーションによっては、データを浮動小数点に変換したい場合があります。

wavewav ファイルをロードするための標準の python モジュールもありますが、 numpy/scipyはよりシンプルなインターフェイスと信号処理のためのより多くのオプションを提供します。

2. スペクトルの計算方法

簡単な答え: FFT を使用します。その他の知恵の言葉については、次を参照してください。

高速フーリエ変換を使用してオーディオを分析する

長い答えはかなり長いです。ウィンドウ処理は非常に重要です。そうしないと、奇妙なスペクトルが得られます。

3. スペクトルをどうするか

これは少し難しいです。フィルタリングは、より長い信号の時間領域で実行されることがよくあります。達成したいことを教えていただければ、これに対する良い答えが返ってくるかもしれません。周波数スペクトルを計算することは 1 つのことですが、信号処理で意味のある結果を得ることはもう少し複雑です。

(あなたがこれを尋ねていないことは知っていますが、>> 0 の確率で出てくるようです。もちろん、オーディオ信号処理について十分な知識を持っている可能性もあります。その場合、これは関係ありません。)

于 2014-06-24T16:13:16.670 に答える