基于LMS最小均方誤差法的語音降噪北工大_第1頁
基于LMS最小均方誤差法的語音降噪北工大_第2頁
基于LMS最小均方誤差法的語音降噪北工大_第3頁
基于LMS最小均方誤差法的語音降噪北工大_第4頁
基于LMS最小均方誤差法的語音降噪北工大_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、信號處理與分析課程設計報告 第 19 頁 共 19 頁信號處理與分析課程設計報告 項目名稱:基于LMS最小均方誤差法的語音降噪姓名:07021102 臺斯瑤 07021106 王金泊指導教師:李如瑋目錄一、課題背景和簡介2二、訓練目的3三、訓練內容3四、最小均方差LMS實現自適應濾波器的方法介紹3五、實驗設計及實施過程41、濾波器結構設計52、高斯白噪聲的實現方法63、LMS算法的實現8六、實驗結果分析9七、從實驗中分析LMS算法的缺點11八、實驗完整程序12九、參考文獻15十、特別鳴謝16一、課題背景和簡介本課題是根據電子信息類本科生信號處理和分析課程的學習內容和語音信號處理的實際應用相結合

2、而設計的實踐性訓練。課程訓練以數字信號處理為基礎,在掌握基本原理的同時,理解語音信號的相關知識并結合實際應用實現對語音信號的分析和處理。濾波是一種數字信號處理操作,其目的是為了處理某個信號,以便提取出輸入信號中所包含的期望信息。在數字信號處理課程中,我們基本掌握了一些線性濾波器的設計方法,有固定的規范可遵循。而在我們的實際生活中,充滿了偶然和隨機,時不變濾波器已不能夠滿足更好效果的濾波。在這種情況下,我們就需要自適應濾波器。可以看到,隨著數字超大規模集成技術的發展,自適應濾波技術在很多領域得到了廣泛應用。最小均方算法是一種搜索算法,他通過對目標函數進行適當的調整,簡化了對梯度相量的計算。由于其

3、計算簡單性,LMS算法以及其它一些相關算法已廣泛應用于自適應濾波的各種應用中。而LMS算法是自適應濾波理論中應用最廣泛的算法。這主要歸因于其地計算復雜度、在平穩環境中的收斂性、其均值無偏地收斂到維納解以及利用有限精度算法實現時的穩定特性等等。對LMS最小均方算法的學習,將加深我們對數字信號處理課程的理解,同時對我們今后濾波技術的應用奠定了鞏固的基礎。二、訓練目的1.通過利用c程序實現數字信號處理的相關功能,鞏固對信號處理原理知識的理解,提高實際編程和處理數據的綜合能力,初步培養在解決信號處理實際應用問題中所應具備的基本素質和要求。2.培養研發能力,通過設計實現不同的信號處理問題,初步掌握在給定

4、條件和功能的情況下,實現合理設計算法結構的能力。3.提高文獻整理和資料查詢的能力。通過課下對相關語音知識的學習和理解,培養快速解決實際問題的能力,并在文獻整理的過程中學會科技文獻的寫作,提高語言表達能力。三、訓練內容根據語音信號的特點,利用不同信噪比的高斯白噪聲對語音進行加噪,利用LMS最小均方誤差法設計實現自適應濾波器,并討論語音狀態變化下的收斂情況。四、最小均方差LMS實現自適應濾波器的方法介紹自適應濾波器是符合某種準則的最佳濾波器。它是通過對環境進行學習,逐漸達到或逼近最優濾波器。由于學習過程中有“導師”存在,因此它是一種具有監督學習功能的過程。當濾波器的應用環境發生緩慢變化時,相當于濾

