入力オーディオストリームから周波数情報を抽出する方法(PortAudioを使用)

StackOverflow https://stackoverflow.com/questions/259451

質問

PortAudio(PyAudio)を使用して音声(音声)を録音し、対応する音波を画面に出力したい。私は絶望的ですが、オーディオストリームから周波数情報を抽出できないため、Hz /時間形式で描画できます。


次のコードスニペットは、記録された音声を5秒間記録および再生します。

p = pyaudio.PyAudio()

chunk = 1024
seconds = 5

stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=44100,
                input=True,
                output=True)

for i in range(0, 44100 / chunk * seconds):
    data = stream.read(chunk)
    stream.write(data, chunk)

上記の変数「data」から必要な情報を抽出したい。 (または、PortAudioまたはPythonバインディングを使用する別のライブラリを使用して、他の高レベルのアプローチを使用します。)


私はどんな助けにもとても感謝しています!あいまいに関連する音声分析の知恵も大歓迎です。 :)

役に立ちましたか?

解決

おそらく、音声データのフーリエ変換が必要です。あなたのためにそれを計算できるいくつかのパッケージがあります。 scipy numpy はそのうちの2つです。多くの場合、「高速フーリエ変換」という名前が付けられます。 (FFT)ですが、それはアルゴリズムの名前です。

その使用例は次のとおりです。 https ://svn.enthought.com/enthought/browser/Chaco/trunk/examples/advanced/spectrum.py

他のヒント

フーリエ変換は、周波数領域と時間領域の両方で分析を実行する場合、あまり役に立ちません。 「ウェーブレット変換」をご覧になることをお勧めします。 pywaveletsと呼ばれるパッケージがあります... http://www.pybytes.com/pywavelets/#discrete-wavelet- transform-dwt

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top