DSP(Digital Signal Processor,數字信號處理器)是在模擬信號變換成數字信號以后進行高速實時處理的專用處理器件,DSP具有接口簡單、方便;jing度高、運算速度快、穩定性好;編程方便,容易實現復雜的算法;集成方便等優點,已經被廣泛的應用于通信、雷達、語音、圖像、消費類電子產品等領域。DSP技術的發展和應用,使得自適應信號處理技術得以實現。自適應噪聲消除是消除強背景噪聲的一種有效的技術,在通常情況下,背景噪聲不是穩定不變的,而是隨著時間的變化而變化。因此,噪聲消除應該是一個自適應噪聲處理過程:既可以在時變的噪聲環境下工作,還可以根據環境的改變而調整自身的工作參數。在本文中,利用DSP的優越性能,在TI公司TMS320VC5416芯片上,分別實現LMS和RLS算法的自適應強噪聲消除系統,該系統經過驗證,能夠很好地消除背景噪聲,恢復出原始話音信號。
1 自適應噪聲消除算法
自適應噪聲消除算法的基本思想是將噪聲混雜的信號通過一個濾波器來達到抑制噪聲,并使信號本身無失真通過的這樣一個過程。并且,正如上面所述,這個自適應處理過程不需要預先知道信號以及噪聲的特點。圖1為自適應噪聲消除算法的原理框圖。
為了實現這個自適應噪聲消除系統,這里使用2個輸入源和1個自適應濾波器。一個輸入源是混入了噪聲的信號(稱之為主輸入源,用s十n0表示),另一個輸入源為背景噪聲,這個背景噪聲與主輸入源噪聲相關,而與主輸入源中的信號無關(稱之為噪聲參考輸入源,用n1表示),噪聲參考輸入源通過自適應濾波器后輸出yo濾波器不斷地自我重新調整,使得y與n0的誤差達到很小。然后用主信號源減去輸出y得到系統的輸出z=s n0-y,z即去噪后的信號。

假設s,n0,n1,y是平穩過程,并且均值為0,s與n0和n1無關聯,而n1和n0相關,則可以得出以下的表達式:

當調整濾波器,使得E[z2]達到很小值時,E[(n0-y)2]也是很小值,因此,系統輸出z可以作為自適應濾波器的誤差信號。
文中的自適應濾波器采用2種自適應濾波算法:一種是很小均方算法(LMS),另一種是RLS算法。
很小均方算法(LMS)應用很廣、算法很簡單。LMS算法主要目的是使誤差信號的均方值達到很小。自適應濾波器的系數由下式決定。

其中,P(i)是第i個自相關矩陣的逆;k(i)是第i個增益向量;λ是指數型遺忘因子。從算法中矩陣的運算可以看出來,RLS算法比LMS算法要復雜得多。對于一個N階的濾波器,LMS算法每次迭代需要O(N)次運算,而RLS算法需要O(N2)此運算。在DSK方式實現時,發現在48 kHz的采樣率下,采用LMS算法設計的濾波器的階數很多20階,而在同樣的條件下,采用RLS算法設計的濾波器的階數只有5階左右。
2 DSP實現
本文的自適應噪聲消除算法處理器件采用TI的TMS320VC5416型DSP處理器。該處理器采用改進的哈佛結構,擁有專用的硬件乘法器和專門為數字信號處理而設計的指令系統,快速的指令周期等優點。由于聲音是模擬信號,要使用DSP對其進行處理,首先需要將模擬信號進行模/數轉換,本文采用MAX197作為A/D轉換芯片。MAX 197是Maxim公司推出的8通道、12位的高速A/D轉換芯片,單次轉換時間僅為6μs,采樣速率可達100 kSa/s。經過噪聲消除后的信號質量可以通過音箱來辨別,因此,在噪聲消除后,還要將信號進行數/模轉換。本文采用MX7541作為系統的D/A轉換芯片。MX7541是美國Maxim公司生產的高速高jing度12位數字/模擬轉換器芯片,由于MX7541轉換器件的功耗特別低,而且其線性失真可低達0.012%,因此,該D/A轉換器芯片特別適合于精密模擬數據的獲得和控制。
本文的自適應噪聲消除系統結構圖2所示。
麥克風1用于采集帶有強烈背景噪聲的話音信號作為系統的輸入1,麥克風2用于采集背景噪聲作為輸入2,輸入1和輸入2經過音頻接口輸入到MAX197中進行A/D轉換,轉換后的信號被送入TMS320VC5416中進行自適應噪聲消除處理,處理后的信號經過MX7541的D/A轉換后,送入音箱進行播放。另外,還可以通過計算機和Matlab軟件來比較自適應噪聲消除系統的輸入/輸出信號,驗證自適應噪聲消除系統工作情況。

圖3為3臺計算機記錄的自適應噪聲消除系統的工作情況:
比較主輸入信號、參考噪聲輸入信號和濾波器輸出信號,可以清楚地看出輸出與主輸入信號相比,噪聲成分被大大削弱,這與用音箱直接聽到的聲音效果一致,以上結果證明用DSP成功地實現了實時的自適應噪聲消除系統。
3 結 語
本文采用TI的TMS320VC5416型DSP成功地實現了自適應噪聲消除系統,試驗的結果顯示LMS算法和RLS算法是去除噪聲的自適應濾波器非常有效的方法,DSP板也是實現實時自適應噪聲消除系統的好平臺。在整個系統工作過程中,仍有少量的背景噪聲不能完全從信號中去除掉,為了測試算法的效果,用Matlab產生一個白噪聲信號作為噪聲參考信號,同時將參考噪聲信號進行微小扭曲后與從麥克風輸入的語音信號疊加后作為主輸入信號,然后用前文所述的實現方式對主輸入信號和參考噪聲信號進行自適應噪聲去除算法處理。在處理后,噪聲完全從信號中去除掉了,由此,可以看出,背景噪聲不能完全從信號中去除掉問題不是由算法造成的,而是由于試驗設備造成的。麥克風、電纜以及采樣造成會造成信號扭曲,而這些扭曲在噪聲去除算法中是無法補償的,因此其可能是造成這個問題的很可能原因。 |