5、波器應用于非平穩環境,但環境變化比學習速度更緩慢時,自適應濾波器能夠自適應地跟蹤這種非平穩變化。開始時,給FIR濾波器賦予任意的初始權系數,在每個時刻,用當前權系數對輸入信號進行濾波運算,產生輸出信號,輸出信號與期望響應的差定義為誤差信號,由誤差信號與輸入信號矢量一起構造一個校正量,自適應地調整權矢量,使誤差信號趨于降低的趨勢,從而使濾波器逐漸達到或接近最優。LMS最小均方誤差的方法是由最速下降法推導而出。最速下降法需要求出其梯度的精確值,要求輸入信號和期望信號平穩,且 (Rak=抽頭輸入向量u(n)與期望響應d(n)的互相關向量;Rxx=抽頭輸入向量u(n)的相關矩陣;W=抽頭權向量)要首先

6、估計 和 ,這給具體實現帶來很大困難,因此該算法還不是真正意義的自適應濾波算法,但討論最陡下降法是有意義,由最陡下降法可以很直觀地導出一類自適應濾波算法 - LMS算法。LMS算法的基本思想:調整濾波器自身參數,使濾波器能夠自適應地跟蹤這種輸入信號的變化,實現最優濾波。當橫向濾波器運行在實數據的情況下,該算法大體上可描述為:抽頭權向量更新值=老的抽頭權向量值+學習速率參數*抽頭輸入向量*誤差信號其中誤差信號定義為期望向量與抽頭輸入向量所產生的橫向濾波器的實際向量之差設輸入信號為u(n),LMS算法理論推導過程如下:濾波器輸出y(n)為: (1)由誤差定義得: (2)使用最小均方誤差法,得代價函

7、數為均方誤差為: (3)式(3)中J 是濾波器的系數k w (k = 0,1,2,)的函數。通過選擇最優的系數,使J 達到最小值。定義梯度向量為J , (4)另外,最陡下降迭代方程為:w(n +1) = w(n) J (n) (5)LMS 是直接利用單次采樣數據獲得的e2 (n)來代替均方誤差J (n),從而進行梯度估計,每次迭代時計梯度估計為: (6)式(6)代入式(5),得到系數向量自適應迭代法:w(n +1) = w(n) J (n) = w(n) + 2e(n)u(n) (7)式(7)稱最小均方自適應算法LMS。五、實驗設計及實施過程 自適應濾波器的基本原理:所謂自適應濾波,就是利用前

8、一時刻已經獲得的濾波器參數的結果,自動的調節顯示課的濾波器的參數,以適應信號和噪聲未知的或隨時間變化的統計特性,從而實現最優濾波。自適應濾波器實質上就是一種能調節器自身傳輸特性已達到最優的維納濾波器。自適應濾波器不需要關于輸入信號的先驗知識,計算量小,特別是用于實時處理。 由于無法預知信號和噪聲的特性,必須設計自適應濾波器,以跟蹤信號和噪聲的變化。自適應濾波器的特性變化是由自適應算法通過調整濾波器系數來實現的。一般而言,自適應濾波器有兩部分組成,已是濾波器的結構,二是調整濾波器系數的自適應算法。本實驗的濾波結構采用FIR濾波器設計,自適應算法采用LMS最小均方差算法。總體結構圖如圖1圖 11、

9、濾波器結構設計FIR濾波器原理FIR濾波器的數學表達式為 (8)式中:N為FIR濾波器的抽頭數;x(n)為第n時刻的輸入樣本;h(i)為FIR濾波器第i級抽頭系數。在本實驗中,即為w(n);其相應的z變換為: (9) 式中:z-i為N-1階多項式。普通的直接型FIR濾波器結構如圖2所示。圖2 FIR濾波器直線型結構 在本實驗中,抽頭系數會根據每一次的輸出進行自適應修改。程序實現對輸入信號xi和濾波系數wi進行時域的卷積和,求出輸出信號y.for(i=0;i<BUFLEN;i+) y=y+xi*wi; /實際輸出信號的合成 2、高斯白噪聲的實現方法高斯白噪聲的原理高斯白噪聲:具有高斯分布的

