現實的語音通信可能發生在嘈雜的噪聲環境中,例如工廠中的手機通訊會受到機器轟鳴聲的影響;火車駕駛室中的語音通信會受到電機運行和鐵軌碰撞聲的干擾。噪聲的統計特性跟現場密切相關,即使同一場合的噪聲統計特性也可能會隨時間發生某種變化,這都要求消噪設備必須具有噪聲跟蹤的自適應能力。自適應信號處理的理論經過40多年的發展和完善,已經在許多領域中得到應用[1,2]。本文將自適應信號處理技術應用于語音通信的噪聲對消,通過仿真研究和樣機實驗對軟硬件參數進行了優化設計,研制了一種適用于手機麥克風、火車駕駛室中使用的自適應對消系統。 1 噪聲對消原理 自適應噪聲對消系統的原理如圖1所示。他有兩個輸入:原始輸入和參考輸入,參考輸入為噪聲源ν1(n),原始輸入為受噪聲污染的信號x(n)=s(n)+ν0(n)。當噪聲成分ν0(n)與信號s(n)不相關、與噪聲源ν1(n)相關時,自適應濾波器AF可以根據誤差信號ej來調整自身濾波器的系數,使其輸出yj趨于原始輸入中的ν0(n),從而使誤差信號0趨于信號s(n)。 最小均方(LMS)算法以其算法簡單、運算量小、實現容易等優點在眾多自適應信號處理算法中占有舉足輕重的地位[3,4],本文的系統設計采用遞推方法實現LMS算法。 自適應濾波器AF在j時刻的輸出表示為: 這里的Wj為j時刻的濾波器系數,Xj為j時刻的濾波器輸入。下一時刻(j+1)的權系數要根據當前時刻j的誤差信號ej進行調整,調整的遞推算法為: 其中μ為步長因子,他影響系統的收斂性,系統收斂的充分條件為: μ值要針對語音通信的實際折衷考慮:μ太小時,權系數收斂慢,不能適應噪聲不平穩的場合;μ太大時,對消效果差,甚至引起系統發散。 2 系統仿真 2.1聲音樣本的獲取 Matlab 7.0的信號處理工具箱提供了從計算機標準音頻設備實時讀取音頻數據的Simulink模塊--From Wave Device,如圖2所示。 圖2中的Signal To workspace將采集的音頻數據保存到Matlab的工作空間。作為示例,本文采集了約0.3 s的人聲作為原始信號,采樣率為16 kHz,其時域波形如圖3所示。 2.2 步長因子優化 用250 Hz的正弦波模擬現場噪聲,考慮到現場噪聲情況,噪聲幅度的取值應與之相當,這里取0.01。將聲音樣本和噪聲疊加作為系統的原始輸入,如圖4所示。 取μ=0.5,采用128階的自適應濾波器進行語音消噪,由圖5可以看出經過0.03 s對消系統的輸出與原始信號相似。 自適應濾波器的Wj,需要迭代多次才能達到理想值即E[ej2]E趨勢于[Eej2)min需要一個過程,鑒于步長因而會顯著影響系統的對消效果,下面重點考察了μ取不同時的學習曲線,如圖所示。 由圖6可以看出: (1)隨著μ值變大,系統的學習速度明顯變快; (2)信號非平穩時,過大的μ值容易引起系統失調,0.1處的均方誤差明顯變大。因而μ的取值應當折衷考率:一方面當噪聲非平穩時,系統的學習時間應小于一個音的平穩時間(約0.1 s);另一方面,盡量減小系統失調。細對比可以發現:μ=0.25時的學習時間已經小于一個節的平穩時間,這比μ=0.1時已經大大改善,所以將長因子取為0.25就可以滿足系統需要。 3 系統實現 3.1 電路設計 自適應對消系統的信號處理器采用TI公司的定點DSP-TMS320VC5509,其內核時鐘可以穩定工作在200 MHz,完成兩次乘累加(MAC)運算僅需要一個指令周期(5 ns)。 3.2軟件設計 自適應濾波對系統的實時性要求很高,因而將權系數遞推、濾波、噪聲對消放在采樣中斷服務程序中完成。軟件設計采用了DSP專門用于自適應濾波的指令LMS,該指令可以在1個指令周期內完成2個并行操作:乘累加(MAC)和權系數遞推。該指令大大提高了代碼效率,增強了自適應信號處理的實時性。 TI-DSP開發環境CCS5000提供了相應的DSP庫Dsplib的支持,庫中包含自適應濾波在內的常規數字信號處理函數,其中絕大部分為匯編代碼,代碼效率高。庫函數提供C語言函數原型聲明,允許C程序直接訪問,降低了數字信號處理編程的難度。 自適應濾波的庫函數對緩沖區首地址的對齊要求嚴格,軟件用偽語句"#pragma DATA SECTION()"對cmd文件的存儲器分配進行了特定的約束,從而更加合理地利用DSP芯片的運算資源。 4 結語 經過反復實驗,樣機已經能在特定的安裝條件下解決語音通信中的去噪問題。 為保證兩通道的噪聲成分具有足夠的相關性,麥克風的安裝間距應小于20 cm,說話人(信號)距離原始輸入端應小于5 cm,否則系統輸出會出現大量未抵銷的不相關的噪聲分量。 實驗中發現,增加原始輸入端的延遲有利于改善噪聲的對消效果。經分析,這與自適應濾波器的工作狀態有關,若參考輸入端的噪聲超前于原始輸入信號(不同步),自適應濾波器實際上是一個預測器,預測的難度比濾波要高些且不容易實現。比較簡單的解決方法是對原始輸入端增加軟件延遲,從而提高了對消系統對噪聲源位置的適應能力。 |