音符的FFT

时间:2017-11-16 09:23:32

标签: python fft wav

我一直对python中的FFT感到困惑。我要做的是绘制音符编号61(或中间C#)的FFT。以下是我尝试使用的代码,我使用here wav文件找到了this。运行该代码后,我在稍微放大后得到了这个输出。

output

我认为这是完全错误的,因为在线查看后,音符编号61的频率为277.2hz。这意味着该值附近应该有一个高峰吗?但对我来说,似乎价值观完全没有了。这是我现在正在运行以获得情节的代码。

import matplotlib.pyplot as plt
from scipy.fftpack import fft
from scipy.io import wavfile # get the api
fs, data = wavfile.read("MAPS_ISOL_NO_P_S0_M61_AkPnBsdf.wav") # load the data
a = data.T[0] # this is a two channel soundtrack, I get the first track
b=[(ele/2**8.)*2-1 for ele in a] # this is 8-bit track, b is now normalized on [-1,1)
c = fft(b) # create a list of complex number
d = len(c)/2  # you only need half of the fft list
plt.plot(abs(c[:(d-1)]),'r') 
plt.xlabel('Frequency')
plt.ylabel('Magnitude')
plt.show()

我也不确定我的x轴和y轴是否正确标记了轴,因为我相信数组中的每个条目都是大小为Fs / N的bin,其中Fs是采样率,N是大小FFT?在网上看了几周后,我真的很困惑和不知所措。谢谢你的帮助!

0 个答案:

没有答案