編者語:本文是關於FIR濾波器基礎概念的硬核技術文章,篇幅較長,建議您沐浴更衣後,靜心觀看。作者運用簡單的圖形化的方式講解了FIR濾波器係數、抽頭、脈衝響應這些基本的核心概念,並直觀演示了最小相位、線性相位、最大相位和混合相位FIR濾波器之間的差別。這些內容將會為你FIR技術應用之路做好重要理論準備。
文/Eclipse Audio創始人 Michael John
FIR(有限脈衝響應)濾波並不是一項新技術,由於近年來微處理器和DSP硬體在性能上顯著提高,而成本不斷降低,製造商越來越多地在揚聲器處理器和基於DSP的放大器中採用FIR濾波。
FIR濾波的優點包括對濾波器的幅值和相位特性的任意和精細控制、對幅值和相位的獨立控制、以及實現最大相位特性的可能(代價是更大的延時)。而其主要的缺點是效率:FIR濾波器通常比IIR(無限脈衝響應)濾波器佔用更多的CPU(DSP)資源。對於非常長的FIR濾波器,頻域分段(Segmented Frequency Domain)和多速率(Multi-rate)方法有助於減少計算負荷,但這些方法的算法複雜度也更高。
在專業音頻領域,人們經常會提到FIR濾波器(FIR filter)和FIR濾波(FIR filtering),比如:
線性相位分頻器或線性相位「磚牆」分頻濾波器
非常長的基於最小相位FIR的系統EQ
號角校正濾波
雖然這些應用場景顯示了FIR的部分用途,但FIR濾波的能力遠不止於這些,特別是其獨立控制幅值和相位的能力和混合、最大相位特性(mixed&maximum phase characteristics)。
那麼,什麼是FIR濾波?它與常見的IIR濾波有什麼區別呢?本文旨在回答這些問題,但首先需要介紹數字音頻中的一些基本概念。如果你已經學習過數位訊號處理,這些基礎概念你應該瞭然於胸。請原諒我省略了一些細節,並對一些複雜概念作了簡化處理。
1、數字音頻的關鍵概念
採樣(Sampling)
在數字音頻中,聲音波形是通過採樣來表示的。模數轉換器(ADC)測量或採樣一個模擬信號,並為每個樣本分配一個數值。人類通常能聽到20 Hz到20 kHz之間的頻率(1Hz即每秒一個周期)。為了用數字來完整表達該頻率範圍,ADC對該音頻波形採樣的頻率至少兩倍於最高可聽頻率。因此,常見的採樣率為44.1 kHz和48 kHz,或這些採樣率的倍數,如88.2kHz, 96 kHz, 192 kHz和384 kHz(專業音頻中可能採用非常高的採樣率,其原因本文不作探討)。採樣率的一半稱為奈奎斯特頻率(Nyquist frequency)。比如,48 kHz的採樣率的奈奎斯特頻率為24 kHz。
(要了解更多關於數字音頻和採樣的基礎知識,可訪問xiph.org網站,觀看「Monty」 Montgomery’s Digital Show and Tell視頻,和24-192音樂下載相關文章。)
數字濾波(Digital Filtering)
數字濾波是改變數字音頻信號的數學過程。在每次採樣時間間隔——對於48 kHz的採樣率,間隔為1/48000秒,即20.83微秒——時域數字濾波器以當前的輸入樣本和此前的輸入樣本,除以(或乘以)的特定的數字(稱為濾波器係數),並將乘除計算的結果求和。
讓我們看一些例子。
例:「平均」濾波器
最簡單的數字濾波器之一,是取當前樣本和上一個樣本的平均值。從概念上講,就是:
輸出樣本 = (輸入樣本 + 前一個輸入樣本) / 2
如圖所示,我們可以將該濾波器表示為:
數字平均濾波器流程圖
我們也可以用方程將其表示為:
式中
x[n]是當前時間間隔的輸入樣本,樣本序號為n,
x[n-1]是前一時間間隔的輸入樣本,樣本序號為n-1,
y[n]是當前時間間隔的輸出樣本,輸出樣本序號為n,
數值「0.5」是濾波係數。
在繼續之前,有必要暫停一下,考慮一下上述濾波器的脈衝響應和頻率響應。
脈衝響應和頻率響應
設備的脈衝響應——不論是模擬濾波器、數字濾波器,還是揚聲器,甚至是一個房間——是設備在一段時間內對輸入脈衝的響應。理論上,我們可以把電壓、數字或聲學脈衝放入揚聲器、放大器、處理器或房間,並記錄其隨時間推移的輸出電壓、數位訊號或麥克風波形,以獲得脈衝響應。然而,用於激勵設備的脈衝信號,並不是在全頻帶上都具備足夠的能量,因而不能在所有頻率顯著高於環境噪聲,獲得理想的信噪比。
目前,許多測量系統要麼使用正弦掃頻信號,要麼使用周期粉紅噪聲(雙通道FFT方法可使用任何音頻信號——如調音臺現場混音的輸出——但那是另一回事)。掃頻和粉噪信號在所有頻率上都有足夠的能量以達到合適的信噪比,從而能得到一個可用的、穩定的脈衝響應。
頻率響應反映一個設備的頻域特性,它是脈衝響應在頻域對等物(有時會用傳遞函數這一術語來表示頻率響應)。頻率響應通常被繪製為圖表,表現隨頻率變化的幅度(以分貝為單位)和相位(以度為單位)。頻率響應也可以從幅度和相位轉換為複數表示,每個頻率點都有其對應的實部和虛部。
脈衝響應頻率響應
時域脈衝響應和頻域頻率響應具有內在聯繫,並且是設備的數學等價特徵。我們可以用離散傅立葉變換(DFT)將脈衝響應轉換至頻域,用離散傅立葉逆變換(IDFT)將頻域響應轉換至時域。快速實現傅立葉變換的方法稱為快速傅立葉變換(FFT)和快速傅立葉逆變換(IFFT)。受一些限制,我們在此不討論其細節。
周期粉紅噪聲
周期粉紅噪聲是使用FFT方法產生的粉紅噪聲,當一遍又一遍地重複相同的噪聲序列來連續播放該噪聲時,按照原始FFT序列長度截取任意一段噪聲都能確保是粉紅噪聲。循環噪聲對於測量系統計算來說更容易,我們將在其他文章中再作討論。事實上,採用FFT方法可以得到任何頻譜形狀的周期噪聲。為了獲得乾淨、穩定的測量結果,常使用與環境噪聲頻譜相匹配的頻譜形狀的噪聲,這樣所有頻率都有較好的信噪比。
回到「平均」濾波器的例子
數字濾波器的脈衝響應是一個脈衝信號通過該濾波器後的輸出,脈衝信號僅有一個樣本值為1,其它的樣本都是0。我們來計算一下脈衝響應。
平均濾波器的脈衝響應計算
數字平均濾波器的脈衝響應
對於該濾波器,前兩個時間間隔的脈衝響應為[0.5 0.5],其他所有時間間隔的脈衝響應為零。它的長度是兩個樣本,由於這個長度是有限的,所以這個濾波器是一個有限脈衝響應濾波器,即FIR濾波器(Finite Impulse Response Filter)。
由於這個濾波器對樣本進行了「平均」,我們能夠預料到原本較大的樣本差異被「平滑」掉,而較小的樣本差異則基本不受影響。讓我們看看頻率響應的幅度變化。
平均數字濾波器頻率響應。(fs = 48 kHz)
不難看出,平均濾波器是一個低通濾波器。低頻(音頻信號隨時間變化較慢)不受影響,但高頻會衰減。
例:「差分」濾波器
讓我們看看如果我們改變平均濾波器中的一個係數的符號會發生什麼。如圖所示,我們可以將該濾波器表示為:
差分濾波器流程圖
可以用方程式將其表示為:
這個濾波器會濾掉相同或相似的相鄰樣本,並突出差異較大的相鄰樣本。差分濾波器的頻率響應與平均濾波器的頻率響應截然不同。
差分數字濾波器頻率響應。(fs = 48 kHz)
差分濾波器是一個高通濾波器。高頻部分不受影響,但低頻被衰減。
例:帶反饋的數字濾波器
前面兩個例子中的濾波器對採樣作乘除後求和。如果我們取一個之前的或延遲的樣本,對它進行乘除,將其計入到求和中,會發生什麼?
下圖為截止頻率為1 kHz (fs= 48 kHz)的巴特沃斯一階低通濾波器。需要注意的一點是,前一個樣本的一部分被反饋或再循環到濾波器中。
濾波器階數(Filter Order)
對於數字濾波器,濾波器階數是在數字濾波器中使用的最大樣本延遲量。
對於IIR(無限脈衝響應)低通和高通濾波器,頻率響應滾降是6dB每倍頻程乘以其階數得到的。(例如,一個三階高通濾波器的滾降特性是18dB/oct)
巴特沃斯1階1kHz低通濾波器流程圖(fs = 48 kHz)
我們來計算一下它的脈衝響應:
巴特沃斯1階1kHz低通濾波器脈衝響應計算
巴特沃斯1階1kHz低通濾波器脈衝響應 (fs = 48 kHz)
對於這個濾波器,脈衝響應的初始值為0.0615,即使隨後的輸入樣本值為0,濾波器的輸出也會衰減,但基本上會一直保持非零值。由於該濾波器的輸出持續無限時間,因此該濾波器稱為無限脈衝響應濾波器(Infinite Impulse Response),即IIR濾波器。
下圖中較粗的藍線表示該低通濾波器的頻率響應。
巴特沃斯1階1kHz低通和高通濾波器頻率響應(fs =48 kHz)
上面的藍色細線顯示了截止頻率為1 kHz (fs = 48 kHz)的1階高通巴特沃斯濾波器的響應。下圖顯示了高通濾波器的信號流和係數。
巴特沃斯1階1kHz高通濾波器流程圖(fs = 48 kHz)
在後文中,低通濾波器和高通濾波器會簡寫為LPF或HPF。
2、FIR濾波器
下圖顯示了一個普通FIR濾波器的流程圖。係數(C0到CN-1)是「抽頭(taps)」,因此對於一個長度為N的FIR濾波器,有N個抽頭和N-1個延時樣本,濾波器的階數是N-1。
FIR濾波器流程圖
一個短的FIR濾波器作用有限,但是長一些的FIR濾波器通過將長時間的音頻樣本混合在一起,以可控的方式使不同頻率的幅度和相位發生變化,從而變得非常強大。
3、IIR Biquad(IIR雙二階濾波器)
二階IIR濾波器通常稱為雙二階濾波器(Biquad Filter)。(下圖為Direct Form 2版本流程圖)
IIR雙二階濾波器流程圖
雙二階濾波器是DSP中大多數IIR濾波的基礎。擱架式均衡器、參量均衡器和全通濾波器都可以基於雙二階濾波器實現,不同階數的高通和低通濾波器一般由雙二階濾波器級聯來實現。通過將係數a2和b2都設為0,可以得到一個一階濾波器。將係數a1和a2都設為0,將得到一個3抽頭的FIR濾波器。
4、FIR和IIR濾波器對比
那麼IIR和FIR濾波器有何不同呢?讓我們看看一些典型的濾波器類型。
比較:FIR濾波器與1階IIR LPF和HPF
下面的兩幅圖顯示了1階巴特沃斯IIR LPF和HPF,以及用於模仿IIR濾波器特性的不同長度的FIR濾波器的頻率響應(採用的FIR設計方法包括對IIR濾波器的脈衝響應進行採樣並進行DC校正)。這裡的FIR濾波器需要40抽頭或更長才能較為準確地接近IIR濾波器。10、20和30抽頭FIR濾波器有明顯的紋波,在幅度上與IIR濾波器響應相差可達6 dB。
FIR濾波器和巴特沃斯1階1kHz低通濾波器頻率響應對比(fs = 48 kHz)
FIR濾波器和巴特沃斯1階1kHz高通濾波器頻率響應對比(fs = 48 kHz)
比較:FIR濾波器與二階IIR參量濾波器
下面的兩幅圖顯示了1kHz IIR參量濾波器的頻率響應,以及設計來模仿IIR濾波器的不同長度的FIR濾波器。兩幅圖所採用的FIR設計方法有所不同。第一種方法在低頻有更大的誤差,但在1kHz附近的匹配略好;第二種方法在1 kHz以上和以下均能更好匹配IIR,但在1 kHz附近的匹配略差。可見不論使用哪種方法,FIR濾波器都需要40個抽頭或更長時間才能較為準確地模擬IIR參量濾波器。
對比1 kHz IIR參量濾波器和不同長度的FIR濾波器(10到50個抽頭)的頻率響應(fs = 48 kHz)
對比1 kHz IIR參量濾波器和不同長度的FIR濾波器(10到50個抽頭)的頻率響應,經DC校正(fs = 48 kHz)
5、FIR濾波器長度
由於FIR濾波器沒有反饋(即沒有使用循環樣本),它們影響低頻的能力與它們的長度成正比。濾波器的長度越長,可調節的頻率就越低——不論是調整幅度還是相位,抑或是二者兼具。更高的Q值,或更陡峭的幅度和相位改變,也需要更長的FIR濾波器。
以下是384抽頭和3072抽頭FIR濾波器的例子,濾波器的響應是深藍色和深紅色的線。兩個FIR濾波器都試圖匹配一個揚聲器所需的EQ曲線(淺藍色和淺紅色線)。差異圖顯示了理想濾波器和FIR濾波器的頻率響應在幅度和相位上的差異。注意:
濾波器越長,FIR濾波器在實現EQ時就越有效,特別是對於低頻。
即使是3072抽頭 FIR濾波器也無法在65Hz實現所需的高Q值幅度變化。(實際上,在48kHz採樣率時,需要超過10000抽頭長度的FIR濾波器才能匹配所需的EQ曲線。)
384抽頭FIR濾波器
384抽頭FIR濾波器的脈衝響應(深綠色)及其dB幅度響應(淺綠色)
384抽頭FIR濾波器的頻率響應(深藍和深紅色)與期待的理想濾波器頻率響應(淺藍和淺紅色)
理想濾波器與384抽頭FIR濾波器的頻率響應差異
3072抽頭FIR濾波器
3072抽頭FIR濾波器的脈衝響應(深綠色)及其dB幅度響應(淺綠色)
3072抽頭FIR濾波器的頻率響應(深藍和深紅色)與期待的理想濾波器頻率響應(淺藍和淺紅色)
理想濾波器與3072抽頭FIR濾波器的頻率響應差異
6、計算複雜度
前文中,我們提到FIR濾波器比IIR濾波器的計算量更大。讓我們考慮上文中出現的一些簡單的IIR和FIR濾波器。在估算和對比計算量時,我們通常要看數學運算——乘法和加法。我們假設處理器可以在同一操作中有效地執行「乘法」和「加法」,(由於加法運算次數少,譯註)我們可以忽略加法,只計算和比較乘法。
上面的一階IIR濾波器有3個係數需要與音頻樣本相乘,因此我們估計濾波器大約需要每秒執行3倍於採樣率的計算。FIR濾波器有N個係數(其中N是濾波器的長度),因此我們估計FIR濾波器每秒進行採樣率乘以N倍的計算。
下表比較了兩類濾波器的運算量:
對比IIR與較短的FIR濾波器每秒鐘的乘法計算量
(x前的數字表示FIR濾波器相對於同一行中IIR濾波器的乘法計算量的倍數)
在示例中,我們已經看到FIR濾波器大約需要40抽頭或更多的採樣才能接近IIR濾波器,從上表可知40抽頭的FIR濾波器的計算成本相當於IIR濾波器的8倍或13.3倍。
典型的揚聲器處理器輸出通道
在撰寫本文時,一個普通的高端揚聲器處理器大約有24個IIR雙二階濾波器,分別用於高通、低通、擱架式濾波器和參量濾波器,以及2048抽頭的FIR濾波器。下表比較了兩者的計算成本。
對比典型的DSP輸出通道的FIR濾波器和IIR濾波器的乘法計算量
(x前的數字表示FIR濾波器相對於IIR濾波器的乘法計算量的倍數)
7、FIR濾波器的優勢
既然FIR濾波的計算成本如此之高,那它還有什麼優勢可言?FIR濾波主要有兩個好處:
獨立控制幅度和相位
更細緻的均衡(更容易根據目標頻率響應生成濾波器)
讓我們分別來闡述這兩點:
幅度和相位的獨立控制
對於大多數IIR濾波器,相位響應與幅度響應有著內在的固有聯繫(IIR全通濾波器是個例外)。FIR濾波的一個巨大好處是能夠獨立地控制幅度和相位。下面是四個FIR濾波器的例子,它們具有相同的幅度響應,但相位響應截然不同。
例:最小相位FIR濾波器
之前我們講解了IIR和FIR濾波器如何使用延時樣本和係數來實現預期的頻率響應變化。最小相位濾波器在施加均衡調整的同時,給音頻信號造成的延時是最小的,這是現場擴聲系統會採用基於長FIR濾波器的最小相位均衡器的原因之一。最小相位濾波器的一個特點是在脈衝響應開始處或接近開始處有較大的係數。以下兩幅圖顯示了一個最小相位FIR濾波器——在100 Hz左右的高通和一些EQ,該FIR濾波器的長度是42.7 ms,濾波器延時則是可以忽略的。
最小相位2048抽頭FIR濾波器的脈衝響應(深綠色)及其脈衝響應的dB幅度值(淺綠色);(fs = 48 kHz)
最小相位2048抽頭FIR濾波器的頻率響應;(fs = 48 kHz)
例:線性相位FIR濾波器
以下兩幅圖顯示了具有相同幅度響應但相位為平直(或線性)的FIR濾波器。通過濾波器的信號延時,等於濾波器的峰值所在位置:這裡是1024個樣本或21.3 ms。
線性相位2048抽頭FIR濾波器的頻率響應;(fs = 48 kHz)
例:最大相位FIR濾波器
下面兩幅圖顯示了具有相同幅度響應但具有最大相位的FIR濾波器。這與上面最小相位濾波器的相反,或稱逆相位。脈衝響應是最小相位脈衝響應的時間反轉,所以通過濾波器的整體延時大約等於濾波器的長度:42.7 ms。
最大相位2048抽頭FIR濾波器的脈衝響應(深綠)及其脈衝響應的dB幅度值(淺綠)(fs = 48 kHz)
最大相位2048抽頭FIR濾波器的頻率響應;(fs = 48 kHz)
例:混合相位FIR濾波器
最後我們得到了具有相同頻率響應的任意相位或混合相位FIR濾波器。通過濾波器的整體延時接近濾波器峰值的位置;約1480個採樣,30.4 ms。峰值的位置則取決於FIR濾波器所需的特性以及如何在抽頭長度限制內實現這些特性,本例中為2048抽頭。
為了更好地理解這一點,請參閱FIR Designer教程。
混合相位2048抽頭FIR濾波器的脈衝響應(深綠)及其脈衝響應的dB幅度值(淺綠)(fs = 48 kHz)
混合相位2048抽頭FIR濾波器的頻率響應;(fs = 48 kHz)
為什麼我們要關注混合相位的特性? 這樣我們就可以把揚聲器的相位改造成我們想要的樣子!
為什麼需要獨立的相位控制?
一個揚聲器單元(驅動器)可視為一個最小相位濾波器(當比較其輸入電信號和輸出聲信號時)。當使用最小相位EQ使揚聲器驅動器的幅度響應更接近「平直」時,揚聲器驅動器的相位也變平並接近線性相位(至少在揚聲器的可聽頻帶內如此)。
然而,在一個典型的多分頻音箱中,IIR高通和低通濾波器、極性、延時和聲學濾波器(如倒相孔),都增加額外的相位偏移,這種偏移是隨頻率而變化的。由於這些額外的相位偏移,一個多分頻音箱可被視為一個最小相位系統加上一些全通濾波器。
由於最小相位均衡器無法影響全通濾波器的特性,我們可以藉助FIR濾波將音箱的相位響應調整為我們期待的樣子。
對相位的操控具有有許多應用,包括:
揚聲器的相位曲線線性化(儘管FIR濾波可明顯改善揚聲器的脈衝響應,但關於這是否對揚聲器性能產生感知上的改善還存在一些爭論);
匹配同一產品線內不同型號揚聲器的相位(和幅度),以及安裝項目中匹配不同型號的揚聲器,以便更容易地調試音箱群組和陣列;
在陣列處理(用於觀眾區覆蓋優化)和波束控制中操縱單個揚聲器;
分頻優化,以提高多分頻音箱在其覆蓋角度範圍內的頻率響應一致性。
更細緻的均衡(更容易創建濾波器)
根據揚聲器測量結果,我們可以創建一個頻率響應(幅度和相位),將揚聲器塑造為設定的目標響應。由於脈衝響應和頻率響應之間的內在關係,使用DFT(或FFT)方法可以很容易地根據目標頻率響應生成FIR濾波器係數。目標響應可以是任意的,比如:
如同粉噪一樣的平直
帶有輕微高頻滾降的粉噪平直(如影院X曲線)
平直(線性)相位
另一個揚聲器的幅度和相位響應
陣列處理計算得到的幅度和相位響應
以下四幅圖展示了一款商用12寸加載號角的的兩分頻音箱的軸線測量結果,及2048抽頭FIR濾波器將其頻率響應塑造為平直的幅度響應(輕微的高頻滾降)和通帶內平直的相位響應。
一隻12寸加載號角兩分頻音箱的軸線頻率響應
(時基0按照高音驅動器對齊,因此低頻響應在時間上相對超前,導致在分頻頻率附近表現出最大相位特性)
為上述12寸音箱創建的FIR濾波器的脈衝響應(深綠色)及其dB幅度(淺綠色)
為上述12寸音箱創建的FIR濾波器的頻率響應
上述12寸加載號角兩分頻音箱經FIR濾波處理之後的頻率響應
根據測量和測量平均設計EQ
在對音箱響應做精細的EQ過程中可能會出現一些問題。揚聲器的頻率響應隨著測量話筒位置、揚聲器位置、音量和溫度甚至時間的變化而變化。根據單次測量而設計的精細EQ可能會使揚聲器在測量的條件和位置上聽起來更好,但可能在其他位置和其他條件下聽起來更糟糕。因此在測量上必須非常小心,要確保測量條件符合揚聲器的設計和實際使用條件——例如在整個預期覆蓋區域內做測量。得到可靠測量值的一種方法,是對多個位置的測量值進行平均,該測量平均值可以作為有效的、精細的EQ的基礎。
8、超低頻的FIR濾波器
下圖顯示了一個例子,使用FIR濾波器對一個超低頻音箱做EQ,並校正其低頻的相位曲線(該音箱使用了IIR高通濾波器,以避免其音圈發生過大位移)。
在非常低的頻率進行濾波需要非常長的濾波器,此處採用了5000個抽頭,脈衝響應峰值顯示延時為3500抽頭,或72.9ms。本例只是對於FIR濾波器功能的一個簡單演示,至於FIR處理後帶來的低頻群延時的改善,能否在聽感上影響超低頻音箱的衝擊力,則有待驗證。由於該FIR濾波器延時較大,因此不太可能被用於現場擴聲場景中,但在電影院和家庭影院應用中可能有用。
在FIR濾波之前的超低頻音箱頻率響應
(雙18,測量時系統設置了一個 30Hz,18dB/oct巴特沃斯IIR高通濾波器)
FIR抽頭數為5000,3500個樣本延時
用於EQ,相位校正和LPF分頻的FIR濾波器的頻率響應(FIR抽頭數為5000,3500個樣本延時)
FIR濾波處理後的的超低頻音箱頻率響應
9、設計和加載自定義FIR濾波器
越來越多的人認識到音頻FIR濾波的優勢和靈活性,加上微處理器和DSP的性價比不斷提高,促使越來越多的產品具有FIR濾波功能。這些產品使音箱設計師、安裝人員、系統操作員和DIY愛好者可以加載自定義的FIR濾波器。點擊連結可查看支持FIR的產品清單:部分具有FIR功能的處理器、功率放大器及技術乾貨:FIR濾波器的基礎概念及在揚聲器中的應用指南軟體產品列表 (連結地址:https://eclipseaudio.com/fir-capable-products/ )。
在硬體不斷進步的同時,FIR軟體工具——如FIRDesigner*,可以在音箱或音響系統測量的基礎上,設計和仿真FIR EQ、為音箱製作IIR+FIR混合預置、調試音箱和音響系統。FIR Designer還具備對測量進行空間和電平的綜合平均功能。
*本文檔中所有的FIR濾波器示例和圖表都是通過FIRDesigner生成的。
*翻譯/周強生,校對/沈傑雯
*來源/啟音課堂,經由Michael John許可翻譯並發表。