我有以下代码:
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] 删除。
我来说两句