語音降噪(LMS,譜減法和維納lvbo)
文章為轉載,原來地址:
http://blog.csdn.net/kaixinshier/article/details/72477679?locationNum=5&fps=1
概述:現實生活中,語音訊號一般都帶有噪聲,在進一步處理訊號前(如語音識別,語音編碼),往往要對訊號進行降噪,本文介紹幾種簡單的降噪演算法:自適應濾波器/譜減法/維納濾波法。隨著信噪比的減小,降噪方法處理的效果也隨之變差,也經常使得語音丟字或者波形失真。如何在低信噪比情況下,達到不錯的降噪效果,是一個值得探究的問題。
一. LMS自適應濾波器降噪
1.1. 基本原理
LMS自適應濾波器,利用前一刻已獲得的濾波器引數,自動調節當前濾波器引數,以適應訊號和噪聲未知的或隨機變化的統計特性,從而實現最優濾波。
1.2. 原理概述
輸入訊號序列xi(n),期望輸出訊號d(n),定義誤差訊號為:
其中wi為權係數。
LMS演算法的本質就是尋找最優的權係數wi,使得誤差訊號e(n)最小。
經過一系列推導,得到權係數的迭代公式:
使用最陡下降法,那麼LMS演算法的關鍵問題就變為收斂因子μμ和梯度因子的求解。
(1). 收斂因子μμ控制收斂的速率,其取值範圍:
其中λλ為相關矩陣的最大特徵值。當它趨於無窮大,加權適向量收斂於最優維納解。
(2).梯度因子
近似計算得到梯度因子表示式:
因此權係數最終表達為:
1.3. 演算法實施步驟
設定濾波器W(k)初值:
計算濾波器實際輸出的估計值:
- 計算估算誤差:
- 更新k+1時刻濾波器係數
- k變為k+1,重複步驟2-4
1.4. MATLAB模擬結果
說明: 加入白噪聲訊號,信噪比設定為snr = 5,降噪前後的信噪比為:
二. LMS的自適應陷波器
2.1. 基本原理
自適應陷波器法適用於單色干擾噪聲,如單頻正弦波噪聲,希望陷波器的特性理想,缺口的肩部任意窄,可馬上進入平坦區域。
2.2.原理概述
拿有兩個權係數的濾波器為例,輸入訊號為純語音和單頻干擾的疊加:
取樣後,
其中,
參考輸入為標準正弦波和餘弦波的疊加,
x1, x2可以構成任意幅度和相位的正弦波y(n)。
通過LMS自適應係數調整,使y(n)在幅度和相位與原始輸入的單頻干擾相同,從而清除單頻干擾訊號,達到陷波效果。
2.3. MATLAB模擬結果
說明:加入信噪比為snr = 5的單頻噪聲,濾波前後信噪比數值大小:
三. 基本譜減法
Tip: 由於基本譜減法帶來明顯噪聲殘留,需要進行演算法改進。
3.1. 基本原理
語音訊號處理最常用的方法,在頻域進行降噪。
3.2. 演算法步驟
語音訊號對相位不靈敏,將譜減前的相位資訊用到譜減後的訊號中,在求出譜減後的幅值之後,結合相角,就能用IFFT求出譜減後的語音訊號。
3.3. MATLAB模擬結果
說明:加入信噪比為snr = 5的白噪聲,降噪後聽到明顯的噪聲殘留。
所以需要在譜減法的基礎上做一些改進,傳統的方法包括S.F.Boll提出的方法,E.Zavarehei根據其理論寫了MATLAB函式 SSBoll79。具體細節這裡就先不讓談。
四. 維納濾波降噪
4.1. 基本原理
維納濾波器降噪即設計一個數字濾波器h(n),使得輸入的帶噪語音訊號與純淨語音訊號的誤差滿足LMS準則
4.2. 當輸入為y(n)時,濾波器輸出為:
根據最小均方誤差準則,要使得:
取極小值。
經過一系列推導,得到維納濾波器譜估計器:
引入先驗信噪比和後驗信噪比,定義:
譜估計器可以進一步寫成:
(基於先驗信噪比的維納濾波器譜估計器)
(基於後驗信噪比的維納濾波器譜估計器)
引入平滑引數得到先驗信噪比和後驗信噪比的關係:
表明由滴i-1幀的先驗信噪比和第i幀的後驗信噪比,就可求出第i幀的先驗信噪比,一旦已知本幀的先驗信噪比,就能匯出本幀的維納濾波器傳遞函式Hi(k)。
進一步可匯出維納濾波器的輸出:
4.3. MATLAB模擬結果
說明: 輸入信噪比為10dB的白噪聲,降噪前後的信噪比:
參考文獻
[1]. 宋知用. Matlab在語音訊號分析與合成中的應用[M]. 北京:北京航空航天大學出版社:2013.