小波变换语音消噪改进阈值.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
小波变换语音消噪改进阈值

改进阈值函数进行语音信号消噪,但是在程序运行过程中频频报错。本人经验不足调试不出,希望求得各位指导。 改进函数表达式附图 clear all; clc; close all; fs=8000;? ?? ?? ?? ?? ?? ?%语音信号采样频率为8000 xx=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)? ?? ?? ?? ?? ?? ? %做原始语音信号的时域图形 y=awgn(x1,10,measured);? ?%加10db的高斯白噪声 [snr,mse]=snrmse(x1,y)%求得信噪比 均方误差 figure(2) plot(t,y)? ?? ?? ?? ?? ?? ? %做加噪语音信号的时域图形 [c,l]=wavedec(y,3,db1);%多尺度一维分解 %用db1小波对信号进行3层分解并提取系数 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,2); d1=detcoef(c,l,1); thr1=thselect(d1,rigrsure);%阈值获取,使用Stein的无偏风险估计原理 thr2=thselect(d2,rigrsure); thr3=thselect(d3,rigrsure); %利用改进阈值函数进行去噪处理 gd1=Garrote_gg(d1,thr1); gd2=Garrote_gg(d2,thr2); gd3=Garrote_gg(d3,thr3); c1=[a3 gd3 gd2 gd1]; y1=waverec(c2,l,db1);%多尺度重构 [snr,mse]=snrmse(x1,y1)%求得信噪比 均方误差 figure(3); plot(t,y1); function gd=Garrote_gg(a,b)%a为信号分解后的小波系数,b为获得的阈值 m=0.2*((a*a)-(b*b)); if (abs(a)=b) ? ? gd=sign(a)*(abs(a)-b/exp(m)); else (abs(a)b) ? ? gd=0; end function [snr,mse]=snrmse(I,In) % 计算信噪比函数 % I :原始信号 % In:去噪后信号 snr=0; Ps=sum(sum((I-mean(mean(I))).^2));%signal power Pn=sum(sum((I-In).^2));? ?? ?? ???%noise power snr=10*log10(Ps/Pn); mse=Pn/length(I); HYPERLINK /forum.php?mod=attachmentaid=MTA3MzIxfGQ3ZmNmMWVmfDEzNzY1NTk4MzV8NjE2ODQ3fDI0MzM3Mw%3D%3Dnothumb=yes \t _blank QQ截图20130516175535.png?(11.18 KB, 下载次数: 0) 改进函数表达式 本帖最后由 罗志雄 于 2013-5-16 21:58 编辑 function [snr,mse]=snrmse(I,In) % 计算信噪比函数 % I :原始信号 % In:去噪后信号 snr=0; Ps=sum(sum((I-mean(mean(I))).^2));%signal power Pn=sum(sum((I-In).^2));? ?? ?? ???%noise power snr=10*log10(Ps/Pn); mse=Pn/length(I); 修改后程序清单如下: clear all; clc; close all; fs=8000;? ?? ?? ?? ?? ?? ?%语音信号采样频率为8000 xx=wavread(lw1.wav); x1=xx(:,1);%取单声道 x1=x1-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的高斯白噪声

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档