譜相減MATLAB代碼以及信噪比計算_第1頁
譜相減MATLAB代碼以及信噪比計算_第2頁
譜相減MATLAB代碼以及信噪比計算_第3頁
譜相減MATLAB代碼以及信噪比計算_第4頁
譜相減MATLAB代碼以及信噪比計算_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、實驗二 語音信號的頻域處理一、 實驗目的、要求(1)掌握語音信號頻域分析方法(2)了解語音信號頻域的特點(3)了解譜減法作為頻域語音增強的原理與編程實現(3)了解譜減法的缺點,并分析產生該缺點的原因二、實驗原理語音雖然是一個時變、非平穩的隨機過程。但在短時間內可近似看作是平穩的。因此如果能從帶噪語音的短時譜中估計出“純凈”語音的短時譜,即可達到語音增強的目的。由于噪聲也是隨機過程,因此這種估計只能建立在統計模型基礎上。利用人耳感知對語音頻譜分量的相位不敏感的特性,這類語音增強算法主要針對短時譜的幅度估計。短時話幅度估計概述 設一幀加窗后的帶噪語音為 (2.1) 其中為純凈語音,假設為平穩加性高

2、斯噪聲。 將在一組基上展開,使展對系數為各不相關的隨機變量。設的相關函數為,由KL展開得知滿足 (2.2) 則的展開式為 (2.3) 如果的相關長度小于幀長N,則的近似函數為 (2.4) 可見的展開過程實際上相當于離散博里葉交換,其展開系數(為傅里葉變換系數。由,則有:。 其中、分別為、及的傅里葉交換系數。由于假設噪聲是高斯分布的,其傅里葉系數相當于多個高斯樣本的加權和,故可認為仍然為高斯分布。其均值為0,方差可通過無語音時對噪聲的分析而獲得。語音增強的任務就是利用已知的噪聲功率譜信息,從中估計出。由于人耳對相位不敏感,故只需估計出,然后借用帶噪語音的相位,進行傅里葉逆變換就可得到增強的語音。

3、基于短時譜幅度估計的方法的原理圖如圖2.1所示。FFT幅度譜 估計器噪聲特性相位s(n)IFFT y(n)=s(n)+d(n)圖2.1 短時譜估計原理圖在短時譜幅(STSA)估計基礎上,人們提出了許多語音增強算法。基本思想是利用輸入帶噪語音短時譜幅來估計清潔語音短時譜幅,結合帶噪語音相位信息,得到增強信號。運用短時傅里葉變換(STFT)和重疊相加是短時譜估計技術中最常用的方法。輸入信號的短時譜幅與一個修正因子相乘,得到增強信號譜幅度(通常修正因子與噪聲信號譜幅估計密切相關);或將含噪語音譜幅減去噪聲譜幅估計,得到增強信號譜幅,這些方法統稱為相減類型算法(subtractivetype algo

4、rithms)。噪聲譜幅估計可以通過有聲、無聲檢測獲取。一般認為噪聲與信號不相關,增強信號譜幅是清潔語音信號的譜幅估計。通常假設人耳對含噪語音相位產生的畸變不敏感,所以進行IDFT恢復成時域信號時,含噪語音的相位一般不作處理。三、使用儀器、材料微機(帶聲卡)、耳機,話筒。四、 實驗步驟(1) 分析含噪語音信號的頻譜(幅度譜和相位譜)(2) 獲取噪聲信號頻譜(幅度譜)(3) 對含噪語音信號進行分幀并進行加窗處理(4) 將含噪語音信號譜和噪聲譜作為輸入,進行譜減法(5) 回復增強語音信號幀.(6) 對比輸入信號與增強信號波形,分析算法對其產生的影響.五、實驗過程原始記錄(數據,圖表,計算)假設為含

5、噪語音離散時間序列,由清潔語音信號和非相關加性噪聲信號組成。可表示為 (2.5)將輸入信號按幀處理,前后幀之間重疊(一般為50%),對每幀含噪語音進行加窗處理,然后進行FFT變換,變換到頻率域。含噪語音的能量譜可以表示為 (2.6)其中為 (2.7)其中為含噪語音的相位。由于沒法直接得到含噪語音中噪聲能量譜,一般將無聲階段的數幀噪聲信號進行能量譜加權平均得到噪聲能量譜估計。假設噪聲與語音信號不相關,語音能量譜估計為 (2.8)其中清潔語音能量譜估計由含噪語音能量譜減去噪聲能量譜估計得到。由于噪聲能量譜估計與含噪語音中噪聲能量譜之間存在差異,式(3.4)可能出現負值,為了避免能量譜出現負值,將這

6、些負值設為零,這一處理稱為半波整流(half-wave rectification)。通過半波整流,清潔語音能量譜估計可表示為 (2.9)結合含噪語音相位信息,通過逆離散傅里葉變換(IDFT)得到時域清潔語音信號的估計信號。 IDFT() (2.10)其中增強語音信號頻譜也可以通過時變濾波器重建 (2.11)式中時變濾波器(或稱為增益函數)可表示為 (2.12)六:實驗結果,及分析(a) 原始含噪語音(b) 譜相減增強語音(c) 原始含噪語音(d) 譜相減增強語音 圖2.2 譜減法結果分析實驗結果:圖2.2中(a),(c)為不同信噪比輸入含噪語音信號,圖2.2中(b),(d)為對應增強語音信號

7、。當信噪比較低時,降噪效果較差。并且引入音樂噪聲。算法缺陷分析:(1)不可避免的引入音樂噪聲。要有效地濾除含噪語音中的噪聲,需要準確地估計含噪語音中噪聲的頻譜。噪聲譜估計越準確,增強信號譜中音樂噪聲越小。然而,由于不能直接得到噪聲譜,在絕大多數譜相減算法中,通過加權平均無聲階段噪聲譜得到噪聲譜估計,這種噪聲譜估計與含噪語音中的瞬時噪聲譜存在差異,噪聲平穩性越差,差異越大,由于這種差異的存在,譜相減不可避免地引入音樂噪聲。(2) 半波、全波整流式(3.4)中負能量值的產生是由于噪聲譜估計發生了錯誤。這些負值用半波整流(被設定為0)或全波整流(被設定為絕對值),這樣處理并沒有糾正這種錯誤,可能導致

8、時域信號更進一步的失真。(3) 用含噪語音的相位作為增強語音的相位在生成增強時域信號時,含噪語音的相位并沒有作任何修改。這是基于這樣一個事實,相位的失真對語音質量下降造成的影響不大。當信噪比比較高(>5dB)時,相位失真確實對語音質量的影響不大,然而,當信噪比較低時(<0dB)這種由于相位失真造成的語音質量下降是可以感覺得到的。七、實驗參考程序代碼譜相減原程序代碼hanning=zeros(1,256);speech=zeros(1,32000);dd=wavread('D:語音信號處理實驗2noise.wav');%噪聲;sp=wavread('D:語音信

9、號處理實驗2speech.wav');%純語音;hanning=zeros(1,256);noise=dd(10000:45000);speech=sp(25000:60000);e2=noise+speech;szeros=zeros(1,32000);soutput1=zeros(1,32000);j=sqrt(-1); a=3,b=0.01;Snoise=zeros(1,256);phase=zeros(1,256);for n=1:256 hanning(n)=(1/2)*(1-cos(2*pi)*(n-1)/255);end% to get noise spectral No

10、ise=zeros(1,256);Noise1=zeros(1,256);for i=1:3Noise1(1:256)=abs(fft(e2(1+i*256:256*(i+1).*hanning');Noise=Noise+Noise1/3;end% spectral subtraction algrithm for i=1:245 %第i幀 snoise=e2(i-1)*128+1:(i-1)*128+256).*hanning' phase=angle(fft(snoise); % to get noisy signal spectral phase Snoise=abs(

11、fft(snoise); % to get noisy signal spectral amplitude for n=1:256 if(Snoise(n)2-Noise(n)2)<0 %the power of enhanced speech must be positive Sout0(n)=0.1*Snoise(n); else Sout0(n)=(Snoise(n)2-(Noise(n)*1.5)2)0.5; %power type spectral subtraction end S0(n)=Sout0(n)*(cos(phase(n)+j*sin(phase(n); % to

12、 get enhanced speech spectral amplitude end sout0=ifft(S0); szeros(i-1)*128+1):(i-1)*128+256)=real(sout0); soutput1=soutput1+szeros; szeros=zeros(1,32000);end%the following is for SNR calculationsp_energe=zeros(1,256);sn_energe=zeros(1,256);SN=zeros(1,256);in_SNR1=zeros(1,125);out_SNR1=zeros(1,125);

13、snoise=zeros(1,256);for i=1:240 snoise=speech(i-1)*128+1:(i-1)*128+256).*hanning'%第i幀清潔語音存放到snoise SN=noise(i-1)*128+1:(i-1)*128+256).*hanning' %第i幀清潔語音存放到SN %in_SNR1(i) sp_energe(i)=snoise(1:256)'*snoise(1:256);%第i幀清潔語音snoise的能量存放到sp_energe(i) sn_energe(i)=SN(1:256)'*SN(1:256);%第i幀皂聲SN的能量存放到sn_energe(i) in_SNR1(i)=10*log10(sp_energe(i)/sn_energe(i);%第i幀含噪語音信號輸入信噪比in_SNR1(i) SN=soutput1(i-1)*128+1:(i-1)*128+256).*hanning; %第i幀輸出信號存放SN sn_energe1(i)=SN(1:256)*SN(1:256)'%第i幀輸出信號SN能量 out_SNR1(i)=10*log10(sp_energe(i)/abs(sn_energe1(i

溫馨提示

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

評論

0/150

提交評論