FIR思维(2)——滤波器越长越好?

时间:2017/12/28 来源:专业视听网

关键词: 易科国际、滤波器

作者:Pat Brown             易科国际供

我们身处的时代崇尚“越大越好”。在最近的一个SynAudCon论坛帖子中,我表示这一至理名言也许并不适用于FIR滤波器长度。

这篇文章写就时,DSP支持的滤波器长度通常为1024点(tabs),有些高达4096点。为什么我不想要或不需要长度更长的FIR滤波器?如果生厂商在DSP中引入8192点的FIR滤波器,我会舍弃竞争产品而选择它吗?

频率越低,时间越长

首先,我们需要一份用于练习和实验的文件。可使用扬声器的测量数据,但稍微简单的文件更易于帮助我们发现重要的点。

请查看图1作为参考。我在FIRCapture软件中创建该系列提升滤波器(分离的以一个倍频程为带宽的对称均衡器)并保存为WAV文件。可通过任何9段参量均衡器轻松创建此响应。

图1:作者测试文件的转换函数(通过FIRCapture软件创建)

我选择Q=6以最大化减少滤波器之间的重叠。这一组滤波器又构成了一个滤波器,它与扬声器的响应并无二致,更别提在最高频和最低频处必不可少的高通和低通响应了。如果这就是一个扬声器的响应(让我们假设如此),我们将希望对凸起部分进行均衡处理,以获得整体较为平坦的响应。通过该文件,我们可以很好地考察FIR滤波器的频率解析度。

频域视图显示频率响应的振幅、相位和群延时。请注意,相位和群延时是两种不同的方式,显示信号通过时,滤波器如何改变其时间行为。由于相位是相对的,因此每个凸起的相位行为都相同。

在之前的文章中我演示过,一个带通滤波器的最小相位响应首先呈正向,然后在滤波器的中心频率回到原点,最后为负向。这个相位偏移将使得通过滤波器的信号产生与频率相关的振铃现象(Ringing)。振铃现象持续的时间由群延时图显示。

图2是该滤波器的频域/时域综合图。图3显示了每个分离倍频程的中心频率的波长。二者有何相关?由于声速约为1英尺/毫秒(ft/ms),每个倍频程的中心频率波长大约等同于一周期所需时间。波长的概念以十分形象的方式显示声波与时间和空间有关,而滤波器的响应也是如此。

图2:同一信号的频域vs.时域图。请注意在时域视图中,提升滤波器的振铃现象(非延时)。也请注意在此视图中振铃现象的解析度更佳(红色大约等同于群延时图示)

图3:每个倍频程中心频率的波长。无论使用何种类型滤波器,时间/频率/波长的相互关系最终决定了FIR滤波器所需的解析度

群延时(GD)与滤波器的频率波长成正比关系,频率越低,群延时越长。单从名称来看,似乎指的是信号通过滤波器所造成的延时,这有点误导人。滤波器的储存属性造成了振铃现象,即信号中增加了多余周期。

群延时显示了提升滤波器占据的时长。低频凸起具有很长的振铃,这不足为奇。群延时与滤波器频率成反比(与波长成正比),相位偏移相等时,频率越低,群延时越长。

为方便演示,我们以图4所示的信号处理链路为例。我们输入一个测试信号,看看将发生什么。图5为2通道示波器显示的结果。蓝色轨迹为1000Hz 6.5周期的小波。这是Don Keele测试信号中的一个。红色轨迹为此信号通过一个1000 Hz提升滤波器之后的结果。请注意,原信号和通过滤波处理的信号相位一致,但是经过滤波器的信号周期增加了。这是在时域观察的振铃现象。一个削减滤波器的振铃现象将占据同等时长。

图4:Rane HAL DSP上的信号处理设置,用于延时滤波器的振铃现象。

图5:一个6.5周期(1kHz)的小波。蓝色曲线为原信号。红色曲线为信号通过一个1 kHz 6dB提升滤波器(Q=6)之后的响应。请注意,信号经过滤波器模块本身并不造成延时,但是信号包络(绿色轮廓)跨越更长时间。


IIR均衡

一个模拟或数字无线脉冲响应滤波器(IIR filter)如何校正响应?必须是产生与凸起相反的振幅响应和相位偏移。由于IIR滤波器是循环的,即利用反馈将一部分输出信号返回到输入端进行再处理(可类比电容的充电和放电)。

