加载音频文件并找到频率

Load an audio file and find the frequency

我有以下代码:

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()

我想让这个程序给我以 Hz 为单位的频率和最大幅度,但我得到的不是 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