Audio 通过限制频率范围提高FFT输出的频率分辨率?

Audio 通过限制频率范围提高FFT输出的频率分辨率?,audio,signal-processing,fft,frequency-analysis,Audio,Signal Processing,Fft,Frequency Analysis,我是FFTs和信号处理的新手,所以希望这个问题有意义和/或不愚蠢 我想对现场音频信号进行频谱分析。我的目标是在响应能力和频率分辨率之间找到一个很好的折衷方案,这样我就可以近实时地猜测传入音频的音高 从我收集到的关于傅里叶变换背后的数学知识来看,样本大小和频率分辨率之间有着内在的平衡。样品越大,分辨率越高。由于我试图最小化样本大小(以达到近乎实时的要求),这意味着我的分辨率会受到影响(输出缓冲区中的每个插槽对应于较宽的频率范围,这是不可取的) 然而,对于我预期的应用,我并不关心大部分频谱。我只需要

我是FFTs和信号处理的新手,所以希望这个问题有意义和/或不愚蠢

我想对现场音频信号进行频谱分析。我的目标是在响应能力和频率分辨率之间找到一个很好的折衷方案,这样我就可以近实时地猜测传入音频的音高

从我收集到的关于傅里叶变换背后的数学知识来看,样本大小和频率分辨率之间有着内在的平衡。样品越大,分辨率越高。由于我试图最小化样本大小(以达到近乎实时的要求),这意味着我的分辨率会受到影响(输出缓冲区中的每个插槽对应于较宽的频率范围,这是不可取的)

然而,对于我预期的应用,我并不关心大部分频谱。我只需要一个狭窄的频率范围的频谱信息,比如说100hz-1600hz。有没有办法修改FFT实现,以便在保持输入缓冲区大小不变(且较小)的同时提高频域输出的分辨率?换句话说,我可以用输出总带宽换取输出分辨率吗?如果是,如何做到这一点

虽然我充其量只能勉强掌握数学知识,但用零填充输入缓冲区似乎很有趣,不是吗


提前感谢您提供的任何帮助。

正如马克所说,加零将引入谐波(不需要的频率)

另外,当你说“样本越大”,你是指更多的样本,还是更高的频率采样率?更高的频率采样率将导致单位时间内有更多的样本,但这似乎意味着在固定的采样率下有更多的样本(即分析更大的时间段)

您提到的较高频率为1600Hz,因此您需要至少3200Hz的采样率,即双采样率

至于一次处理的时间段:您需要权衡响应性(10秒的缓冲区需要10秒以上的处理时间才能得到结果)和降低噪音。较小的缓冲器更容易拾取杂散噪声信号


另一方面,在频域中思考一开始可能会很有挑战性。我发现最好的不是我在大学上的各种应用数学课,而是结晶学课。晶体衍射图案仅仅是二维傅里叶变换。在我的第一份工作中,当处理地震数据的FFT时,从视觉上了解衍射图案与晶体结构的关系被证明是非常有用的。

我认为没有比FFT更好的“技巧”。“加零”也可能意味着对信号进行过采样。为了消除谐波,必须对信号进行滤波(这肯定会引入额外的噪声)。然后你会做一个更长的FFT,但在那之后,整体分辨率仍然是一样的

此外,您的窗口功能将扩大结果中的频率峰值

OTOH,如果频率落在两个FFT仓之间,则可以通过查看相邻仓的比率来获得更好的分辨率:

但这不适用于更复杂的信号(具有许多同时频率)

  • 如果你想知道是否存在某些频率,我会研究滤波器和相关性

  • 如果你想确定一个特定的频率,你可以先过滤掉它,然后检测过零。设计滤波器时有许多参数,因此滤波器长度只是导致特定滤波器(阶跃)响应时间的一个参数。您可以在多个频率上执行此操作,一个接一个

添加:一些直觉:

  • 由于FFT足以进行重建,因此基本上会有无穷多个高分辨率光谱导致相同的采样向量,并且没有一个更正确。与快速傅里叶变换的等间距箱相比,箱插值本质上计算另一种(“更好的拟合”)表示

  • 在离散量化情况下,例如8位,考虑两个非常接近的频率。如果差异足够小,它们将产生相同的样本,比如256个样本。但是看看更多的样本(可能是1024个),你会注意到差异变得足够大,可以看到


  • PS:过采样的过滤也可以在FFT之后通过忽略较高的存储单元来完成。

    您无法从任何地方获得额外的信息,但您可以通过重叠连续FFT来减少延迟。对于实时功率谱估计,通常将连续输入窗口重叠50%


    在样本之间插入零是另一个有用的技巧-它在输出箱中提供了更明显的分辨率,但实际上您所做的只是插值,即没有获得额外的信息(当然)。但是,除了上面的重叠建议之外,您可能会发现这项技术很有用。

    您可以在1600 Hz(或更高的频率,比如2k)下对数据进行低通滤波,然后重新采样到较低的采样器(滤波频率的两倍,例如4k),以减少采样数。然后使用零填充来提高频率分辨率

    你所说的目标与你的问题不符。音频的音调与解析的频率峰值不同。请阅读大量关于人声和音乐音高估计的文献(适用于许多其他类型的具有感知音高的声音)。自适应/增量/滑动时域技术可能比基于频域块的技术提供更低的延迟

    音频采样向量的零填充和频域数据的插值几乎相同。如果几乎没有噪音或附近有干扰,您可能会发现更准确(更高的“分辨率”)的频率峰值位置