百文萌,王勁松,2,高慧杰
(1.長春理工大學 光電工程學院,長春 130022;2.長春理工大學 中山研究院,中山 528437)
主動噪聲控制(ANC)是一種利用聲波相消干涉原理,人為地產(chǎn)生與噪聲同頻、等幅、反相的“抗噪聲”達到降噪的新技術(shù)[1]。在整個ANC系統(tǒng)中,自適應(yīng)控制算法可以稱之為其核心部分[2-3],其中以計算量小和容易實現(xiàn)為優(yōu)點的濾波-x最小均方(FxLMS)算法在主動降噪中廣泛應(yīng)用[4]。在FxLMS中,一個不可忽視的存在即為步長因子,因為它既是決定算法能否收斂的關(guān)鍵因素,也是判斷收斂速率和穩(wěn)態(tài)誤差大小的重要因素。所以,對于FxLMS算法的改進始終是個熱門課題。改進的主要目的是在算法收斂的情況下,提高算法迭代過程的收斂速率、降低穩(wěn)態(tài)誤差以及有利于算法的硬件實現(xiàn)。目前比較經(jīng)典的改進算法有歸一化LMS算法、泄露FxLMS算法等。其中,雖然歸一化LMS算法的收斂速率確有改善,但是在算法穩(wěn)定后,步長因子不能達到一個較小的值,致使穩(wěn)態(tài)誤差較大;泄露FxLMS算法是加入泄露因子可以約束次級信號,降低FxLMS算法不穩(wěn)定的機會,但是收斂速度沒有得到明顯的改善。
針對上述步長調(diào)整原則和變步長算法的優(yōu)缺點,提出一種泄露變步長的FxLMS算法來克服傳統(tǒng)固定步長的缺點,提高算法的穩(wěn)定性。本文將對FxLMS算法和改進后的算法分別進行仿真分析,并最終將其運用在雙通道主動噪聲控制的結(jié)構(gòu)中,以提高降噪效果。
FxLMS算法是在最小均方(LMS)算法的基礎(chǔ)上考慮到了次級路徑存在的影響,由Morgan、Widrow和Burgess獨立推導得到[5-6]。前饋單通道FxLMS算法如圖1所示,x(n)為輸入的初始信號,d(n)為初始信號通過初級傳遞函數(shù)P(z)到達誤差傳感器附近的期望信號,e(n)為誤差傳感器接收到的誤差信號,W(z)代表自適應(yīng)濾波器。r(n)是x(n)經(jīng)過次級路徑傳遞函數(shù)估計S?(z)后的濾波信號,將r(n)和e(n)共同作為控制器W(z)的另一個輸入信號,通過算法處理后獲得的控制器輸出信號y(n)再通過次級路徑傳遞函數(shù)S(z)可在誤差傳感器附近得到一個與期望信號相抵消的控制信號yp(n),從而達到降噪的目的。
圖1 基于FxLMS算法的ANC系統(tǒng)框圖
設(shè)濾波器的長度為L,其算法具體如下:
(1)某一時間初始信號的輸入為:
(2)x(n)經(jīng)過W(z)后的信號y(n)為:
(3)y(n)經(jīng)過次級路徑后輸出的控制信號yp(n)為:
(4)x(n)經(jīng)過后輸出的濾波信號為:
(5)誤差傳感器處的誤差信號為:
(6)通過迭代求取新的濾波器抽頭系數(shù):
式中,步長μ為一個固定值,取值需滿足:
式中,λmax是初始信號向量自相關(guān)矩陣的最大特征值。
由上述的公式可知算法的收斂系數(shù)μ是一個固定的值,其取值的大小影響著算法收斂速度和系統(tǒng)的穩(wěn)定性。經(jīng)過仿真分析可得,步長取值較大時,可使算法較快收斂,但同時會使系統(tǒng)的穩(wěn)態(tài)誤差增大,嚴重時會導致算法發(fā)散,步長取值較小時,可使算法的穩(wěn)態(tài)誤差較小,使系統(tǒng)的穩(wěn)定性更好,但是算法達到穩(wěn)定時所需的時間較長。
分析可知,步長是一個至關(guān)重要的存在,為了更好地兼顧收斂速度和穩(wěn)態(tài)誤差這兩個關(guān)鍵因素,人們提出了變步長的改進思路[7],即:在算法初期,為了保證有較高的收斂速率,應(yīng)使步長因子的值處于一個較大的值,在算法末期,為了保證有較低的穩(wěn)態(tài)誤差,則此時對應(yīng)的步長因子的值也應(yīng)該較小。在上述的步長設(shè)計思路下,考慮到權(quán)系數(shù)更新過程中由實際次級路徑下的數(shù)模轉(zhuǎn)換過程產(chǎn)生的量化誤差給系統(tǒng)帶來的泄露影響[8],進而提出一種泄露變步長FxLMS算法。
由前文可知,F(xiàn)xLMS算法的權(quán)矢量迭代公式為:
根據(jù)歸一化FxLMS算法可得步長因子公式為:
則權(quán)系數(shù)更新公式改寫成:
則更為可靠的實現(xiàn)方式[9]為:
式中,μ0和ε均為正常數(shù)。當歐式范數(shù)平方‖r(n)‖2出現(xiàn)較小值時,易引起步長過大,從而導致算法發(fā)散,常數(shù)ε的存在則避免了此類情況的出現(xiàn)。對于存在的常數(shù)μ0,可以看作為步長參數(shù),用來控制調(diào)節(jié)算法的收斂速率和失調(diào)量,當μ0=1和ε=0時,此時的遞推方程式(11)即為式(10)。
由式(11)可得步長因子與輸入的初始信號的自相關(guān)矩陣有關(guān)。對算法的分析可知,此歸一化FxLMS算法的步長因子雖在自適應(yīng)過程初始階段有變化,但在自適應(yīng)過程趨于穩(wěn)定之后其步長不能達到一個小的值,則穩(wěn)態(tài)誤差會增大。在此基礎(chǔ)上改變步長,可用步長因子除以誤差向量的歐式平方范數(shù),使步長在自適應(yīng)過程初始階段有一個較大的值,且伴隨著迭代過程的進行,步長也將逐步降低,并最終穩(wěn)定在一個較小的值,即降低穩(wěn)態(tài)誤差,使系統(tǒng)更加穩(wěn)定。有:
式中,誤差向量e(n)的歐式平方范數(shù)可以寫為,隨著采樣次數(shù)的增加可知,步長μ(n)既和當前的誤差量e(n)有關(guān),又和誤差向量迭代過程的前n步有關(guān),因此,迭代步長是平滑下降的一個函數(shù)[10],確保了步長在自適應(yīng)過程的初期值較大,末期值較小,可以有效地降低穩(wěn)態(tài)誤差。另外,固定參數(shù)a的選取影響著μ(n)的變化,受初始信號的影響,參數(shù)值不容易確定。由于此算法中μ(n)的值只能是不斷地下降,所以在應(yīng)對非平穩(wěn)隨機過程系統(tǒng)中的跟蹤能力較弱[11]。為此,可引入對數(shù)函數(shù)對其進行改進,使得μ(n)的值在一定的范圍內(nèi)不斷地進行調(diào)整,有:
其中,γ的數(shù)值影響步長函數(shù)μ(n)的陡峭化程度,γ的值越大,其整體的變化率就越快,α和β的值確定了μ(n)的變化范圍。這里的e(n)2代表第n次迭代中瞬時誤差量的平方值,對比上式e(n)的歐式平方范數(shù)而言,運算量大幅度降低,只需要一個標量的平方運算,更易于硬件的實現(xiàn),并且由于μ(n)僅與當前誤差向量e(n)有關(guān),不是單純地不斷下降,而是根據(jù)當前的誤差在范圍內(nèi)不斷地調(diào)整,提高了算法的實時性,使算法也適合于非平穩(wěn)過程。
此時的權(quán)系數(shù)更新公式為:
本文提出的泄露變步長FxLMS是在式(14)的基礎(chǔ)上,考慮了實際數(shù)模轉(zhuǎn)換過程中量化誤差帶來的泄露影響,可將上式的權(quán)值更新公式改寫為:
式中,η是泄露系數(shù),是小于且接近1的一個常數(shù)。
由前面的分析可知,在更新濾波器抽頭系數(shù)的迭代公式中含有濾波-x信號矢量r(n),r(n)是x(n)通過傳遞函數(shù)估計模型求得。對次級路徑建模,如圖2所示,選擇LMS算法模塊,獲得傳遞函數(shù)估計模型的值。
圖2 次級通道建模原理圖
次級路徑建模的步驟如下:
(2)使用誤差傳感器接收由揚聲器產(chǎn)生的對消信號y(n):
(4)計算路徑的實際模型和估計模型之間的輸出差值:
(6)重復以上迭代過程,利用誤差信號e(n)不斷調(diào)節(jié)權(quán)系數(shù),直至達到設(shè)定要求為止,同時將得到的的系數(shù)值存儲起來,方便后續(xù)Fx-LMS算法使用。
現(xiàn)根據(jù)圖2所示的過程進行次級路徑建模仿真,為了驗證結(jié)果的有效性,設(shè)傳遞函數(shù)[12]為:
通過對其進行建模分析,取μ=0.01作為建模過程中LMS算法的步長因子的值,仿真的結(jié)果如圖3所示,從圖3(a)中可看出,識別誤差從采樣點數(shù)100往后接近于零,系統(tǒng)也趨于收斂。即建模仿真實驗對次級路徑的識別效果是穩(wěn)定的。另外,通過仿真建模實驗得到的實際路徑和估計路徑的濾波器權(quán)值也非常接近,仿真結(jié)果表明實驗有良好的估計值,辨識結(jié)果準確。
圖3 次級通道傳遞函數(shù)建模仿真實驗
仿真中,將傳統(tǒng)的FxLMS算法和本文的改進FxLMS算法進行比較,由于單一的頻率信號在實際應(yīng)用中很少存在,而更常見的是帶有一定帶寬的噪聲信號,因此本文的仿真實驗中采用的是混合信號,將x(t)=s(t)+v(t)作為輸入信號,其中v(t)是信噪比SNR=7的隨機白噪聲,s(t)是一個混頻信號,則:
即該信號由頻率分別為200 Hz、350 Hz和600 Hz組合構(gòu)成??紤]到收斂速度和實現(xiàn)的硬件成本,選取濾波器的階數(shù)為16,傳統(tǒng)FxLMS算法的固定步長取μ=0.012,改進算法仿真中取泄露因子η=0.999,步長函數(shù)各參數(shù)取β=0.012,α=0.003,γ值的大小決定其變化率,這里取γ=10。
仿真結(jié)果如圖4所示,圖4(a)和圖4(b)分別代表了FxLMS算法和泄露變步長FxLMS算法濾波的噪聲殘留。從圖中可知,噪聲經(jīng)過這兩種算法的處理都得到了顯著的改善,然而對比觀察即可發(fā)現(xiàn),在改進算法的處理下,噪聲殘留明顯有所降低,這是由于改進算法的步長是根據(jù)當前誤差向量在一定的范圍內(nèi)不斷地進行調(diào)整,如圖4(c)所示,步長在迭代的過程中整體呈現(xiàn)下降的趨勢,并且在迭代的后期也處于較小值的狀態(tài),因此,收斂后的穩(wěn)態(tài)誤差較小,噪聲殘留也更低。
圖4 單通道兩種算法的仿真結(jié)果
為了驗證改進算法的優(yōu)良性,把白噪聲作為輸入信號,對比FxLMS算法和改進的FxLMS算法的收斂性能,算法的各參數(shù)設(shè)定值不變,其均方誤差(MSE)如圖5所示,可以看出改進的FxLMS算法明顯比傳統(tǒng)的FxLMS算法的收斂速度快,且穩(wěn)態(tài)誤差值也較低,整體的穩(wěn)定性也更好。
圖5 不同算法的MSE對比圖
圖6為單通道系統(tǒng)下不同算法處理后的功率譜。圖6(a)為經(jīng)過傳統(tǒng)FxLMS算法降噪處理后的功率譜,其在中心頻率200 Hz、350 Hz、600 Hz處的幅值下降為13.8 dB。圖6(b)為提出的泄露變步長FxLMS算法經(jīng)過降噪處理后的功率譜,其在中心頻率處的幅值下降為19.6 dB。
圖6 不同算法降噪前后的功率譜
由于單通道的ANC系統(tǒng)的降噪范圍有限,只能實現(xiàn)小范圍內(nèi)的噪聲減小,而有源噪聲控制的目的是提高降噪效果,擴大降噪范圍以及適應(yīng)復雜的環(huán)境,因此引入多通道控制系統(tǒng)進行降噪。多通道ANC系統(tǒng)與單通ANC系統(tǒng)類似[13],有I個初始傳感器、J個次級聲源以及K個誤差傳感器、因此就存留了I×J個初級通道和J×K個次級通道。
本文將以1×2×2的雙通道有源降噪系統(tǒng)為模型,將分別對前文的FxLMS算法和改進的Fx-LMS算法進行分析和對比。
從以上分析可知,雙通道的系統(tǒng)模型1×2×2中,包含1×2個初級聲通道和2×2個次級聲通道,其示意圖[14]如圖7所示。P1(z)和P2(z)分別代表了初級傳感器到誤差傳感器1和誤差傳感器2的聲通道的傳遞函數(shù),同理,S11(z)和S12(z)代表的是次級聲源1分別到誤差傳感器1和誤差傳感器2的次級路徑傳遞函數(shù),S21(z)和S22(z)代表的是次級聲源2分別到兩個誤差傳感器的次級路徑傳遞函數(shù)。
圖7 雙通道系統(tǒng)示意圖
圖8為基于 FxLMS算法的 1×2×2結(jié)構(gòu)圖,圖中有只有一路的信號輸入,兩路次級信號的輸出和四路的次級通道,另外控制器的輸入信號是初始信號與四路次級通道傳遞函數(shù)估計值卷積運算后的信號,根據(jù)前文的單通道FxLMS算法的迭代過程可以寫出這個結(jié)構(gòu)圖中的兩路誤差信號為:
圖8 基于FxLMS算法的1×2×2結(jié)構(gòu)圖
則兩個控制器權(quán)系數(shù)迭代公式為
由式(24)和式(25)可知,在權(quán)系數(shù)迭代更新中每一個控制器都有兩個誤差量來共同調(diào)節(jié),以此達到更好的降噪效果。
雙通道系統(tǒng)與單通道系統(tǒng)相比,其系統(tǒng)的復雜度有所增加,如若采用在線建模的方式,稍有不慎就會造成整個系統(tǒng)的發(fā)散,此時離線建模的優(yōu)點將更明顯地顯現(xiàn)出來,與在線建模相比,其算法的計算量大大減小,算法整體的運行速度和收斂收率也顯著提升,且有效地提高系統(tǒng)的穩(wěn)定性。由于白噪聲的各頻段分量都是恒定的,因而它對次級通道進行建模而言是一種理想的激勵信號,并將獲得的次級通道估計值用于后續(xù)算法之中。
已知多通道系統(tǒng)中存留J×K個次級通道。而需要采用的FxLMS算法由于濾波信號的存在,則要求對所有的次級通道進行補償。因此離線建模需要的次級通道估計模型S?jk(z)也為J×K個。圖9給出了當J=2、K=2時的離線辨識算法結(jié)構(gòu)[15]。
圖9 雙通道系統(tǒng)次級通道建模原理圖
其中v1(n)和v2(n)為雙通道離線建模系統(tǒng)輸入的白噪聲信號,另外,v1(n)、v2(n)經(jīng)過次級通道估計模型S?jk(n)后輸出yvjk(n),而v1(n)、v2(n)經(jīng)過實際次級通道可輸出ypjk(n),在誤差傳感器1和誤差傳感器2位置處,以上兩種次級聲源疊加可分別構(gòu)成誤差信號e1(n)和e2(n),其表達有:
圖9中的f1(n)、f2(n)表示輸入信號經(jīng)過次級通道和次級通道估計模型后輸出信號之間的差值,即:
(1)雙通道次級通路建模
在進行仿真前,需要完成上述原理圖中所有次級通道傳遞函的估計,根據(jù)文獻[16],可設(shè)系統(tǒng)聲通道的傳遞函數(shù),有:
利用本節(jié)提及的白噪聲來檢驗上述次級通道傳遞函數(shù)的可行性,其中建模過程中算法的步長因子同樣為0.01,以次級通道1為例,其結(jié)果如圖10所示,即誤差信號可以很快地收斂于零,證明了所設(shè)置的次級通道傳遞函數(shù)是有效的,且不會造成系統(tǒng)的發(fā)散。
圖10 次級通路建模結(jié)果
(2)雙通道FxLMS算法仿真
仿真的信號參數(shù)和前文的單通道的參數(shù)一樣,則實驗仿真結(jié)果如圖11(a)和圖11(b)所示,在雙通道中,改進的FxLMS算法仍舊比傳統(tǒng)的FxLMS算法的收斂速度更快。
圖11 雙通道兩種算法的仿真結(jié)果
圖12是兩種算法在雙通道系統(tǒng)中降噪前后的功率譜。由圖12(a)圖可得,傳統(tǒng)FxLMS算法在降噪前后位于其中心頻率的降噪量達到為18.2 dB,由圖12(b)知,本文提出的泄露變步長FxLMS算法降噪前后在中心頻率處的降噪量最高達到24.7 dB。即雙通道比單通道的降噪效果好,且基于改進算法的降噪效果比傳統(tǒng)的FxLMS算法降噪效果好。
圖12 雙通道不同算法降噪前后的功率譜
本文提出的泄露變步長FxLMS算法以瞬時誤差向量的平方值作為步長的函數(shù)的輸入信號,經(jīng)仿真結(jié)果表明,在收斂速度和穩(wěn)態(tài)誤差上均有明顯的優(yōu)勢,并且其仿真功率譜表明,經(jīng)過FxLMS算法和泄露變步長FxLMS算法降噪處理后,在單通道中的降噪量分別為13.8 dB和19.6 dB,而在雙通道中的降噪量分別為18.2 dB和24.7 dB,從雙通道ANC系統(tǒng)的降噪量可以表明多通道ANC系統(tǒng)有非常好的降噪效果。但是,對于多通道ANC系統(tǒng)而言計算量是未來進一步需要研究的重點。