基于听觉特性的小波包语音增强算法Matlab实现程序.doc_第1页
基于听觉特性的小波包语音增强算法Matlab实现程序.doc_第2页
基于听觉特性的小波包语音增强算法Matlab实现程序.doc_第3页
基于听觉特性的小波包语音增强算法Matlab实现程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文基于听觉特性的小波包语音增强算法Matlab实现程序如下:说明:1.“D:EXPERI”为实验中纯净语音素材和生成的带噪语音以及增强后的语音在PC中的存放路径。2.可以通过改变SNR的具体值根据需要将生成的带噪语音信号的信噪比设为任意合理值。3.实验中我们将Matlab的wthresh.m文件中的库函数wthresh(x,sorh,t)就行了修改,sorh增加了一种类型n,该类型代表论文中提出的新的阈值函数类型。a)生成混杂白噪声的带噪语音部分%读入纯净语音并显示x=wavread(D:EXPERIclean.wav);subplot(3,1,1);plot(x);axis(0 55521-0.5 0.5);x1=length(x);%给定信噪比SNR=5;%利用信噪比和语音能量求得要添加的白噪声clean_energy=sum(x.*x);addnoise_energy=clean_energy*(10-(SNR/10);noise=normrnd(0,1,x1,1);noise_energy=sum(noise.*noise);q=addnoise_energy/noise_energy;noise_new=sqrt(q)*noise;%在纯净语音中加入白噪声y=x+noise_new;%将数据写入语音文件并显示wavwrite(y,8000,D:EXPERIWN_clean.wav);subplot(3,1,2);plot(y);axis(0 55521-0.5 0.5);b)基于听觉特性的小波包语音增强算法实现部分%Bark小波包分解x=wavread(D:EXPERIWN_clean.wav);wptree=wpdec(x,7,db5);%把Bark小波分解包中的第五层的叶结点合并for k=47:62wptree=wpjoin(wptree,k);end%把Bark小波分解包中的第六层的叶结点合并for k=79:86wptree=wpjoin(wptree,k);endfor k=91:94wptree=wpjoin(wptree,k);end%plot(wptree);%将各节点按相应阈值进行处理sorh=n;%所选阈值函数%-%处理7层节点%-for i=0:31c70(:,i+1)=wpcoef(wptree,7 i);q70=median(abs(c70(:,i+1);arr70(i+1)=(q70/0.6745).*sqrt(2*log(442);if(i0)c70(:,i+1)=wthresh(c70(:,i+1),sorh,arr70(i+1);wptree=write(wptree,data,7 i,c70(:,i+1);%修改节点系数值endendfor i=48:55c71(:,i-47)=wpcoef(wptree,7 i);q71=median(abs(c71(:,i-47);arr71(i-47)=(q71/0.6745).*sqrt(2*log(442);c71(:,i-47)=wthresh(c71(:,i-47),sorh,arr71(i-47);wptree=write(wptree,data,7 i,c71(:,i-47);%修改节点系数值end%-%处理6层节点%-for j=16:23c60(:,j-15)=wpcoef(wptree,6 j);q60=median(abs(c60(:,j-15);arr60(j-15)=(q60/0.6745).*sqrt(2*log(876);c60(:,j-15)=wthresh(c60(:,j-15),sorh,arr60(j-15);wptree=write(wptree,data,6 j,c60(:,j-15);%修改节点系数值endfor j=28:31c61(:,j-27)=wpcoef(wptree,6 j);q61=median(abs(c61(:,j-27);arr61(j-27)=(q61/0.6745).*sqrt(2*log(876);c61(:,j-27)=wthresh(c61(:,j-27),sorh,arr61(j-27);wptree=write(wptree,data,6 j,c61(:,j-27);%修改节点系数值end%-%处理5层节点%-for k=16:31c5(:,k-15)=wpcoef(wptree,5 k);q5=median(abs(c5(:,k-15);arr5(k-15)=(q5/0.6745).*sqrt(2*log(1743);c5(:,k-15)=wthresh(c5(:,k-15),sorh,arr5(k-15);wptree=write(wptree,data,5 k,c5(:,k-15);%修改节点系数值end%重建信号y=wprec(wptree);subplot(3,1,3);plot(y);axis(0 55521-0.5 0.5);wavwrite(y,8000,D:EXPERIWtDeSpeech.wav);c)修改后的wthresh.m文件function y=wthresh(x,sorh,t)%WTHRESH Perform soft、hard and new thresholding.switch sorhcasestmp=(abs(x)-t);tmp=(tmp+abs(tmp)/2;y=sign(x).*tmp;casehy=x.*(abs(x)t);casentmp=(sign(x).*(t/(exp(4.*t)-exp(2.*t).*(exp(4.*abs(x)-exp(2.*t);y=tmp.*(abs(x)(t/2)&(abs(x)t);otherwiseerror(Invalid argument value.)MATLAB的Wavelet Toolbox中有着丰富的有关小波包的m文件。但是,随着MATLAB版本的变化,这些m文件也不断的变化(包括名称和调用格式)。在MATLAB6.5中,有关小波包的m文件共有16个,大体可以分为三部分,其名称和功能分别是:1.用于小波包分解的m文件wpdec一维小波包分解,返回小波包分解wpdec2二维小波包分解,返回对应数据阵的分解树wpsplt对小波包分解树的某个节点再分解,返回新的分解树wpcoef提取分解树中某一个节点处的小波包系数wpfun对给定的小波名字wname,生成相应的小波包wp2wtree从小波包分解树中提取小波树wenergy分别计算小波包分解后概貌和细节的能量百分比2.用于小波包重构的m文件wprcoef小波包系数重构,即计算小波包分解树某一节点处的重构系数wprec一维小波包重构,即返回对应小波包分解树的重建向量wprec2二维小波包重构3.用于小波包分解结构操作的m文件wpcutree剪切小波包分解树wpjoin重新组合小波包bestlevt计算完整的最佳小波包树besttree计算最佳的小波包分解树wentropy计算小波包的熵entrupd更新小波包的熵值本论文的工作是在我的导师郭继昌教授的指导下完成的。在我课题研究期间,郭老师在学术方面给予我悉心的指导,从而使得课题的研究可以顺利完成。郭老师渊博的学识、严谨的治学态度和高度的敬业精神都使我受益匪浅。在此我还要衷心地感谢郭老师这两年半在生活上对我的关怀和帮助。课题进行期间,实验室的董健博士、陈敏俊硕士、赖焰根硕士等同学都给予了很大的帮助和支持。尤其要感谢的是董健博士,董师兄在课题研究期间的指导和建议是课题顺利完成的重要保障。我还要感谢在华为3com实习期间的领导和同事,项目经理汪勇

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论