我一直试图找到一些在WAV文件中占主导地位的频率。我发现我可以使用python wave
库以及scipy.io.wavfile
来读取音频文件。
如果采样率是16000,这是否意味着我的时间步长为1/16000?这意味着我的代码应该看起来像这样找到频率:
wavData = wavfile.read(someName); # 2D array of sampling rate and values
fourier = fftpack.fft(wavData[0][1]); # FFT on the values
n = wavData[0][1].size;
timestep = 1/wavData[0]; # 1/16000
freq = np.fft.fftfreq(n, d=timestep); # getting array of sample frequencies
答案 0 :(得分:1)
如果采样率是16000,那是否意味着我的时间步长是1/16000?
是的,这是正确的;每秒16,000个样本意味着每个样本覆盖1/16,000秒。但请注意,在Python 2.x中,您需要明确使用float
来获取正确的timestep
:
timestep = 1.0 / wavData[0]
使用2.x的默认整数除法:
1 / 16000 == 0
而
1.0 / 16000 == 6.25e-05