在音频文件上使用Python进行FFT - 采样率

时间:2013-12-29 22:26:27

标签: python audio numpy

我一直试图找到一些在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

我正在使用scipy.org上的文档,使用fftfreqfft的示例。

1 个答案:

答案 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