10、噪聲就成為高斯噪聲,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。在本實驗中,我組針對高斯白噪聲的特點進行了程序的設計。首先確定的我們需要的白噪聲的期望值、方差、和噪聲數組的長度,通過一個專門產生白噪聲的種子文件進行設計,利用如下公式,最終得到了所需要的白噪聲信號。根據定理:設為n 個相互獨立的均勻分布的隨機數,其期望為,方差為,有中心極限定理可知(如果n個獨立隨機變量的分布式相同的,并且具有有限的數學期望和方差,當n無窮大時,它們之和的分布趨近于高斯分布;即使n個獨立隨機變量不是相同分布的,當n無窮大時,如果滿足任意一個隨機變量都不占優或對和的影響足夠小,那么它們之和的分布仍然趨于高斯

11、分布),當n充分大時,有 (10)程序實現方法for(k=0;k<=n-1;k+) t=0.0; for(i=1;i<=12;i+) /取=1/12次 *r=(*r)*w+v; /求r,s=65536.0; w=2053.0;v=13849.0; *r=*r-m*s; /求整數后余下的數 t=t+(*r)/s; /累加到t中 ak=u+g*(t-6.0); /放到ak中,產生高斯白噪聲過程 信噪比的改變 為了測試噪聲信號的改變對LMS算法最終效果的影響,我組對噪聲信號進行了信號能量強度處理。處理方法即使通過給已產生的信號乘上一個系數,通過系數值的改變來調節信號的能量。系數值得計算方

