我正在对音频数据使用FFT来输出分析器,就像你在Winamp或Windows Media Player中看到的那样。然而,输出结果看起来并不那么好。我使用对数标度进行绘图,并将FFT的线性结果平均到相应的对数框中。作为一个例子,我使用了像这样的bin:
16k,8k,4k,2k,1k,500,250,125,62,31,15 hz
然后我绘制幅度(dB)与频率hz的关系图。曲线图肯定会对音乐产生“反应”,我可以看到鼓样本或高音的反应。但这张图非常“饱和”,接近于较低的频率,总体上看起来并不像你在应用程序中看到的那样,这些应用程序往往更均匀地分布。我觉得显示视觉输出的应用程序倾向于对数据做不同的处理,以使其看起来更好。
我可以对数据做些什么,让它看起来更像典型的音乐播放器应用程序?
一些有用的信息:我下采样到单通道,32 and,并指定时间窗口为35ms。这意味着FFT得到了大约1100分。我改变这些值进行实验(例如,尝试16 get,增加/减少间隔长度),但我得到了类似的结果。
发布于 2011-10-20 12:27:11
使用1100点的FFT,你可能无法以很高的频率分辨率捕捉到低频。
想想看,30 Hz相当于33ms的周期,在32 33ms下,大约是1000个样本。所以在这段时间内你只能捕获大约1个周期。
因此,你需要一个更长的FFT窗口来捕捉那些具有清晰频率分辨率的低频。
您可能需要4000个或更多样本的时间窗口,才能开始在低频下获得明显更高的频率分辨率。这也是很好的,因为你仍然会得到大约8-10频谱更新每秒。
还有一种选择,如果你想要高频箱的快速更新,但在低频下有很好的频率分辨率,那就是更快地更新高频箱(例如使用你当前使用的窗口),但不太频繁地计算低频箱(以及使用较大的窗口来获得好的频率)。解决方案。)
发布于 2011-10-20 08:21:49
我认为很多这样的应用程序都有可变的FFT存储区。
你可以做的是从非常宽的均匀间隔的FFT bin开始,然后跟踪每个FFT bin中放置的元素的数量。如果有些柱子根本没有被大量使用(通常是较高的频率),那么将这些柱子加宽,使它们更大(因此具有更多的频率条目),并切碎低频率柱子。
我曾经在项目中工作过,我们只是花了很多时间来调整特定输入源的存储箱,但让软件实时调整要好得多。
发布于 2011-10-20 23:47:44
典型的可视化工具将使用恒定Q带通滤波器,而不是单个FFT。
您可以通过将FFT结果乘以频域中的一组恒定Q滤波器响应,然后求和来模拟一组恒定Q带通滤波器。对于低频,您应该使用比最低频率滤波器的有效脉冲响应更长的FFT。对于高频,您可以使用较短的FFT以获得更好的响应性。您可以通过重叠(重用)数据以任何所需的更新速率滑动任意长度的FFT,也可以考虑插值。您可能还希望对每个FFT进行预窗处理,以减少频带之间的“频谱泄漏”。
https://stackoverflow.com/questions/7829713
复制相似问题