6

PyAudio のデフォルトの録音例を使用し、numpy と scipy を追加しました。scipy.io.wavefile.read('FILE.wav')ただし、ファイルを記録した後に のみ使用できます。また、このランダムなタプルも提供されます(44100, array([[ 0, 0], [-2, 0], [ 0, -2], ..., [-2, -2], [ 1, 3], [ 2, -1]], dtype=int16))。この配列は私に何を与えてくれますか、できれば録音中にwavファイルの各フレームの周波数/振幅を取得する方法を知っていますか?

4

1 に答える 1

12

配列はランダム データではなく、ステレオ サウンドのウェーブ データであり、44100 はサンプリング レートです。次のコードを使用して、左チャネルの波形をプロットします。

import scipy.io.wavfile as wavfile
import numpy as np
import pylab as pl
rate, data = wavfile.read('FILE.wav')
t = np.arange(len(data[:,0]))*1.0/rate
pl.plot(t, data[:,0])
pl.show()

波の周波数と振幅を取得するには、FFT を実行します。次のコードは、すべての周波数ビンのパワーをプロットします。

p = 20*np.log10(np.abs(np.fft.rfft(data[:2048, 0])))
f = np.linspace(0, rate/2.0, len(p))
pl.plot(f, p)
pl.xlabel("Frequency(Hz)")
pl.ylabel("Power(dB)")
pl.show()
于 2011-08-02T07:45:03.290 に答える