加载音频文件并找到频率

krolik2002

我有以下代码:

rate, data = wav.read('C.wav')
Fourier = abs(fftpk.fft(data))

max = np.argmax(Fourier, axis=None, out=None)
print(max) # get 787


freq = fftpk.fftfreq(len(Fourier), (1.0/rate))

plt.plot(freq[range(len(Fourier)//2)], Fourier[range(len(Fourier)//2)])
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.show()

我希望这个程序给我频率最高的赫兹,但我得到的不是 260 左右的值,而是 787。我不知道问题是什么。

该文件的情节:

文件的情节

侦探之眼

np.argmax为您提供Fourier频率中最大元素的索引,而不是实际频率。从索引获得频率的关系是frequency = index*rate/len(Fourier)因此,在您的情况下应用它应该会给您所需的频率:

max = np.argmax(Fourier, axis=None, out=None)
print(max) # get 787
maxfreq = max*rate/len(Fourier) # should give ~260

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章