【发布时间】:2015-10-10 04:59:18
【问题描述】:
我有一个想要在频域中可视化的 WAV 文件。接下来,我想写一个简单的脚本,接收一个WAV文件,输出某个频率“F”的能量是否超过阈值“Z”(某个音调在WAV文件中是否有很强的存在感)。网上有一堆代码sn-ps,展示了如何在Python中绘制FFT谱,但是很多步骤我都不懂。
- 我知道 wavfile.read(myfile) 返回采样率 (fs) 和数据数组 (data),但是当我对其运行 FFT (y = numpy.fft.fft(data)) 时,什么单位你在吗?
-
为了获得 x 轴的频率数组,一些海报在 n = len(data) 处这样做:
X = numpy.linspace(0.0, 1.0/(2.0*T), n/2)
和其他人这样做:
X = numpy.fft.fftfreq(n) * fs)[范围(n/2)]
这两种方法有区别吗?有没有很好的在线解释这些操作在概念上的作用?
- 一些关于 FFT 的在线教程提到了开窗,但没有很多发帖人在他们的代码 sn-ps 中使用开窗。我看到 numpy 有一个 numpy.hamming(N),但是我应该使用什么作为该方法的输入以及如何将输出窗口“应用”到我的 FFT 数组?
- 对于我的阈值计算,找到 X 中最接近我所需音调/频率的频率并检查 Y 中相应元素(相同索引)的幅度是否大于阈值是否正确?
【问题讨论】:
标签: python audio signal-processing fft