因此,IIR滤波器在操作过程中没有低频限制(起码与FIR滤波器相比时如此),而且不会造成大量处理延时。只要有输入信号,就会有输出信号,滤波器的脉冲响应(理论上)永远不会衰减到零。

正向群延时是窄频段提升滤波器的标志(图1),而负向群延时是削减滤波器的标志。图7显示了通过一款受欢迎的DSP的EQ模块实现的一组IIR滤波器。通过对比图1每个凸起以及图7每个陷波的振幅以及相位,可以发现图7的均衡器可以完全校正我文件的响应。

顺便提一句,窄频段信号的群延时并不代表信号延时,而显示了滤波器振铃现象所占的时长。音频中有些术语并非字面上的含义,比如“恒定电压”(Constant voltage),但这是另外一个话题,这里不再赘述。

最小相位FIR EQ

下面让我们讨论最小相位FIR。它的响应可以和参量均衡器生成的IIR滤波器一模一样。关键的区别在于FIR滤波器的响应与驱动信号完全无关。它是有限长度的脉冲响应,频率解析度与长度相关。

由于T = 1/F,要影响的频率越低,需要的滤波器长度越长(时间跨度,更多点位数)。对低频凸起进行校正需要在每一个频率引入振幅和相位的共轭,这也会与群延时共轭。对于低频凸起而言,这是非常长的时间跨度。

再看回图1。由于该滤波器是最小相位滤波器,因此处理延时很小,与IIR滤波器的差不多。差别在于FIR滤波器的带宽由它的长度决定(图6),因此需要一个长度非常长的滤波器对低频凸起进行均衡处理。这与创建滤波器所采用的处理算法无关。

图6:时间和频率解析度的相互关系。频域视图以脉冲事实到达的时间作为参考(T0)且时间跨度延展至T。由于此时到达的是一个完美的脉冲,这个FIR作为纯粹的延时,它的带宽由点位数量决定。

图7:一个参量EQ模块(IIR)可以完全校正我的示范文件。它的频率解析度比FIR滤波器更高,而需要调用的DSP资源则少得多。


频率解析度

从图6中可看出,一个1024点、采样率为48 kHz的最小相位FIR滤波器,长度为21毫秒。由于T=1/F,此滤波器的频率解析度为47.6 Hz。

这意味这什么?这意味着在频域视图下,每个数据点之间的间隔。

它同时也表示滤波器能影响的最低频率。而事实上的频率解析度还要低一些(能影响的最低频率还要稍高一些),因为往往需要几个周期的波形才能确定某一频率。

要是增加更多点位呢?滤波器长度加倍将使得频率解析度加倍,使得数据点之间的频率间隔变成24 Hz。

它还使得低频限制下潜一半,去到24Hz。这一趋势将继续,点位数每加倍,将使得滤波器的响应下潜一个倍频程。因此,长度更长的FIR滤波器将使得:

1) 滤波器扩展至更低频率。
2)滤波器的频率响应呈现更多细节,因为数据点更加密集。

在最小相位FIR滤波器这种情况下,更多点位数大有裨益,因为这意味着滤波器可以扩展至更低频率。由于这是最小相位滤波器,因此相比IIR滤波器并没有增加额外的处理延时。要使我的示范文件获得平滑的响应,大约需要4096点,这远超过现有DSP能支持的点位数,这使得需要更多点位数的争论愈演愈烈。

先别着急下结论

让我们再认真考虑。最小相位FIR的行为与最小相位IIR滤波器一样,只不过需要足够多的点位数才能影响欲达到的最低频率。低频均衡需要更长的滤波器长度。

但是为什么要在DSP中通过占用大量系统资源的FIR滤波器模块来创建一个最小相位滤波器呢?一个精心调节的参量均衡模块(IIR)将占用少得多的系统资源,但产生同样平滑的响应,且频率解析度更佳(图7)。使用尽可能少的系统资源得到所需结果,在音频行业是最佳实践,而使用FIR滤波器进行最小相位均衡并不高效,

接下来让我们思考校正的响应不是最小相位的这种情况。我在参考文件中,将一个二阶全通滤波器(500 Hz)添加至响应中(图8)。这将在滤波器的整个带宽中造成相位偏移,但是对振幅响应的影响最小。在事实应用中,这种全通行为可能源于使用了分频网络。最小相位FIR滤波器不能补偿这样的额外的相位偏移。

图8:在参考文件中增加了一个全通滤波器。最终形成了一个非最小相位滤波器。需要一个线性FIR滤波器校正此响应。


