吳禮福 陳晶晶 郭業(yè)才
(1 南京信息工程大學(xué) 電子與信息工程學(xué)院 南京 210044)
(2 江蘇省大氣環(huán)境與裝備技術(shù)協(xié)同創(chuàng)新中心 南京 210044)
相對(duì)于無源降噪方式,有源噪聲控制(Active noise control,ANC)[1?2]在控制低頻噪聲方面具有明顯的優(yōu)勢(shì),因而被廣泛應(yīng)用于各種降噪領(lǐng)域。有源噪聲控制系統(tǒng)分為前饋和反饋兩種結(jié)構(gòu):前饋系統(tǒng)需要參考信號(hào),系統(tǒng)降噪量高、穩(wěn)定性好;反饋控制系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,但是穩(wěn)定性差,存在水床效應(yīng)[3?7]。
水床效應(yīng)是指一個(gè)頻段內(nèi)的噪聲減小必然導(dǎo)致另一個(gè)頻段內(nèi)的噪聲放大[8]。文獻(xiàn)[9]采用最小二乘濾波器離線設(shè)計(jì)方法對(duì)水床效應(yīng)中的噪聲放大進(jìn)行展平以調(diào)節(jié)水床效應(yīng),該方法不具有自適應(yīng)能力。文獻(xiàn)[10]采用小波包分解噪聲信號(hào)調(diào)整反饋控制系統(tǒng)的控制器以達(dá)到自適應(yīng)能力,但是未考慮水床效應(yīng)中的噪聲放大問題。目前調(diào)節(jié)反饋系統(tǒng)水床效應(yīng)的自適應(yīng)算法主要是通過限制控制器系數(shù)的大小,直接或者間接地限制次級(jí)信號(hào)的大小來實(shí)現(xiàn)的,例如時(shí)域泄漏(“Leaky”)算法[11],Qiu 等[12]提出的重縮放(“Rescaling”)算法,這些算法能夠改善系統(tǒng)的穩(wěn)定性但沒有明確考慮水床效應(yīng)中的噪聲放大問題。Wu等[13]提出將泄漏算法中的泄漏因子替換為泄漏矩陣來調(diào)節(jié)噪聲放大,由于每次迭代都有矩陣和矢量的乘運(yùn)算,其計(jì)算復(fù)雜度給實(shí)際應(yīng)用帶來困難。Wu 等[3]又提出在頻域以控制某個(gè)頻段內(nèi)的幅度響應(yīng)小于指定閾值為約束條件,對(duì)指定頻段內(nèi)的噪聲放大量進(jìn)行調(diào)節(jié),但是沒有直接對(duì)次級(jí)信號(hào)進(jìn)行約束。
為了綜合考慮水床效應(yīng)的噪聲放大和計(jì)算復(fù)雜度問題,本文提出一種調(diào)節(jié)水床效應(yīng)的雙梯度有源噪聲控制自適應(yīng)算法,它直接約束次級(jí)信號(hào)在一定范圍內(nèi),從而達(dá)到有效調(diào)節(jié)水床效應(yīng)的目的。
自適應(yīng)反饋控制系統(tǒng)目前采用較多的是基于內(nèi)模型控制(Internal model control IMC)結(jié)構(gòu)[2]。IMC結(jié)構(gòu)其實(shí)是一個(gè)預(yù)測(cè)器,因?yàn)閷?shí)際系統(tǒng)只可能獲取當(dāng)前采樣點(diǎn)的誤差信號(hào)和次級(jí)信號(hào),然后估計(jì)出下一采樣點(diǎn)的噪聲信號(hào)作為輸入控制器的參考信號(hào)。
如圖1所示,d(n)、e(n)和y(n)分別為系統(tǒng)的初級(jí)噪聲信號(hào)、誤差傳感器采集的噪聲信號(hào)和控制器輸出的次級(jí)信號(hào),W(z)為控制器,S(z)為次級(jí)路徑傳遞函數(shù)。在z域中,初級(jí)噪聲可表示為
如果次級(jí)路徑的傳遞函數(shù)S(z)可以估計(jì)得到,并且S(z)≈則能估計(jì)出初級(jí)噪聲d(n)并將其作為參考信號(hào)x(n),
圖1 自適應(yīng)反饋控制系統(tǒng)框圖Fig.1 Block diagram of adaptive feedback control system
經(jīng)典濾波最小均方(Filtered-x least mean square FxLMS)算法采用最小均方誤差準(zhǔn)則,設(shè)定控制系統(tǒng)目標(biāo)函數(shù)
用梯度下降法得到控制器w(n)的迭代算法:
其中,μ為收斂系數(shù),L為控制器系數(shù)的階數(shù)。x′(n)為濾波參考信號(hào),即
“Leaky”算法在目標(biāo)函數(shù)中引入懲罰項(xiàng)“γwT(n)w(n)”限制控制器的輸出和保持算法的穩(wěn)定性,其代價(jià)函數(shù)
其中,0<γ <1。其控制器系數(shù)迭代公式為
“Rescaling”算法不改變FxLMS算法的目標(biāo)函數(shù),而是在違反約束情況下沿著約束邊界將梯度投影到約束集中[12],即
當(dāng)|y(n+1)|≤C時(shí),
當(dāng)|y(n+1)|>C時(shí),
本文提出的雙梯度FxLMS(Double-gradient FxLMS,DGD-FxLMS)算法是通過直接約束次級(jí)信號(hào)來改善水床效應(yīng)的噪聲放大問題,當(dāng)次級(jí)信號(hào)超出約束時(shí)將次級(jí)信號(hào)的均方作為目標(biāo)函數(shù),最小化次級(jí)信號(hào)的能量。
設(shè)定目標(biāo)函數(shù)
其中,
按照最陡下降法遞推濾波器的最佳權(quán)系數(shù)
所以,濾波器權(quán)矢量迭代公式
該算法沿著兩個(gè)梯度方向搜索最佳權(quán)矢量,其主要流程如表1所示。
表1 DGD-FxLMS算法Table1 Pseudo code of DGD-FxLMS algorithm
對(duì)于“FxLMS”、“Leaky”、“Rescaling”、“DGDFxLMS”4種自適應(yīng)算法,表2對(duì)其計(jì)算量進(jìn)行比較。4種算法計(jì)算復(fù)雜度比較主要包括3個(gè)部分:(1)計(jì)算次級(jí)信號(hào)y(n);(2)用估計(jì)的次級(jí)路徑對(duì)初級(jí)信號(hào)x(n)進(jìn)行濾波;(3)濾波器權(quán)矢量的迭代更新[14]。從表2中可知,就加法、乘法和除法計(jì)算量而言,對(duì)于一個(gè)樣本點(diǎn),當(dāng)控制器輸出超過約束時(shí),“DGD-FxLMS”算法比“FxLMS”算法少一次次級(jí)路徑濾波,即少P次乘法和(P?1)次加法;當(dāng)控制器輸出不超過約束時(shí),“DGD-FxLMS”算法與“FxLMS”算法計(jì)算量相同。雖然“DGD-FxLMS”算法還需要一些額外的選擇開關(guān)以及一個(gè)閾值門閥,可以通過條件語句控制,而條件語句通常只需很少的機(jī)器周期,所以與傳統(tǒng)的“FxLMS”算法相比,“DGD-FxLMS”算法多余的計(jì)算復(fù)雜度可以忽略不記。與“Leaky”算法相比,“DGD-FxLMS”算法少L或(L+P)次乘法,少0或(P?1)次加法。與“Rescaling”算法相比,“DGD-FxLMS”算法少(L+1)或(L+P+1)次乘法,少0或(P?1)次加法,少0或1次除法。因此,本文算法的計(jì)算量較小。
表2 4種算法的主要計(jì)算量Table2 Computation load of the four algorithms
本文驗(yàn)證了4種算法在有源降噪耳機(jī)中的實(shí)際效果。如圖2所示,將市場(chǎng)上購買的有源降噪耳機(jī)用作原型佩戴到B&K公司的人工頭(4182C)上,在保持耳機(jī)整體結(jié)構(gòu)不變的情況下拆分引出誤差傳感器、次級(jí)信號(hào)線,將誤差麥克風(fēng)通過傳聲器前放連接到B&K公司的Pulse上,Pulse一方面將誤差信號(hào)與次級(jí)信號(hào)輸送到電腦,另一方面也將噪聲信號(hào)傳送給揚(yáng)聲器(初級(jí)噪聲源)。
圖2 有源降噪耳機(jī)實(shí)驗(yàn)系統(tǒng)的器件連接Fig.2 The devices connection in the active noise control headphone experiments
實(shí)驗(yàn)在全消聲室中進(jìn)行,如圖3(a)所示,初級(jí)聲源分別位于人工頭正前方、正左方、正右方和正后方,距離人工頭0.3 m。系統(tǒng)的采樣率為16 kHz。采用最小均方誤差(Least mean square LMS)算法估計(jì)出次級(jí)路徑,此處為256階有限長(zhǎng)脈沖響應(yīng)(Finite impulse response,FIR)濾波器。
圖3 初級(jí)聲源的4個(gè)位置及消聲室中的實(shí)驗(yàn)場(chǎng)景Fig.3 Diagrammatic view of the 4 different incident directions of the primary noise and the experimental configuration in the anechoic chamber
本文以降噪量評(píng)價(jià)降噪性能的好壞,降噪量為ANC系統(tǒng)關(guān)閉與打開兩種情況下誤差傳感器信號(hào)的功率譜密度之差。實(shí)驗(yàn)分別對(duì)4個(gè)不同入射方向進(jìn)行降噪性能測(cè)試,發(fā)現(xiàn)左右兩只耳朵的性能幾乎一樣,為了在一幅圖中更加清晰簡(jiǎn)潔地看出每種算法的降噪量,取右耳4個(gè)不同入射方向初級(jí)噪聲源的降噪量的平均值進(jìn)行對(duì)比。
本文選用“FxLMS”、“Leaky”、“Rescaling”、“DGD-FxLMS”4種算法分別迭代得到4種控制器后,對(duì)比4種算法的降噪量,后3種算法均為經(jīng)典“FxLMS”的改進(jìn)算法,可以限定控制器的幅度輸出??刂破鱓(z)都為FIR 濾波器,4種算法的參數(shù)設(shè)定于表3中,“FxLMS”算法中μ=0.003;“Leaky”算法中μ=0.004,γ=0.05,相當(dāng)于泄漏因子為0.9998;“Rescaling”算法中μ=0.004,C=0.005;“DGD-FxLMS”算法中μ=0.003,C=0.001。
表3 4種算法的參數(shù)設(shè)定Table3 Parameter settings of the four algorithms
4種算法的降噪量如圖4所示,可以看出“Leaky”算法和“Rescaling”算法的有效降噪頻段分別在660 Hz和740 Hz以下,而“FxLMS”和“DGDFxLMS”算法在1000 Hz 還有降噪?!癋xLMS”算法在235 Hz附近可以獲得21 dB的最大降噪量,同時(shí)它在2000~4000 Hz頻段內(nèi)的噪聲放大也是最大的,其噪聲放大在2~7 dB;“Leaky”算法在250 Hz附近獲得8 dB的最大降噪量,其噪聲放大量是最小的,都低于2 dB 且均勻分布在1000~5000 Hz范圍內(nèi),但“Leaky”算法的有效降噪頻段是最窄的;“Rescaling”算法在235 Hz附近獲得15 dB的最大降噪量,盡管“Rescaling”算法在430 Hz以下頻段的降噪量大于“DGD-FxLMS”算法,其在1000~2200 Hz頻段的噪聲放大量大于“DGDFxLMS”算法,并且“Rescaling”算法有效降噪頻段比“DGD-FxLMS”算法窄?!癉GD-FxLMS”算法在300 Hz附近獲得9.5 dB的最大降噪量,其有效降噪頻段幾乎和“FxLMS”算法的有效降噪頻段重合。
圖4結(jié)果表明“DGD-FxLMS”算法在最大降噪量上比“FxLMS”算法和“Rescaling”算法差,從式(3)可以看出“FxLMS”算法在搜索最佳權(quán)矢量過程中沒有考慮其他任何約束條件,而僅僅以將誤差信號(hào)能量降到最低為目標(biāo),因此它雖然最大降噪量高,噪聲放大也最大。
“Rescaling”算法效果較好,既有不錯(cuò)的降噪量,噪聲放大也不大,但從式(11)和式(12)來看,在實(shí)際的數(shù)字信號(hào)處理器件應(yīng)用中,除法運(yùn)算會(huì)消耗較大資源,此外,該算法是采用“硬性”削波的方式對(duì)次級(jí)信號(hào)進(jìn)行處理,沒有明確的代價(jià)函數(shù)。
從降噪量和有效降噪帶寬來看,“DGD-FxLMS”算法在降噪性能上優(yōu)于“Leaky”算法。從式(7)知“Leaky”算法引入懲罰項(xiàng)“γwT(n)w(n)”,所以式(8)“Leaky”算法每次更新控制器系數(shù)時(shí)都對(duì)其進(jìn)行約束,但“Leaky”算法不同于“Rescaling”算法,“Rescaling”算法在控制器超過約束時(shí)僅硬乘一個(gè)標(biāo)量[C/y(n+1)],相當(dāng)于將L個(gè)控制器系數(shù)等比例縮小,而“DGD-FxLMS”算法則在控制器超過約束時(shí)根據(jù)x(n)的大小“軟性”決定系數(shù)調(diào)節(jié)的大小,L個(gè)控制器系數(shù)中有些可能被縮小,有些可能被放大,相當(dāng)于對(duì)整個(gè)濾波器做整形,其調(diào)節(jié)的自由度更大,也更精確。
圖4 4種算法的降噪性能Fig.4 The ANC performance of four algorithms
在自適應(yīng)控制過程中“DGD-FxLMS”算法在梯度1和梯度2兩個(gè)梯度方向的分布比例分別為62.4%和37.6%,梯度1和梯度2是指分別沿式(13)上下兩行目標(biāo)函數(shù)的方向?qū)で笞罴褭?quán)矢量。表明“DGD-FxLMS”算法在最小化誤差能量的同時(shí)兼顧了噪聲放大。圖5給出了4種算法的誤差收斂曲線,從圖5中可以看出,與其他3種算法對(duì)比,盡管“DGD-FxLMS”算法會(huì)在兩個(gè)梯度方向上進(jìn)行切換,但并不會(huì)在收斂過程中出現(xiàn)系統(tǒng)不穩(wěn)定性問題。
圖5 4種算法的收斂曲線Fig.5 Convergence curves of the four algorithms
約束控制器輸出幅度可以改善水床效應(yīng)中的噪聲放大現(xiàn)象。本文以控制器的實(shí)際輸出是否超出約束作為選擇目標(biāo)函數(shù)的依據(jù),研究了一種“DGDFxLMS”算法:當(dāng)控制器輸出滿足約束,該算法沿著最小化誤差信號(hào)能量的梯度方向迭代;反之,則沿著最小化次級(jí)信號(hào)能量的方向迭代。在有源降噪耳機(jī)實(shí)例中的驗(yàn)證結(jié)果表明該算法可以在保證一定降噪量情況下改善噪聲放大問題,同時(shí)其運(yùn)算量是實(shí)際應(yīng)用可以接受的。