WAV 文件的 FFT 和输出以绘制频谱

Posted

技术标签:

【中文标题】WAV 文件的 FFT 和输出以绘制频谱【英文标题】:FFT for WAV file and output to draw spectrum 【发布时间】:2011-07-09 11:08:03 【问题描述】:

我有一些关于 FFT 的问题。我想用FFT来分析WAV文件的频率,16位双通道,44100Hz。我想每 50 毫秒分析一次,以便在给定时间有 2205 个样本。所以:

    我必须对 2205 个样本使用 FFT 作为输入数组数据吗?输出也是一个包含 2205 个元素的数组? 我想像某些媒体播放器一样绘制 WAV 文件的频谱,但我必须使用数组的全部或其中的一个值?

【问题讨论】:

SO 上已经有很多重复项,例如从今天早些时候开始:Audio spectrum analysis using FFT algorithm in Java 【参考方案1】:

这个问题不是很清楚,我可能误解了,但我认为您不是在问如何执行 FFT。

但您应该使用所有您的数据样本作为 FFT 的输入,并使用 所有您的输出数据绘制频谱。

【讨论】:

我不了解沿 x-axix (hz) 的所有数据的平均值,请向我解释。谢谢 因此,实际上,您需要使用输出数据绘制图表。必须有许多图表库可用... FFT 太复杂了,无法在这里解释。我所能做的就是向您推荐参考资料:en.wikipedia.org/wiki/FFT【参考方案2】:

基本上,如果您的采样率为 2205,则您可以计算的最大 FFT 频率是没有混叠的采样率的一半,即 1103。

要绘制频谱,您需要拥有所有频率值和 FFT 值的对应实部。

【讨论】:

以上是关于WAV 文件的 FFT 和输出以绘制频谱的主要内容,如果未能解决你的问题,请参考以下文章

计算 wav 文件和录制声音的频谱图(音量标准化)

使用 FFT 进行频谱分析,基频推导

在 Java 中使用 FFT 算法进行音频频谱分析

对 pcm 数据应用 FFT 并转换为频谱图

wav音频文件解析读取 定点转浮点分析 幅值提取(C语言实现)

来自近乎完美的正弦曲线的奇怪 FFT 频谱