线性相位FIR

一个线性相位FIR具有对称的脉冲响应,主信号到达时间位于脉冲响应(IR)的中间(图9)。我们将到达峰值设为相对时间零,在此之前的时间跨度提供了“负时间”到达,用于共轭主到达峰值之后的能量到达。

图9:线性相位滤波器最多储存一半点位,用于相位均衡/回声消除,并将滤波器的带宽减少一个倍频程。上面的频域视图以脉冲事实到达的时间(T0)为参考,时间跨度延展至T。以上所示为Dirac脉冲,行为类似纯延时(pure delay)。请注意,将T0移动至T/2降低了频率解析度(2/T)。

这些“预延时”与事实时间之间存在因果关系,但是与主要的信息到达时间没有因果关系。这允许滤波器通过相反的“负时间”响应对反射能量进行补偿。

所以,如果点位长度为1024个点,线性相位FIR滤波器将把主到达时间置于T/2处,让一半滤波器长度提供预到达时间,以共轭扬声器或房间产生的后到达能量。它还允许引入所需的负向群延时,以补偿分频器的全通响应。

因为将一半的滤波器长度用于“负时间”校正,滤波器的频率解析度将减半。例如,1024点的最小相位FIR滤波器频率解析度为47.6 Hz。而同样长度的线性相位FIR滤波器频率解析度为95.2 Hz,因为预留了一半长度用于相位均衡。

点位数越多越好?

对于最小相位FIR滤波器而言,似乎如此。问题在于非最小相位滤波器需要预留一半长度用于相位均衡。这会表现为处理延时(常错误地被称为延迟)。与最小相位FIR滤波器不同,随着线性相位FIR滤波器的长度增加以提高其频率解析度,它的延时也会增长。这不是由DSP的速度造成,而源于TF = 1。

现在再调出我的参考文件,只不过这次是一系列的削减滤波器,削减的频率与原有提升滤波器(图10)一致。从之前的讨论中得知,群延时视图(蓝线)显示滤波器振铃现象的时间长度。请注意,它现在呈负向,但这仅意味着这个滤波器产生的相位偏移在整个带宽不断扩大。并不表示出现了“时间提前”或者滤波器的响应是非因果关系的。

图10:均衡参考文件的一系列削减滤波器。可观察到,较低频率的几个倍频程其群延时(右轴)无可避免非常长。

无法回避的是,频率越低,滤波器发挥影响需要的时间越长,在最低倍频程的中心频率(31.5 Hz)这个时间将变得非常长(~40 ms)。对于现场演出和许多固定安装应用来说,这么长时间的处理延时是不可接受的。一个1024点的FIR滤波器(48 kHz采样率)时长为21毫秒,意味着处理延时大约为10.5毫秒。

将采样率提升至96 kHz并不会降低处理延时,因为必须处理的采样数量也加倍了。无法改变的事实是,21毫秒的长度最低仅可以影响48Hz,而事实上的频率解析度是48Hz的3倍,或者说是150 Hz。

问题变得更糟糕

线性相位FIR滤波器还有另一个缺点。由于“相对时间零”位于滤波器时长的中间,其频率解析度是最小相位FIR滤波器的一半。

因此,如果一个1024点的最小相位FIR滤波器最低可以影响150Hz,那么一个1024点的线性相位FIR滤波器最低只可以影响300Hz。

影响的频率要下潜至150Hz将需要一个2048点的滤波器,意味着处理延时也要从10.7毫秒翻倍到21毫秒。

而针对我的示范文件,将需要一个8196点的FIR滤波器才能使整个通带的响应变得平滑。所需的处理延时约为85毫秒。

表面来看,FIR滤波器的长度越长,好处似乎是可以提高频率解析度,从而:

1)影响更低频率。
2)在整个带宽包含更多细节。

我已经向大家展示,至少对于线性相位FIR滤波器而言,要影响更低频率(更多点位数)将提高处理延时。这不是因为处理能力不足而造成,而源于时间和频率的相关性。低频持续较长时间,而且占据大量空间。数字处理无法改变此现状。

部分好处

在可听频谱内一共有10个倍频程,所以每个倍频程占据整体的十分之一(对数标尺)。滤波器长度加倍,将使得处理延时加倍,而这仅仅使得你均衡处理的频谱多了十分之一。