12、法為 (11)式中,SNR為信噪比,es為原始聲音的均值,ns為噪聲的均值。程序實現:snrate=sqrt(es/ns/pow(10,SNR/10); /開根號 pow 計算10的SNR/10次方的值,求能量,為了達到信噪比20DB而乘上的系數,SNR為信噪比3、LMS算法的實現 LMS最小均方差算法的原理已在前文給出。本實驗就以該原理為基礎進行設計。在此不多贅述。需要注意幾點: LMS的收斂性LMS算法的收斂因子必須在如下范圍內選取: (12)0<<2/(MSmax) 其中Smax是抽頭輸入u(n)的功率譜密度的最大值,而濾波器長度M為中到大在滿足收斂條件下,才有 (13)即,

13、值得合理選取確保了系數向量的平均值接近于最優系數向量W。實際中,通常選得很小,選 (14)在實驗中,選定N=10實驗程序為:mu=mu+sn*sn;mu=1/(10*(mu); /sn為加噪信號,即為式(14)中x 抽頭系數的自適應改變抽頭系數的自適應改變是LMS算法中的一個重要部分,沒有他的改變,自適應也就無從談起。我們設計的濾波器權系數控制電路如圖3 圖3 FIR 濾波器中第個權系數的控制電路圖根據權系數的計算方法 (15)我們得到程序設計:for(i=0;i<BUFLEN;i+) wi=wi+e*xi*mu; /做下一信號的權值 初始化抽頭權向量為0六、實驗結果分析 圖 4 原始聲

14、音信號頻譜圖圖5 高斯白噪聲頻譜圖圖6 加噪聲之后的頻譜圖 圖7 濾波后的語譜圖Map1Map2Map3圖8 matlab 仿真圖Map1 原始聲音 Map2 加了噪聲后的語音Map3 降噪后的語音七、從實驗中分析LMS算法的缺點LMS保證算法收斂并減少失調系數,通常把收斂因子取得比較小,這樣使它存在收斂慢的缺點;如果值取的過大,可以快速達到收斂,但是很大程度上影響系統穩定度。另外,在具體實現權系數調整時,運算精度非常重要,因為該算法對抽頭輸入相關矩陣條件數(矩陣的條件數定義為最大特征值與最小特征值之比)的變化比較敏感。要求所用的乘法器和加法器有很高的精度,這樣增加了成本,降低了運算速度,針對

15、這些問題,國內外提出了一些改進算法。如LMS2算法、LMSQ算法、MLMS(修正的LMS)算法、TDO和LMF算法等。 并且,LMS算法是對誤差的一種跟蹤,所以對于處理比較嘈雜的語音信號的時候,誤差誤差隨時在變,所以并不是能做到很好的跟蹤。而對于誤差變化不大的信號,如正弦波等,就能做到很好的無差跟蹤,幾乎可以全部復原原信號。因為作為自適應濾波器,對輸出有一個學習以及追蹤的功能,但是條件是外部環境變化要比學習速度緩慢。當處理連續變化的語音信號時,LMS算法并不能很好的應用,在于誤差e2(n)在不斷的變化。從MATLAB時域圖中我們可以看到降噪效果很好,但是用COOLEDITOR進行頻譜分析的時候

16、就可以看出,對于連續變化的語音部分,LMS并不是能很好的降噪。 八、實驗完整程序LMS(主函數)部分:#include "math.h"#include "stdio.h"#define SNR 20 /信噪比#define BUFLEN 50#define RNSLEN 50000void grns(double,double,double *,int,double *);main() FILE *fp, *fps,*fpx, *fpy, *fpe1,*fpe2,*fpes,*fpxs,*fpys; short s1=0; double s=0.0;

17、double sn=0.0; double u=0; double g=1.0; double r=1.0; double ran=0; double es=0.0; double snrate=0.0; double ns=0.0; double xBUFLEN=0.0; double dBUFLEN=0.0; short xs=0; short ys=0; double wBUFLEN=0.0; double y=0.0; double mu=1e-8; /初始化 double e=0.0; /初始化 double rnsbuffRNSLEN=0.0; int i=0,j=0; int n

18、ump=0; fp=fopen("tone.dat","rb"); /打開文件 fpes=fopen("tone.dat","rb"); fps=fopen("s.dat","wb"); fpx=fopen("x.dat","wb"); fpy=fopen("y.dat","wb"); fpe1=fopen("e1.dat","wb"); fpe2=fope

19、n("e2.dat","wb"); fpxs=fopen("xs.dat","wb"); fpys=fopen("ys.dat","wb"); nump=fread(&s1,sizeof(short),1,fpes); /sizeof(short)長度運算符 &s1取地址 fread從fpes所指向的文件的位置讀取長度為sizeof(short)的1個數據項,存到s1所指向的內存單元,返回所讀的數據項個數,文件結束或出錯返回0 es=0.0;i=0; whil

20、e(nump=1) es=es+s1*s1; /平方后相加 i=i+1; nump=fread(&s1,sizeof(short),1,fpes); /指針自動加1 es=es/i; /平方和的平均值 grns(u,g,&r,RNSLEN,rnsbuff); /調的外部的函數 高斯白噪聲 ns=0.0; for(i=0;i<RNSLEN;i+) ns=ns+rnsbuffi*rnsbuffi; / 高斯白噪聲的平方和 ns=ns/RNSLEN; /平方求和的平均數 snrate=sqrt(es/ns/pow(10,SNR/10); /開根號 pow 計算10的SNR/10

21、次方的值,求能量,為了達到信噪比20DB而乘上的系數,SNR為信噪比/*/ nump=fread(&s1,sizeof(short),1,fp); /把fp所指的數據讀入s1中 while(nump=1) s=(double)s1; /s1轉為雙精放到s中,就是純凈語音信號 fwrite(&s,sizeof(double),1,fps); /把s中的文件寫到fps中 grns(u,g,&r,1,&ran); /ran就是剛才的那個ak,即高斯噪聲信號 ran=ran*snrate;/重新計算后的噪聲 sn=s+ran;mu=0; /步長先設定為0,為了能讓信號對

22、齊,sn為合成信號 fwrite(&sn,sizeof(double),1,fpx); fwrite(&ran,sizeof(double),1,fpe1); for(i=BUFLEN-1;i>0;i-) xi=xi-1;di=di-1;mu=mu+xi*xi; /算一個數就往后擠一個數再算 x0=sn; d0=s; mu=mu+sn*sn; mu=1/(10*(mu); /xi是合成信號,di是純凈語音信號。/求步長,通過Ex2來求, y=0.0; for(i=0;i<BUFLEN;i+) y=y+xi*wi; /實際輸出信號的合成 e=d0-y; /真實信號和實際輸出信號的差值 for(i=0;i<BUFLEN;i+) wi=wi+e*xi*mu; /做下一信號的權值 xs=(short)x0; ys=(short)y; fwrit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論