2

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)

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


どんな助けにもとても感謝しています!漠然と関連するオーディオ分析の知恵のヒントでさえ、高く評価されます。:)

4

2 に答える 2

4

あなたが望むのは、おそらく音声データのフーリエ変換です。それを計算できるパッケージがいくつかあります。scipyそしてnumpyそのうちの2人です。「高速フーリエ変換」(FFT) と呼ばれることがよくありますが、それはアルゴリズムの名前にすぎません。

以下はその使用例です: https://svn.enthought.com/enthought/browser/Chaco/trunk/examples/advanced/spectrum.py

于 2008-11-03T18:31:46.533 に答える
1

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

于 2009-02-20T11:52:06.677 に答える