資源描述:
《小波變換語音消噪(改進閾值)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、改進閾值函數(shù)進行語音信號消噪,但是在程序運行過程中頻頻報錯。本人經(jīng)驗不足調(diào)試不出,希望求得各位指導(dǎo)。改進函數(shù)表達式附圖clearall;clc;closeall;fs=8000;????????????%語音信號采樣頻率為8000xx=wavread('lw1.wav');x1=xx(:,1);%取單聲道t=(0:length(x1)-1)/8000;y1=fft(x1,2048);????????%對信號做2048點FFT變換f=fs*(0:1023)/2048;figure(1)plot(t,x1)??????
2、??????%做原始語音信號的時域圖形y=awgn(x1',10,'measured');??%加10db的高斯白噪聲[snr,mse]=snrmse(x1,y')%求得信噪比均方誤差figure(2)plot(t,y)????????????%做加噪語音信號的時域圖形[c,l]=wavedec(y,3,'db1');%多尺度一維分解%用db1小波對信號進行3層分解并提取系數(shù)a3=appcoef(c,l,'db1',3);%a2=appcoef(c,l,'db1',2);%a1=appcoef(c,l,'db1',
3、1);d3=detcoef(c,l,3);d2=detcoef(c,l,2);d1=detcoef(c,l,1);thr1=thselect(d1,'rigrsure');%閾值獲取,使用Stein的無偏風(fēng)險估計原理thr2=thselect(d2,'rigrsure');thr3=thselect(d3,'rigrsure');%利用改進閾值函數(shù)進行去噪處理gd1=Garrote_gg(d1,thr1);gd2=Garrote_gg(d2,thr2);gd3=Garrote_gg(d3,thr3);c1=[a3g
4、d3gd2gd1];y1=waverec(c2,l,'db1');%多尺度重構(gòu)[snr,mse]=snrmse(x1,y1')%求得信噪比均方誤差figure(3);plot(t,y1);functiongd=Garrote_gg(a,b)%a為信號分解后的小波系數(shù),b為獲得的閾值m=0.2*((a*a)-(b*b));if(abs(a)>=b)??gd=sign(a)*(abs(a)-b/exp(m));else(abs(a)
5、計算信噪比函數(shù)%I:原始信號%In:去噪后信號snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signalpowerPn=sum(sum((I-In).^2));????????%noisepowersnr=10*log10(Ps/Pn);mse=Pn/length(I);QQ截圖20130516175535.png?(11.18KB,下載次數(shù):0)改進函數(shù)表達式本帖最后由羅志雄于2013-5-1621:58編輯function[snr,mse]=snrmse(I,In)%計算信噪
6、比函數(shù)%I:原始信號%In:去噪后信號snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signalpowerPn=sum(sum((I-In).^2));????????%noisepowersnr=10*log10(Ps/Pn);mse=Pn/length(I);修改后程序清單如下:clearall;clc;closeall;fs=8000;????????????%語音信號采樣頻率為8000xx=wavread('lw1.wav');x1=xx(:,1);%取單聲道x1=x1-
7、mean(x1);t=(0:length(x1)-1)/8000;y1=fft(x1,2048);????????%對信號做2048點FFT變換f=fs*(0:1023)/2048;figure(1)plot(t,x1)????????????%做原始語音信號的時域圖形y=awgn(x1',10,'measured');??%加10db的高斯白噪聲[snr,mse]=snrmsel(x1',y)????%求得信噪比均方誤差snr1=SNR_singlech(x1',y)figure(2)plot(t,y)?????
8、???????%做加噪語音信號的時域圖形[c,l]=wavedec(y,3,'db1');%多尺度一維分解%用db1小波對信號進行3層分解并提取系數(shù)a3=appcoef(c,l,'db1',3);%a2=appcoef(c,l,'db1',2);%a1=appcoef(c,l,'db1',1);d3=detcoef(c,l,3);d2=detcoef(c,l