易科國際:FIR思維(2)——濾波器越長越好?
來源:數(shù)字音視工程網(wǎng) 編輯:杜鑫 2017-12-25 15:42:37 加入收藏
我們身處的時代崇尚“越大越好”。在最近的一個SynAudCon論壇帖子中,我表示這一至理名言也許并不適用于FIR濾波器長度。
這篇文章寫就時,DSP支持的濾波器長度通常為1024點(tabs),有些高達4096點。為什么我不想要或不需要長度更長的FIR濾波器?如果生廠商在DSP中引入8192點的FIR濾波器,我會舍棄競爭產(chǎn)品而選擇它嗎?
頻率越低,時間越長
首先,我們需要一份用于練習和實驗的文件。可使用揚聲器的測量數(shù)據(jù),但稍微簡單的文件更易于幫助我們發(fā)現(xiàn)重要的點。
請查看圖1作為參考。我在FIRCapture軟件中創(chuàng)建該系列提升濾波器(分離的以一個倍頻程為帶寬的對稱均衡器)并保存為WAV文件??赏ㄟ^任何9段參量均衡器輕松創(chuàng)建此響應(yīng)。
圖1:作者測試文件的轉(zhuǎn)換函數(shù)(通過FIRCapture軟件創(chuàng)建)
我選擇Q=6以最大化減少濾波器之間的重疊。這一組濾波器又構(gòu)成了一個濾波器,它與揚聲器的響應(yīng)并無二致,更別提在最高頻和最低頻處必不可少的高通和低通響應(yīng)了。如果這就是一個揚聲器的響應(yīng)(讓我們假設(shè)如此),我們將希望對凸起部分進行均衡處理,以獲得整體較為平坦的響應(yīng)。通過該文件,我們可以很好地考察FIR濾波器的頻率解析度。
頻域視圖顯示頻率響應(yīng)的振幅、相位和群延時。請注意,相位和群延時是兩種不同的方式,顯示信號通過時,濾波器如何改變其時間行為。由于相位是相對的,因此每個凸起的相位行為都相同。
在之前的文章中我演示過,一個帶通濾波器的最小相位響應(yīng)首先呈正向,然后在濾波器的中心頻率回到原點,最后為負向。這個相位偏移將使得通過濾波器的信號產(chǎn)生與頻率相關(guān)的振鈴現(xiàn)象(Ringing)。振鈴現(xiàn)象持續(xù)的時間由群延時圖顯示。
圖2是該濾波器的頻域/時域綜合圖。圖3顯示了每個分離倍頻程的中心頻率的波長。二者有何相關(guān)?由于聲速約為1英尺/毫秒(ft/ms),每個倍頻程的中心頻率波長大約等同于一周期所需時間。波長的概念以十分形象的方式顯示聲波與時間和空間有關(guān),而濾波器的響應(yīng)也是如此。
圖2:同一信號的頻域vs.時域圖。請注意在時域視圖中,提升濾波器的振鈴現(xiàn)象(非延時)。也請注意在此視圖中振鈴現(xiàn)象的解析度更佳(紅色大約等同于群延時圖示)
圖3:每個倍頻程中心頻率的波長。無論使用何種類型濾波器,時間/頻率/波長的相互關(guān)系最終決定了FIR濾波器所需的解析度
群延時(GD)與濾波器的頻率波長成正比關(guān)系,頻率越低,群延時越長。單從名稱來看,似乎指的是信號通過濾波器所造成的延時,這有點誤導(dǎo)人。濾波器的儲存屬性造成了振鈴現(xiàn)象,即信號中增加了多余周期。
群延時顯示了提升濾波器占據(jù)的時長。低頻凸起具有很長的振鈴,這不足為奇。群延時與濾波器頻率成反比(與波長成正比),相位偏移相等時,頻率越低,群延時越長。
為方便演示,我們以圖4所示的信號處理鏈路為例。我們輸入一個測試信號,看看將發(fā)生什么。圖5為2通道示波器顯示的結(jié)果。藍色軌跡為1000Hz6.5周期的小波。這是Don Keele測試信號中的一個。紅色軌跡為此信號通過一個1000Hz提升濾波器之后的結(jié)果。請注意,原信號和通過濾波處理的信號相位一致,但是經(jīng)過濾波器的信號周期增加了。這是在時域觀察的振鈴現(xiàn)象。一個削減濾波器的振鈴現(xiàn)象將占據(jù)同等時長。
圖4:Rane HALDSP上的信號處理設(shè)置,用于延時濾波器的振鈴現(xiàn)象。
圖5:一個6.5周期(1kHz)的小波。藍色曲線為原信號。紅色曲線為信號通過一個1kHz 6dB提升濾波器(Q=6)之后的響應(yīng)。請注意,信號經(jīng)過濾波器模塊本身并不造成延時,但是信號包絡(luò)(綠色輪廓)跨越更長時間。
IIR均衡
一個模擬或數(shù)字無線脈沖響應(yīng)濾波器(IIR filter)如何校正響應(yīng)?必須是產(chǎn)生與凸起相反的振幅響應(yīng)和相位偏移。由于IIR濾波器是循環(huán)的,即利用反饋將一部分輸出信號返回到輸入端進行再處理(可類比電容的充電和放電)。
因此,IIR濾波器在操作過程中沒有低頻限制(起碼與FIR濾波器相比時如此),而且不會造成大量處理延時。只要有輸入信號,就會有輸出信號,濾波器的脈沖響應(yīng)(理論上)永遠不會衰減到零。
正向群延時是窄頻段提升濾波器的標志(圖1),而負向群延時是削減濾波器的標志。圖7顯示了通過一款受歡迎的DSP的EQ模塊實現(xiàn)的一組IIR濾波器。通過對比圖1每個凸起以及圖7每個陷波的振幅以及相位,可以發(fā)現(xiàn)圖7的均衡器可以完全校正我文件的響應(yīng)。
順便提一句,窄頻段信號的群延時并不代表信號延時,而顯示了濾波器振鈴現(xiàn)象所占的時長。音頻中有些術(shù)語并非字面上的含義,比如“恒定電壓”(Constant voltage),但這是另外一個話題,這里不再贅述。
最小相位FIR EQ
下面讓我們討論最小相位FIR。它的響應(yīng)可以和參量均衡器生成的IIR濾波器一模一樣。關(guān)鍵的區(qū)別在于FIR濾波器的響應(yīng)與驅(qū)動信號完全無關(guān)。它是有限長度的脈沖響應(yīng),頻率解析度與長度相關(guān)。
由于T = 1/F,要影響的頻率越低,需要的濾波器長度越長(時間跨度,更多點位數(shù))。對低頻凸起進行校正需要在每一個頻率引入振幅和相位的共軛,這也會與群延時共軛。對于低頻凸起而言,這是非常長的時間跨度。
再看回圖1。由于該濾波器是最小相位濾波器,因此處理延時很小,與IIR濾波器的差不多。差別在于FIR濾波器的帶寬由它的長度決定(圖6),因此需要一個長度非常長的濾波器對低頻凸起進行均衡處理。這與創(chuàng)建濾波器所采用的處理算法無關(guān)。
圖6:時間和頻率解析度的相互關(guān)系。頻域視圖以脈沖事實到達的時間作為參考(T0)且時間跨度延展至T。由于此時到達的是一個完美的脈沖,這個FIR作為純粹的延時,它的帶寬由點位數(shù)量決定。
圖7:一個參量EQ模塊(IIR)可以完全校正我的示范文件。它的頻率解析度比FIR濾波器更高,而需要調(diào)用的DSP資源則少得多。
頻率解析度
從圖6中可看出,一個1024點、采樣率為48 kHz的最小相位FIR濾波器,長度為21毫秒。由于T=1/F,此濾波器的頻率解析度為47.6 Hz。
這意味這什么?這意味著在頻域視圖下,每個數(shù)據(jù)點之間的間隔。
它同時也表示濾波器能影響的最低頻率。而事實上的頻率解析度還要低一些(能影響的最低頻率還要稍高一些),因為往往需要幾個周期的波形才能確定某一頻率。
要是增加更多點位呢?濾波器長度加倍將使得頻率解析度加倍,使得數(shù)據(jù)點之間的頻率間隔變成24 Hz。
它還使得低頻限制下潛一半,去到24Hz。這一趨勢將繼續(xù),點位數(shù)每加倍,將使得濾波器的響應(yīng)下潛一個倍頻程。因此,長度更長的FIR濾波器將使得:
1) 濾波器擴展至更低頻率。
2)濾波器的頻率響應(yīng)呈現(xiàn)更多細節(jié),因為數(shù)據(jù)點更加密集。
在最小相位FIR濾波器這種情況下,更多點位數(shù)大有裨益,因為這意味著濾波器可以擴展至更低頻率。由于這是最小相位濾波器,因此相比IIR濾波器并沒有增加額外的處理延時。要使我的示范文件獲得平滑的響應(yīng),大約需要4096點,這遠超過現(xiàn)有DSP能支持的點位數(shù),這使得需要更多點位數(shù)的爭論愈演愈烈。
先別著急下結(jié)論
讓我們再認真考慮。最小相位FIR的行為與最小相位IIR濾波器一樣,只不過需要足夠多的點位數(shù)才能影響欲達到的最低頻率。低頻均衡需要更長的濾波器長度。
但是為什么要在DSP中通過占用大量系統(tǒng)資源的FIR濾波器模塊來創(chuàng)建一個最小相位濾波器呢?一個精心調(diào)節(jié)的參量均衡模塊(IIR)將占用少得多的系統(tǒng)資源,但產(chǎn)生同樣平滑的響應(yīng),且頻率解析度更佳(圖7)。使用盡可能少的系統(tǒng)資源得到所需結(jié)果,在音頻行業(yè)是最佳實踐,而使用FIR濾波器進行最小相位均衡并不高效。
接下來讓我們思考校正的響應(yīng)不是最小相位的這種情況。我在參考文件中,將一個二階全通濾波器(500 Hz)添加至響應(yīng)中(圖8)。這將在濾波器的整個帶寬中造成相位偏移,但是對振幅響應(yīng)的影響最小。在事實應(yīng)用中,這種全通行為可能源于使用了分頻網(wǎng)絡(luò)。最小相位FIR濾波器不能補償這樣的額外的相位偏移。
圖8:在參考文件中增加了一個全通濾波器。最終形成了一個非最小相位濾波器。需要一個線性FIR濾波器校正此響應(yīng)。
線性相位FIR
一個線性相位FIR具有對稱的脈沖響應(yīng),主信號到達時間位于脈沖響應(yīng)(IR)的中間(圖9)。我們將到達峰值設(shè)為相對時間零,在此之前的時間跨度提供了“負時間”到達,用于共軛主到達峰值之后的能量到達。
圖9:線性相位濾波器最多儲存一半點位,用于相位均衡/回聲消除,并將濾波器的帶寬減少一個倍頻程。上面的頻域視圖以脈沖事實到達的時間(T0)為參考,時間跨度延展至T。以上所示為Dirac脈沖,行為類似純延時(pure delay)。請注意,將T0移動至T/2降低了頻率解析度(2/T)。
這些“預(yù)延時”與事實時間之間存在因果關(guān)系,但是與主要的信息到達時間沒有因果關(guān)系。這允許濾波器通過相反的“負時間”響應(yīng)對反射能量進行補償。
所以,如果點位長度為1024個點,線性相位FIR濾波器將把主到達時間置于T/2處,讓一半濾波器長度提供預(yù)到達時間,以共軛揚聲器或房間產(chǎn)生的后到達能量。它還允許引入所需的負向群延時,以補償分頻器的全通響應(yīng)。
因為將一半的濾波器長度用于“負時間”校正,濾波器的頻率解析度將減半。例如,1024點的最小相位FIR濾波器頻率解析度為47.6 Hz。而同樣長度的線性相位FIR濾波器頻率解析度為95.2 Hz,因為預(yù)留了一半長度用于相位均衡。
點位數(shù)越多越好?
對于最小相位FIR濾波器而言,似乎如此。問題在于非最小相位濾波器需要預(yù)留一半長度用于相位均衡。這會表現(xiàn)為處理延時(常錯誤地被稱為延遲)。與最小相位FIR濾波器不同,隨著線性相位FIR濾波器的長度增加以提高其頻率解析度,它的延時也會增長。這不是由DSP的速度造成,而源于TF = 1。
現(xiàn)在再調(diào)出我的參考文件,只不過這次是一系列的削減濾波器,削減的頻率與原有提升濾波器(圖10)一致。從之前的討論中得知,群延時視圖(藍線)顯示濾波器振鈴現(xiàn)象的時間長度。請注意,它現(xiàn)在呈負向,但這僅意味著這個濾波器產(chǎn)生的相位偏移在整個帶寬不斷擴大。并不表示出現(xiàn)了“時間提前”或者濾波器的響應(yīng)是非因果關(guān)系的。
圖10:均衡參考文件的一系列削減濾波器??捎^察到,較低頻率的幾個倍頻程其群延時(右軸)無可避免非常長。
無法回避的是,頻率越低,濾波器發(fā)揮影響需要的時間越長,在最低倍頻程的中心頻率(31.5 Hz)這個時間將變得非常長(~40 ms)。對于現(xiàn)場演出和許多固定安裝應(yīng)用來說,這么長時間的處理延時是不可接受的。一個1024點的FIR濾波器(48 kHz采樣率)時長為21毫秒,意味著處理延時大約為10.5毫秒。
將采樣率提升至96 kHz并不會降低處理延時,因為必須處理的采樣數(shù)量也加倍了。無法改變的事實是,21毫秒的長度最低僅可以影響48Hz,而事實上的頻率解析度是48Hz的3倍,或者說是150 Hz。
問題變得更糟糕
線性相位FIR濾波器還有另一個缺點。由于“相對時間零”位于濾波器時長的中間,其頻率解析度是最小相位FIR濾波器的一半。
因此,如果一個1024點的最小相位FIR濾波器最低可以影響150Hz,那么一個1024點的線性相位FIR濾波器最低只可以影響300Hz。
影響的頻率要下潛至150Hz將需要一個2048點的濾波器,意味著處理延時也要從10.7毫秒翻倍到21毫秒。
而針對我的示范文件,將需要一個8196點的FIR濾波器才能使整個通帶的響應(yīng)變得平滑。所需的處理延時約為85毫秒。
表面來看,F(xiàn)IR濾波器的長度越長,好處似乎是可以提高頻率解析度,從而:
1)影響更低頻率。
2)在整個帶寬包含更多細節(jié)。
我已經(jīng)向大家展示,至少對于線性相位FIR濾波器而言,要影響更低頻率(更多點位數(shù))將提高處理延時。這不是因為處理能力不足而造成,而源于時間和頻率的相關(guān)性。低頻持續(xù)較長時間,而且占據(jù)大量空間。數(shù)字處理無法改變此現(xiàn)狀。
部分好處
在可聽頻譜內(nèi)一共有10個倍頻程,所以每個倍頻程占據(jù)整體的十分之一(對數(shù)標尺)。濾波器長度加倍,將使得處理延時加倍,而這僅僅使得你均衡處理的頻譜多了十分之一。
就好比讓功放的功率加倍只為了得到3dB提升一樣,有時到了一個臨界點,得到的回報很少,根本就不值得。在功放的例子中代價是金錢,而對線性相位FIR濾波器而言,代價是延時??梢哉f,數(shù)字處理的貨幣就是時間。你可以得到很好的效果,前提是可以等待足夠長時間。
在大多數(shù)房間中,最低的兩個倍頻程(次低頻)位于施洛德頻率曲線(Schroder Frequency)下方,這時房間模式(room modes)對每個座位的頻率響應(yīng)有深刻影響。即便我們通過線性相位FIR濾波器,將房間中某一點的響應(yīng)處理得非常“完美”,在其它座位響應(yīng)也是不一樣的,這樣做的意義何在?
那需要更高的濾波器精度嗎?一個1024點的濾波器,數(shù)據(jù)點之間的頻率間隔約為48Hz。如果這還不夠校正你的頻率響應(yīng),很可能你在嘗試校正一些根本不應(yīng)該訴諸均衡處理的東西,比如由于房間反射造成的梳狀濾波。頻率響應(yīng)中的“細節(jié)”越多,則時間響應(yīng)越多與“位置相關(guān)”,因為這些細節(jié)由從不同表面而來的反射造成。
移動測試話筒,則響應(yīng)發(fā)生很大改變。一個精度很高的FIR濾波器只適合“校正”空間中的一個點。這可能適用于在特定的話筒位置對會議系統(tǒng)進行回聲消除,但這無益于整個觀眾區(qū)。更長的FIR濾波器對現(xiàn)場應(yīng)用并沒有太大意義。
更高采樣率是否有幫助?
純屬坊間傳言。很遺憾并非如此。再回到圖6,濾波器點位的時間間隔dt=1/SR(采樣率),乘以點位數(shù)(N)可以得到濾波器的時間長度(T)。頻率解析度(F)為1/T。
這是簡單的關(guān)系,顯示了如果采樣率加倍,濾波器的頻率解析度將降低一半。我們把問題弄得更糟了!如果采樣率加倍,那么需要處理的采樣數(shù)量要乘以2,這樣必須要使得濾波器長度加倍,才能保持同樣的頻率解析度。
讓我們考察相反的情況。采樣率減半將提高濾波器的頻率解析度。但是要犧牲高頻響應(yīng),只能擴展至SR/2。奈奎斯特采樣定理(Nyquist-Shannon)是不能否定的。
這一切都不能改變線性相位FIR濾波器所需的處理延時,即濾波器時長的一半。更高(更低)的采樣率不能改變信號的時間、頻率或波長。
結(jié)論
毫無疑問,隨著技術(shù)的發(fā)展我們將來會擁有更長的數(shù)字濾波器。芯片不斷完善,使用芯片的產(chǎn)品也如此。我們可能還記得16 bit/44.1 kHz的“CD級”音頻曾經(jīng)都是幾乎不可能實現(xiàn)的。但是如今很多人都認為它解析度很低。FIR濾波器也將沿著這樣的軌跡發(fā)展。
但是實現(xiàn)更長的濾波器還會遇到一些障礙,而這與技術(shù)無關(guān)。我在上面的文章中已顯示,最主要的障礙是處理延時,這由濾波器必須影響的時間長度有關(guān)(見圖1)。
在現(xiàn)場音響系統(tǒng)中,我們只能容忍一點延時。這個標準不是很精確,但是大部分人會同意超過20毫秒的濾波處理是比較長的時間。這一不可避免的處理延時會增加信號鏈中其它數(shù)字設(shè)備的延遲,一般會額外增加10毫秒。處于時間考慮,我們不得不放棄對低頻進行線性相位均衡處理,至少對現(xiàn)場應(yīng)用如此。
對高頻應(yīng)用線性相位FIR濾波器,對低頻應(yīng)用最小相位FIR濾波器似乎是一種解決方法。這被稱為“混合相位”濾波器,我認為,這將是未來的發(fā)展趨勢。有些人開始認為IIR濾波器無用武之地了,但是不可否認,它們有最寬的帶寬、最低的處理延時而且使用的系統(tǒng)資源比其它任何數(shù)字濾波器都要少。請不要拿走我的參量均衡器模塊!
點位數(shù)量不能無限度多,意味著我們必須思考校正的重點是什么及其背后的理由。就好比罐子里只剩下一勺花生醬時,我們要好好利用。我的均衡處理如何影響揚聲器的整個覆蓋區(qū)域,而不僅限于測試話筒所擺放的“黃金位置”?要是考慮多個座位的情況,那線性相位FIR濾波器的魔法光環(huán)會迅速褪去。
好好運用一個1024點的FIR濾波器,比稀里糊涂使用一個長度更長的濾波器要好。人類認知為模數(shù)轉(zhuǎn)換所需的采樣率和位深設(shè)置了合理限制,時間、頻率、波長和延遲也限制了更長FIR濾波器所能帶來的好處。在音頻行業(yè),把東西弄得更大總是值得商榷,數(shù)字濾波器也不例外。這也并非壞事,可以保持平衡,并且促使人們思考是追求真正產(chǎn)生好聲音,還是規(guī)格參數(shù)表的數(shù)據(jù)更好看。
這又詮釋了“少即是多”。
評論comment