音频下采样低通滤波器:FIR 还是 IIR?

信息处理 无限脉冲响应 下采样 有限脉冲响应 线性相位
2022-01-07 15:28:23

我正在做一个实时音频处理项目,我必须将 44.1 kHz 下采样到一个尚未确定的较低采样率,以降低计算复杂性。我正在寻找一个不错的下采样滤波器,我发现文章建议 IIR(主要是椭圆)和 FIR(主要是最小相位)。FIR 最小相位滤波器不一定适合我,因为我需要一个线性相位滤波器。所以选项要么是线性相位 FIR,它可能有相当大的延迟,要么是双滤波 IIR(MATLABfiltfilt命令),它先向前过滤,然后向后过滤。

FIR 和 IIR 作为下采样滤波器有哪些优缺点?在实时应用中哪个更实用?

3个回答

如果需要线性相位,那可能会引导您使用 FIR 实现。可以构建具有近似线性相位的 IIR 滤波器,但很容易设计线性相位 FIR。

如果您担心延迟,那么前向后向过滤filtfilt并不是一个好的选择。一般来说,它实际上是用于离线过程,因为要准确地实现该技术,您必须通过正向运行整个信号,然后反向执行相同的操作。这意味着您可以一次访问整个信号,这与低延迟不相称。

通常,对于给定的一组性能要求,FIR 滤波器需要更高的阶数。然而,FIR 滤波器带来了一些真正的优势,例如保证稳定性、对舍入误差的敏感性较低(因为量化误差不会通过滤波器反馈,尽管您可以通过增加一些复杂性来补偿这一点),并且简单实现线性相位响应。此外,高效的 FIR 滤波器实现可用于许多处理器架构,从而在一定程度上降低了额外抽头的成本。

在您的情况下减轻 FIR 滤波器额外抽头成本的另一种方法是利用高效的多速率信号处理技术。具体来说,您可以使用多相抽取方法来显着减少在抽取信号过程中执行的计算次数。这具有减少抽取滤波器中有效抽头数量(在计算复杂度方面)的效果。此外,如果您需要大量抽取,那么多级方法可以帮助您进一步减少负载。Lyons 的介绍性 DSP 书籍有一些关于这些主题的易于阅读的好材料。

给定系统的更具体参数,可以提出更明确的建议。您的过滤器设计要求是什么?你的平台有什么样的计算能力?您将抽取到什么采样率?

您所说的“低延迟”有多低?

如果您的意思是低于 1 毫秒且采样率大幅降低,则可能需要最小相位 FIR。如果您的意思是大约 1/30 秒,那么您甚至可以使用 FFT 重叠添加/保存(快速卷积)方法来实现高效的线性相位 FIR 滤波器。

关于时间复杂度的一个小问题:FIR 滤波器是可向量化的,这对现代 CPU 架构很有帮助。此外,IIR 滤波器会影响性能,因为当前输出值取决于早期的输出值,这消除了流水线的优势。