【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码
1 簡介
自適應信號處理的理論和技術已經成為人們常用濾波和去噪技術。文中講述了自適應濾波的原理以及LMS算法和RLS算法兩種基本自適應算法的原理及步驟。并用MATLAB分別對兩種算法進行了自適應濾波仿真和實現。
自適 應 濾波 就 是 利用 前 一 時 刻 獲 得 濾 波 器 參 數 的 結 果自動的調節現時刻的濾波器參數,以適應信號和噪聲未知的或隨時間變化的統計特性,從而實現最優濾波。?自適應濾波器 實 質 上就 是 一 種能 調 節 其自 身 傳 輸特 性 以 達到 最 優 的 維納濾波器。?自適應濾波器的特性變化是由自適應算法通過調整濾波器系數來實現的。?一般而言,自適應濾波器由參數可調的數字濾波器和自適應算法兩部分組成。?參數可調數字濾波器可以是?FIR?數字濾波器或?IIR?數字濾波器,?也可以是格型數字濾波器。?自適應濾波器的一般結構如圖?1?所示。?圖?1?中?x(n)為輸入信號,通過參數可調的數字濾波器后產生 輸 出信 號?y(n),將 輸出 信 號?y(n)與期 望 信 號?d(n)進 行比較,得到誤差信號?e(n)。?e(n)和?x(n)通過自適應算法對濾波器的參數進行調整,調整的目的使得誤差信號?e(n)最小。自適應濾波器大多用?FIR?來實現。?直接型自適應濾波器FIR?濾波器如圖?2?所示。
2 部分代碼
function output=SpectralSub(signal,wlen,inc,NIS,a,b)wnd=hamming(wlen); % 設置窗函數N=length(signal); % 計算信號長度?y=enframe(signal,wnd,inc)'; % 分幀fn=size(y,2); % 求幀數?y_fft = fft(y); % FFTy_a = abs(y_fft); % 求取幅值y_phase=angle(y_fft); % 求取相位角y_a2=y_a.^2; % 求能量Nt=mean(y_a2(:,1:NIS),2); % 計算噪聲段平均能量nl2=wlen/2+1; % 求出正頻率的區間?for i = 1:fn; % 進行譜減 for k= 1:nl2 if y_a2(k,i)>a*Nt(k) temp(k) = y_a2(k,i) - a*Nt(k); else temp(k)=b*y_a2(k,i); end U(k)=sqrt(temp(k)); % 把能量開方得幅值 end X(:,i)=U;end;output=OverlapAdd2(X,y_phase(1:nl2,:),wlen,inc); % 合成譜減后的語音Nout=length(output); % 把譜減后的數據長度補足與輸入等長if Nout>N output=output(1:N);elseif Nout<N output=[output; zeros(N-Nout,1)];endoutput=output/max(abs(output)); % 幅值歸一3 仿真結果
4 參考文獻
[1]徐艷, 李靜. 基于LMS算法與RLS算法的自適應濾波[J]. 電子設計工程, 2012, 020(012):49-51,54.
博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯系博主刪除。
總結
以上是生活随笔為你收集整理的【语音去噪】基于最小二乘自适应滤波LMS和RLS实现语音去噪含Matlab源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tiny6410之重定位代码到SRAM+
- 下一篇: 弹性布局介绍