加载音频文件并找到频率
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
我有以下代码:
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