我使用了 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 文件每一帧的频率/幅度,最好是在录制时?
10109 次
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 回答