2

我正在对音频数据使用 FFT 来输出分析器,就像您在 Winamp 或 Windows Media Player 中看到的那样。但是输出看起来并不那么好。我正在使用对数刻度进行绘图,并将 FFT 的线性结果平均到相应的对数箱中。例如,我使用的垃圾箱如下:

16k,8k,4k,2k,1k,500,250,125,62,31,15 [hz]

然后我绘制幅度 (dB) 与频率 [hz] 的关系。图表肯定会对音乐产生“反应”,我可以看到鼓样本或高音的响应。但图表在接近较低频率时非常“饱和”,总体看起来不像您在应用程序中看到的那样,它们往往分布更均匀。我觉得显示视觉输出的应用程序倾向于对数据做不同的事情以使其看起来更好。

我可以对数据做些什么来使它看起来更像典型的音乐播放器应用程序?

一些有用的信息:我下采样到单通道,32kHz,并指定 35ms 的时间窗口。这意味着 FFT 获得约 1100 点。我改变这些值进行实验(即尝试 16kHz,并增加/减少间隔长度)但我得到了类似的结果。

4

3 回答 3

4

使用 1100 点的 FFT,您可能无法以很高的频率分辨率捕获低频。

想想看,30 Hz 对应 33ms 的周期,在 32kHz 时大约是 1000 个样本。因此,您在这段时间内只能捕获大约 1 个周期。

因此,您需要更长的 FFT 窗口来捕捉那些具有清晰频率分辨率的低频。

您可能需要 4000 个或更多样本的时间窗口才能开始在低频下获得明显更高的频率分辨率。这也很好,因为您仍然会每秒获得大约 8-10 次频谱更新。

一种选择也是,如果您想要非常快速地更新高频箱但在低频处具有良好的频率分辨率,则可以更快地更新高频箱(例如使用您当前使用的窗口)但计算低频垃圾箱的频率较低(并且需要较大的窗口以获得良好的频率分辨率。)

于 2011-10-20T04:27:11.433 回答
0

我认为很多这些应用程序都有可变的 FFT 箱。

你可以做的是从非常宽的均匀间隔的 FFT 箱开始,然后跟踪放置在每个 FFT 箱中的元素数量。如果某些 bin 根本没有被大量使用(通常是较高的频率),则扩大这些 bin 以使其更大(因此具有更多频率条目)并切碎低频 bin。

我从事的项目是我们只是花了很多时间为特定的输入源调整 bin,但是让软件实时调整会更好。

于 2011-10-20T00:21:49.370 回答
0

典型的可视化器将使用恒定 Q 带通滤波器,而不是单个 FFT。

您可以通过将 FFT 结果乘以频域中的一组恒定 Q 滤波器响应,然后求和来模拟一组恒定 Q 带通滤波器。对于低频,您应该使用比最低频率滤波器的显着脉冲响应更长的 FFT。对于高频,您可以使用更短的 FFT 以获得更好的响应能力。您可以通过重叠(重用)数据以任何所需的更新速率滑动任何长度的 FFT,或者您可以考虑插值。您可能还希望对每个 FFT 进行预窗口化,以减少频段之间的“频谱泄漏”。

于 2011-10-20T15:47:44.397 回答