肖夢迪 陳衛(wèi)松 錢隆彥 吳 慧
(安徽師范大學物理與電子信息學院 蕪湖 241000)
有源噪聲控制(Active noise control,ANC)主要應用于低頻噪聲控制領(lǐng)域,其原理是基于聲波的相干相消[1]。目前有源噪聲控制系統(tǒng)應用最廣的算法是FXLMS算法[2],該算法需要預先獲得次級通道的信息,即獲得控制信號到誤差傳感器的傳遞函數(shù)。在ANC系統(tǒng)中,次級通道建模的準確性直接影響系統(tǒng)的降噪性能,次級通道建模分為離線建模和在線建模[3]。在線建模可以保證算法的精確性和實時性,它能對參數(shù)進行實時更新,當次級通道發(fā)生變化時能讓系統(tǒng)快速恢復到穩(wěn)定狀態(tài),但建模信號的引入會影響系統(tǒng)降噪量及收斂速度,同時存在控制信號與建模信號相互干擾的問題[4]。因此,降低建模信號和控制信號的相互影響、減弱建模輔助噪聲對系統(tǒng)的影響,是有源噪聲控制需要考慮的重要問題。
Eriksson 等[5]首次提出利用附加隨機白噪聲作為建模信號,對次級通道進行在線建模的策略。該方法改善了次級通道參數(shù)不能實時更新的缺點,但附加建模信號與控制信號之間存在相互干擾,大大降低了系統(tǒng)的降噪性能。為了減弱主動控制過程對建模過程的影響,Akhtar等[6]提出對次級通道采用變步長最小均方(Variable step size-Least mean square,VSS-LMS)算法,在不增加系統(tǒng)結(jié)構(gòu)復雜度及計算量的情況下,獲得良好的次級通道建模效果,同時也改善了Eriksson 等算法中主動控制信號對建模過程的影響。但Akhtar 等并未考慮建模信號對控制環(huán)節(jié)的影響,以及在系統(tǒng)收斂后,建模步長仍處于較大值,從而影響建模的精確性和系統(tǒng)穩(wěn)定性。Kim 等[7]提出計劃步長歸一化最小均方(Scheduled-step size normalized LMS)算法,利用濾波器的均方差(Mean square deviation,MSD)來調(diào)節(jié)建模步長,使系統(tǒng)根據(jù)不同的狀態(tài)選擇合適的步長值。該算法提升了系統(tǒng)的收斂速度,大大降低了穩(wěn)態(tài)誤差但算法結(jié)構(gòu)復雜,計算量較大,實際應用困難。張麗等[8]提出基于梯度下降的次級通道建模算法,采用控制模塊與次級通道模塊的步長值調(diào)節(jié)相結(jié)合的方式,在次級通道建模過程中對建模步長值進行梯度下降控制,利用檢測函數(shù)使系統(tǒng)選擇合適的建模步長值。該算法提高了系統(tǒng)收斂速度及建模精度,但算法涉及參數(shù)較多,實際調(diào)節(jié)困難,且未考慮附加輔助噪聲對系統(tǒng)的影響。陳力等[9]提出一種新的變步長建模算法,將在線建模與控制模塊的步長調(diào)節(jié)相結(jié)合,減弱了兩者的相互影響,降低了系統(tǒng)的建模誤差。但該算法未對附加輔助噪聲進行控制,因此降噪量較低。
Xiao 等[10]提出對附加白噪聲進行控制的策略,對建模步長值進行分段調(diào)控,并設(shè)置相應閾值,當步長值及誤差值同時達到指定閾值時停止注入輔助噪聲。該算法在降噪量和收斂速度方面均有較大提升,但算法涉及參數(shù)較多,環(huán)境發(fā)生變化時,需要重新調(diào)節(jié)閾值。袁軍等[11]提出另一種針對附加白噪聲進行控制的方法,利用誤差函數(shù)來判斷ANC系統(tǒng)的狀態(tài),當系統(tǒng)達到穩(wěn)定狀態(tài)時停止注入輔助白噪聲,當系統(tǒng)發(fā)生突變時再重新注入輔助噪聲進行建模。該方法提高了次級通道的收斂速度及建模精度,但未考慮建模信號對控制模塊的影響,從而導致建模誤差不穩(wěn)定且誤差值較大。
以上算法均未同時考慮附加建模信號對系統(tǒng)的影響以及建模信號與控制信號的相互影響。本文提出一種基于能量比調(diào)控的次級通道在線建模方法,改善建模信號與控制信號的相互影響,同時降低附加白噪聲給系統(tǒng)帶來的誤差。
在文獻[6]采用變步長進行次級通道建模,算法框圖如圖1所示。P(n)為初級通道,S(n)為次級通道,仿真實驗時常用傳遞函數(shù)來模擬這兩個物理通道。x(n)是輸入?yún)⒖夹盘柤丛肼曉矗琩(n)為x(n)通過P(n)輸出的期望信號。為x(n)經(jīng)建模濾波器而得的輸出信號,該信號為控制環(huán)節(jié)的輸入信號。其中e(n)為該系統(tǒng)的殘余誤差信號,f(n)為建模濾波器及主濾波器的誤差信號,兩者能量分別定義為Pe、Pf,如式(1)、式(2)所示,兩者之比為ρ(n),如式(3)所示。式(4)中μsmin為最小建模步長值,μsmax最大建模步長值,其值由實驗得出。
圖1 文獻[6]算法結(jié)構(gòu)圖Fig.1 The sketch of the algorithm in Literature [6]
該算法的建模步長值隨著ρ(n)的變化進行調(diào)整,d(n)?ys(n)為控制環(huán)節(jié)對建模環(huán)節(jié)的影響。在系統(tǒng)初始階段,控制模塊并未開始收斂,因此d(n)?ys(n)的誤差較大,此時P[d(n)]?P[vs(n)],即有ρ(n)≈1,為了保持建模環(huán)節(jié)及控制環(huán)節(jié)的穩(wěn)定性,建模步長值應采用小步長。隨著系統(tǒng)逐漸收斂,d(n)?ys(n)逐漸變小,控制模塊的能量逐漸減弱,建模信號對控制模塊的影響逐漸變大,ρ(n)約為0,此時建模步長值應采用較大值。文獻[6]算法的調(diào)節(jié)公式如下:
文獻[6]算法提高了系統(tǒng)建模精度,但該法并未考慮建模信號對控制信號的影響以及附加輔助噪聲給系統(tǒng)帶來的誤差。同時當系統(tǒng)收斂時,次級通道建模步長值仍處于較大值,對系統(tǒng)的建模準確性及穩(wěn)定性造成了一定的影響。
為改善文獻[6]算法中控制模塊和次級建模模塊更新的相互影響以及附加輔助噪聲對系統(tǒng)的影響,本文提出一種基于能量比調(diào)控的在線建模有源噪聲控制算法。改進算法如圖2虛線框內(nèi)所示。
圖2 改進算法結(jié)構(gòu)圖Fig.2 The sketch of improved algorithm
圖中附加白噪聲v(n)是建模環(huán)節(jié)的輸入信號,v(n)和控制信號y(n)經(jīng)過次級通道產(chǎn)生vs(n)和ys(n),輸出ys(n)?vs(n),在建模環(huán)節(jié)v(n)經(jīng)過輸出。C(n)為步長值檢測函數(shù),G(n)是對輔助噪聲進行控制的條件。式(6)為控制環(huán)節(jié)自適應濾波器W(n)的更新公式,式(7)是建模濾波器的更新公式[5]。
由文獻[6]算法可知,在降噪初始階段,控制模塊對建模系統(tǒng)影響較大。隨著系統(tǒng)的收斂,控制模塊能量逐漸降低,建模信號對控制模塊的影響變大。因此,建模步長值μs(n)應逐漸變大,控制模塊步長值μw(n)逐漸減小??紤]到參考輸入信號的強度對系統(tǒng)的影響,輸入信號能量增加會導致系統(tǒng)發(fā)散,信號能量減小時,較小的步長值又會降低降噪量和收斂速度,因此步長值應與輸入信號能量呈反向關(guān)系。因此本文對控制模塊μw(n)的更新方式調(diào)整為
其中,β、?為固定參數(shù),ε為避免分母為零而設(shè)置的大于零的修正因子,此處取為0.2。
在線模塊步長值μs的更新方式為[8]
其中,a、b、μ為固定參數(shù),ρ(n)為本次運算所得能量值,ρ(n?1)為上次運算所得的能量值。
在上述系統(tǒng)收斂過程中,在線建模步長值μs(n)由小到大變化,但較大步長值會影響建模精度,降低系統(tǒng)穩(wěn)定性,甚至導致系統(tǒng)發(fā)散。因此,為了獲得較好的穩(wěn)定性和建模效果,需對建模步長值進行分段調(diào)控。前期步長值隨能量比增加而增大,后期應減小步長值,步長值的減小程度需要根據(jù)系統(tǒng)實際來確定。本文利用tanh函數(shù)來控制步長值,使其隨著tanh函數(shù)的變化而減小。信號能量比ρ(n)的值起始在1附近,隨著系統(tǒng)的收斂逐漸減小至0。tanh函數(shù)在(1,0)范圍內(nèi)呈單調(diào)遞減趨勢,且最大值不超過0.6。因此在該范圍內(nèi),步長值滿足次級通道建模的要求。
本文利用建模精度來檢測步長值是否需要調(diào)整,同時設(shè)置閾值T,其為系統(tǒng)接近收斂時的建模誤差值。圖2中C(n)為在線建模精度的實時值,將其作為檢測函數(shù),S代表系統(tǒng)建模誤差。函數(shù)表達式為
基于步長值減小的次級通道建模具體方法為:在系統(tǒng)初始階段步長值采用μs(n)的形式,收斂過程中,當檢測函數(shù)C(n)>T時,建模步長值采用μs1(n)的形式,從而實現(xiàn)對步長值μs(n)的下降。反之,則繼續(xù)采用原步長值μs(n),計算公式如式(9)所示。μs1(n)表達式為
其中,ε1為避免分母為0 而設(shè)置的大于零的修正因子,此處取為0.04。對函數(shù)進行平方是為了避免步長出現(xiàn)負值的情況。
在次級通道建模中當系統(tǒng)達到穩(wěn)定狀態(tài)時,將控制模塊和在線建模兩者步長值調(diào)節(jié)方式相結(jié)合,μs(n)和μw(n)均收斂到某個固定范圍內(nèi)。若此時再不斷注入附加白噪聲,會增大系統(tǒng)誤差,降低系統(tǒng)的降噪量。因此,本文對附加噪聲進行控制,當系統(tǒng)達到穩(wěn)態(tài)時,停止附加白噪聲的注入。若次級通道發(fā)生突變,則重新加入附加白噪聲,啟動次級通道建模。改進框圖如圖2所示,調(diào)節(jié)準則如下:
在停止注入附加白噪聲后,若次級通道再次發(fā)生變化則重新加入附加白噪聲。根據(jù)殘留誤差功率判斷次級通道的變化[12]:
其中,Pe為殘余誤差信號的能量,計算公式如式(1)所示。具體調(diào)節(jié)準則為:當建模步長值等于μ1且誤差功率滿足式(14)的要求時G(n)為0,即此時的附加白噪聲為0;反之G(n)為1,繼續(xù)注入附加噪聲。μs為次級通道建模步長值,μ1是當系統(tǒng)未對輔助噪聲進行控制時,仿真實驗中系統(tǒng)接近收斂時的建模步長值。
為驗證改進算法的性能,以混頻信號作為輸入信號,在MATLAB中將文獻[6]算法、文獻[8]算法和本文算法進行仿真實驗。建模誤差?S反映系統(tǒng)在線建模的收斂性及精度,降噪量R反映系統(tǒng)的降噪效果,其表達式分別為
控制濾波器長度和建模濾波器長度分別設(shè)置為32和16。因兩者均為物理通道,從信號處理的角度,兩通道的傳遞函數(shù)可表示如式(18)所示[13],為體現(xiàn)仿真比較的一致性,改進算法中兩通道參數(shù)hk的設(shè)置與文獻[8]相同。初級通道和次級通道的傳遞函數(shù)分別設(shè)置如下:
初級聲源為50 Hz、150 Hz、300 Hz的單頻信號等幅組合后疊加白噪聲信號,信噪比為30 dB。次級通道建模所需輔助信號為均值為0、方差為0.05的高斯白噪聲。文獻[6]和文獻[8]參數(shù)均按照各自原文設(shè)置。多次實驗得出進行步長下降時的建模誤差S,以及系統(tǒng)達到穩(wěn)態(tài)時的建模定步長μ1分別為1×10?6、1×10?3。其他參數(shù)設(shè)置如表1所示。
仿真結(jié)果如圖3所示,圖中縱坐標是系統(tǒng)的建模誤差。文獻[6]算法最終達到的建模誤差值和本文算法相似。文獻[8]算法中將步長值分為3段,使得建模步長更適應于系統(tǒng)實際需求,因此該算法的建模誤差最終能達到一個較為精確的值。在次級通道辨識過程中,次級通道模型參數(shù)能夠快速收斂到一個比較接近真實模型的值,比收斂到十分精確的值更重要。從圖3中看出,3種算法均收斂至30 dB以下,此時系統(tǒng)已十分接近真實模型,系統(tǒng)建模誤差對控制算法的影響較小。而本文改進算法在迭代至2500次時系統(tǒng)已接近收斂,而另外兩種算法迭代至5000次時才接近收斂,表現(xiàn)了改進算法更加優(yōu)越的收斂性能。
圖3 混頻信號下的次級通道建模誤差Fig.3 The modeling error of secondary path in mixed signals
圖4是3種算法的系統(tǒng)降噪量隨迭代次數(shù)的變化關(guān)系,由仿真圖知,文獻[6]算法采用變步長的策略,但后期未對步長值進行控制,系統(tǒng)殘余誤差較大,從而導致降噪量較小。而文獻[8]算法采用步長值下降的策略,使得系統(tǒng)降噪量得到提升,但該算法并未考慮系統(tǒng)穩(wěn)定后,附加白噪聲會降低系統(tǒng)的降噪性能的問題,因此降噪量未能取得較大值。本文將步長值進行分段調(diào)控,并對附加噪聲進行控制,降低了系統(tǒng)的殘余誤差,使得降噪量接近23 dB,由降噪量的計算公式可得此時系統(tǒng)的殘余誤差接近為0,同時改進算法在降噪量和降噪速度上均優(yōu)于另外兩種算法。
表1 3種算法的參數(shù)設(shè)置Table1 Parameters setting of the three algorithms
圖4 混頻信號下3種算法降噪量對比Fig.4 Comparison of noise reduction of the three algorithms in mixed signals
在實際情況中,次級通道并不是一成不變的,而是隨時間不斷變化。這就需要控制算法可以快速跟蹤這種變化。為體現(xiàn)系統(tǒng)的時變能力,假設(shè)系統(tǒng)迭代至一定次數(shù)時次級通道發(fā)生突變,其他仿真條件和3.1節(jié)相同。次級通道的傳遞函數(shù)為[8]
圖5為系統(tǒng)迭代至30000次時發(fā)生突變,3種算法的次級通道建模誤差變化情況。由圖可看出,開始控制時,3種算法的建模誤差迅速下降,獲得較為精確的次級通道模型。發(fā)生突變后,改進算法通過誤差能量比自適應調(diào)節(jié)步長值,使系統(tǒng)快速恢復至穩(wěn)態(tài),恢復速度快于另外兩種算法,同時仍保持其較快的收斂速度。
圖5 次級通道突變時的建模誤差Fig.5 The modeling error when the secondary path changed abruptly
圖6為系統(tǒng)迭代至30000次時,3種算法的系統(tǒng)降噪量變化。相較于其他兩種算法,本文算法依舊保持較快的降噪速度和較高的降噪量。由以上仿真結(jié)果得,本文在降噪量、降噪速度和系統(tǒng)收斂性能方面都大有改進。與文獻[6]算法相比,計算量有所增加,因涉及下降閾值較少,計算量小于文獻[8]算法。
圖6 次級通道突變時的降噪量Fig.6 The noise reduction when the secondary path changed abruptly
由均值為0、方差為1的高斯白噪聲通過通帶為100~400 Hz帶通濾波器產(chǎn)生寬帶信號[14],將其作為參考信號,仿真條件及參數(shù)與3.1相同,仿真結(jié)果如圖7和圖8所示。
圖7 寬帶噪聲下的次級通道建模誤差Fig.7 The modeling error of secondary path in broad-band noise
圖7為算法建模誤差的比較,由仿真結(jié)果看出,改進算法的建模誤差未受影響,仍保持較快的收斂速度同時波動性較小,從而使系統(tǒng)較為穩(wěn)定。圖8為算法降噪量的比較,本文算法與已有算法相比降噪量提高了約10 dB,當?shù)?000次時,其他兩種算法降噪量已達到穩(wěn)定狀態(tài),而改進算法的降噪量仍在持續(xù)增加。因此得出,改進算法對于寬帶噪聲的控制效果優(yōu)于現(xiàn)有算法。
圖8 寬帶噪聲下3種算法降噪量對比Fig.8 Comparison of noise reduction of the three algorithms in broad-band noise
基于文獻[6]次級通道建模算法,本文提出一種利用建模濾波器和主濾波器的誤差信號能量比調(diào)控步長值與附加噪聲的方法。通過對步長值的分段調(diào)控提高系統(tǒng)的建模收斂速度,當系統(tǒng)接近穩(wěn)態(tài)時,停止附加噪聲,從而增大降噪量。仿真結(jié)果表明對于低頻噪聲控制,改進算法與現(xiàn)有算法相比,降噪量高于原算法且達到收斂所需的迭代次數(shù)遠小于已有算法,即改進算法具有收斂速度快和降噪量大的優(yōu)點。當次級通道發(fā)生突變時,改進算法通過步長函數(shù)將步長值調(diào)節(jié)至最佳值,使系統(tǒng)保持穩(wěn)態(tài),同時仍保持較快的收斂速度和較高的降噪量。由于本文算法采用信號能量比來調(diào)節(jié)建模步長值的下降,故步長值下降后不能穩(wěn)定于某一定值,所以建模誤差最終未能達到一個十分精確的值。后期需要在該方面進一步的研究改進。