就好比让功放的功率加倍只为了得到3dB提升一样,有时到了一个临界点,得到的回报很少,根本就不值得。在功放的例子中代价是金钱,而对线性相位FIR滤波器而言,代价是延时。可以说,数字处理的货币就是时间。你可以得到很好的效果,前提是可以等待足够长时间。

在大多数房间中,最低的两个倍频程(次低频)位于施洛德频率曲线(Schroder Frequency)下方,这时房间模式(room modes)对每个座位的频率响应有深刻影响。即便我们通过线性相位FIR滤波器,将房间中某一点的响应处理得非常“完美”,在其它座位响应也是不一样的,这样做的意义何在?

那需要更高的滤波器精度吗?一个1024点的滤波器,数据点之间的频率间隔约为48Hz。如果这还不够校正你的频率响应,很可能你在尝试校正一些根本不应该诉诸均衡处理的东西,比如由于房间反射造成的梳状滤波。频率响应中的“细节”越多,则时间响应越多与“位置相关”,因为这些细节由从不同表面而来的反射造成。

移动测试话筒,则响应发生很大改变。一个精度很高的FIR滤波器只适合“校正”空间中的一个点。这可能适用于在特定的话筒位置对会议系统进行回声消除,但这无益于整个观众区。更长的FIR滤波器对现场应用并没有太大意义。

更高采样率是否有帮助?

纯属坊间传言。很遗憾并非如此。再回到图6,滤波器点位的时间间隔dt=1/SR(采样率),乘以点位数(N)可以得到滤波器的时间长度(T)。频率解析度(F)为1/T。

这是简单的关系,显示了如果采样率加倍,滤波器的频率解析度将降低一半。我们把问题弄得更糟了!如果采样率加倍,那么需要处理的采样数量要乘以2,这样必须要使得滤波器长度加倍,才能保持同样的频率解析度。

让我们考察相反的情况。采样率减半将提高滤波器的频率解析度。但是要牺牲高频响应,只能扩展至SR/2。奈奎斯特采样定理(Nyquist-Shannon)是不能否定的。

这一切都不能改变线性相位FIR滤波器所需的处理延时,即滤波器时长的一半。更高(更低)的采样率不能改变信号的时间、频率或波长。

结论

毫无疑问,随着技术的发展我们将来会拥有更长的数字滤波器。芯片不断完善,使用芯片的产品也如此。我们可能还记得16 bit/44.1 kHz的“CD级”音频曾经都是几乎不可能实现的。但是如今很多人都认为它解析度很低。FIR滤波器也将沿着这样的轨迹发展。

但是实现更长的滤波器还会遇到一些障碍,而这与技术无关。我在上面的文章中已显示,最主要的障碍是处理延时,这由滤波器必须影响的时间长度有关(见图1)。

在现场音响系统中,我们只能容忍一点延时。这个标准不是很精确,但是大部分人会同意超过20毫秒的滤波处理是比较长的时间。这一不可避免的处理延时会增加信号链中其它数字设备的延迟,一般会额外增加10毫秒。处于时间考虑,我们不得不放弃对低频进行线性相位均衡处理,至少对现场应用如此。

对高频应用线性相位FIR滤波器,对低频应用最小相位FIR滤波器似乎是一种解决方法。这被称为“混合相位”滤波器,我认为,这将是未来的发展趋势。有些人开始认为IIR滤波器无用武之地了,但是不可否认,它们有最宽的带宽、最低的处理延时而且使用的系统资源比其它任何数字滤波器都要少。请不要拿走我的参量均衡器模块!

点位数量不能无限度多,意味着我们必须思考校正的重点是什么及其背后的理由。就好比罐子里只剩下一勺花生酱时,我们要好好利用。我的均衡处理如何影响扬声器的整个覆盖区域,而不仅限于测试话筒所摆放的“黄金位置”?要是考虑多个座位的情况,那线性相位FIR滤波器的魔法光环会迅速褪去。

好好运用一个1024点的FIR滤波器,比稀里糊涂使用一个长度更长的滤波器要好。人类认知为模数转换所需的采样率和位深设置了合理限制,时间、频率、波长和延迟也限制了更长FIR滤波器所能带来的好处。在音频行业,把东西弄得更大总是值得商榷,数字滤波器也不例外。这也并非坏事,可以保持平衡,并且促使人们思考是追求真正产生好声音,还是规格参数表的数据更好看。

这又诠释了“少即是多”。

热门技术探讨更多>>

同类产品或技术文章列表更多>>