欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于MATLAB的有噪声的语音信号处理的课程设计 .doc

    • 资源ID:97663413       资源大小:297KB        全文页数:19页
    • 资源格式: DOC        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MATLAB的有噪声的语音信号处理的课程设计 .doc

    DSP实验课程设计实验报告姓名: 学号: 班级:1. 课程设计题目:基于MATLAB的有噪声的语音信号处理的课程设计。2. 课程设计的目的:综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,再利用MATLAB做为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。3. 课程设计的要求:(1)熟悉离散信号和系统的时域特性。(2)掌握序列快速傅里叶变换FFT方法。(3)学会MATLAB的使用,掌握MATLAB的程序设计方法。(4)利用MATLAB对语音信号进行频谱分析。(5)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法。4. 课程设计的内容:录制一段语音信号,对语音信号进行频谱分析,利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析,设计FIR和IIR数字滤波器,并对噪声污染的语音信号进行滤波,分析滤波后的信号的时域和频域特征,回放语音信号。5. 课程设计的步骤:(1)语音信号的获取通过录音软件录制一段语音“数字信号处理”,命名为“OriSound”,时长大约1到2秒,在MATLAB中,通过使用wavread函数,对语音进行采样: y,fs,nbits=wavread('OriSound'); %语音信号的采集采样值放在向量y中,采样频率为fs,采样位数为nbits。(2)语音信号的频谱分析画出语音信号的时域波形,然后对语音信号进行频谱分析,在MATLAB中,通过使用fft函数对信号进行快速傅里叶变换,得到信号的频谱特性。因此采集语音并绘出波形和频谱的模块程序如下:y,fs,nbits=wavread('OriSound'); %语音信号的采集sound(y,fs,nbits); %语音信号的播放n=length(y) ; %计算语音信号的长度Y=fft(y,n); %快速傅里叶变换figure;subplot(2,1,1);%绘出时域波形plot(y);title('原始信号波形','fontweight','bold');axis( 00000 80000 -1 1);%通过尝试确定合适的坐标参数grid;subplot(2,1,2);%绘出频域频谱plot(abs(Y);title('原始信号频谱','fontweight','bold');axis( 0 150000 0 4000);%通过尝试确定合适的坐标参数grid;结果如下:可以看到,语音信号的频率集中在低频部分。(3)产生噪声信号在MATLAB中,通过使用randn函数产生随机噪声信号,并加到语音信号中得到被污染的语音信号,回放语音信号。产生随机噪声:Noise=0.2*randn(n,1);其中用0.2倍乘噪声用来适当削减噪声的作用,便于对语音信号进行处理并比较效果。(4)污染信号频谱分析对被污染的加噪信号进行时域和频域分析。加噪声并分析信号波形频谱的模块程序及说明如下:y,fs,nbits=wavread('');%语音信号采集sound(y,fs,nbits); %回放语音信号便于比较效果n = length (y) ; %计算语音信号长度Noise=0.2*randn(n,1);%产生随机噪声信号Noises=y+Noise;%将Noise添加到原始信号,得到污 染信号ssound(s);%回放污染信号sfigure;subplot(2,1,1);%绘制加噪信号时域波形plot(s);title('加噪语音信号的时域波形','fontweight','bold');axis( 00000 80000 -1 1);grid;S=fft(s); %对s进行快速傅里叶变换得到频谱 subplot(2,1,2);%绘制加噪信号频域频谱plot(abs(S);title('加噪语音信号的时域波形','fontweight','bold');axis( 0 150000 0 4000);grid;结果如下:可以看到,随机噪声均匀的分布在整个频谱范围内。(5)设计FIR和IIR数字滤波器在MATLAB中,根据频谱特征设计FIR和IIR滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1设计IIR滤波器,利用Matlab中的函数freqz画出各步滤波器的频率响应。低通滤波器的性能指标:fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB高通滤波器的性能指标:fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;带通滤波器的性能指标:fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB在MATLAB中,利用N,wc=butter(N,wc,Rp,As,'s')设计并计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc;B,A=cheby1(N,Rp,wpo,'ftypr')设计切比雪夫I型滤波器。在课程设计中,共设计了六种滤波器对信号进行滤波:FIR低通,高通,带通滤波器,IIR低通,高通,带通滤波器。通过对原始信号和加噪信号的频谱进行观察,原始语音信号频谱集中在低频段,而随机噪声接近均匀的分布在整个频谱范围内,因此推测选用低通滤波器去噪性能要好于高通和带通滤波器。(6)对污染信号进行滤波在MATLAB中用FIR和IIR滤波器对加噪信号进行滤波,其中通过利用函数fftfilt用FIR滤波器滤波,通过利用函数filter用IIR滤波器滤波。(7)回放语音信号在MATLAB中,通过用sound函数对语音信号进行回放,用以比较各滤波器的滤波效果。各滤波器设计模块的程序和说明如下:(1) IIR低通滤波器设计 y,fs,nbits=wavread('');%语音信号采集n = length (y) ; %计算语音信号长度Noise=0.2*randn(n,1);%产生随机噪声信号Noises=y+Noise;%将Noise添加到原始信号,得到污 染信号sS=fft(s); %快速傅里叶变换 Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,'s'); %低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,'s'); %S域频率响应的参数 num11,den11=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 z11=filter(num11,den11,s);%滤波sound(z11,fs,nbits);%回放滤波后的信号m11=fft(z11); %滤波后的信号频谱figure;subplot(2,2,1);%绘出滤波前的信号频谱plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis( 0 80000 0 4000);grid;subplot(2,2,2);%绘出滤波后的信号频谱plot(abs(m11),'r');title('滤波后信号的频谱','fontweight','bold');axis( 0 80000 0 4000);grid;subplot(2,2,3);%绘出滤波前的信号波形plot(s);title('滤波前信号的波形','fontweight','bold');axis(00000 100000 -1 1);grid;subplot(2,2,4);%绘出滤波后的信号波形plot(z11);title('滤波后的信号波形','fontweight','bold');axis(00000 100000 -1 1);grid;结果如下:可以看出,滤波后将非低频部分的噪声频率滤掉,但还有一些高于原始语音信号的频率没有被去除。(2) IIR高通滤波器设计y,fs,nbits=wavread ('OriSound'); %语音信号采集n = length (y) ; %计算语音信号的长度Noise=0.2*randn(n,1); %产生随机噪声s=y+Noise; %语音信号加入噪声得到加噪信号S=fft(s); %快速傅里叶变换Fp1=1200;Fs1=1000;Ft=8000;wp1=tan(pi*Fp1/Ft);ws1=tan(pi*Fs1/Ft);wp=1;ws=wp1*wp/ws1;n13,wn13=cheb1ord(wp,ws,1,50,'s'); %模拟的低通滤波器阶数和截止频率b13,a13=cheby1(n13,1,wn13,'s'); %S域的频率响应的参数num,den=lp2hp(b13,a13,wn13);%S域低通参数转为高通的num13,den13=bilinear(num,den,0.5); %利用双线性变换实现频率响应S域到Z域转换z13=filter(num13,den13,s);%滤波sound(z13,fs,nbits);%回放滤波后的信号m13=fft(z13); %滤波后的信号频谱figure;subplot(2,2,1);%绘出滤波前的信号频谱plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,2);%绘出滤波后的信号频谱plot(abs(m13),'r');title('滤波后信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,3);%绘出滤波前的信号波形plot(s);title('滤波前信号的波形','fontweight','bold');axis(00000 100000 -1 1);grid;subplot(2,2,4);%绘出滤波后的信号波形plot(z13);title('滤波后的信号波形','fontweight','bold');axis(00000 100000 -1 1);grid;结果如下:可以看出,滤波后将原始信号绝大部分频谱滤掉,剩下噪声信号,不能采用。(3) IIR带通滤波器设计y,fs,nbits=wavread ('OriSound'); %语音信号采集n = length (y) ; %计算语音信号的长度Noise=0.2*randn(n,1); %产生随机噪声s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.(-rp/20); %通带阻带波纹q=10.(-rs/20);fpts=wp ws;mag=1 0;dev=p q;n21,wn21,beta,ftype=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频率b21=fir1(n21,wn21,kaiser(n21+1,beta); %设计滤波器z21=fftfilt(b21,s);%滤波sound(z21,fs,nbits);%回放滤波后的信号m21=fft(z21); %滤波后的信号频谱figure(4);subplot(2,2,1);%绘出滤波前的信号频谱plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,2);%绘出滤波后的信号频谱plot(abs(m21),'r');title('滤波后信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,3);%绘出滤波前的信号波形plot(s);title('滤波前信号的波形','fontweight','bold');axis(00000 100000 -1 1);grid;subplot(2,2,4);%绘出滤波后的信号波形plot(z21);title('滤波后的信号波形','fontweight','bold');axis(00000 100000 -1 1);grid;结果如下:可以看出,大部分噪声被去除,与低通IIR滤波器的效果差不多,稍好于低通。(4) FIR低通滤波器y,fs,nbits=wavread ('OriSound'); %语音信号采集n = length (y) ; %计算语音信号的长度Noise=0.2*randn(n,1); %产生随机噪声s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.(-rp/20); %通带阻带波纹q=10.(-rs/20);fpts=wp ws;mag=1 0;dev=p q;n21,wn21,beta,ftype=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频率b21=fir1(n21,wn21,kaiser(n21+1,beta); %由fir1设计滤波器z21=fftfilt(b21,s);%滤波sound(z21,fs,nbits);%回放滤波后的信号m21=fft(z21); %滤波后的信号频谱figure(4);subplot(2,2,1);%绘出滤波前的信号频谱plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,2);%绘出滤波后的信号频谱plot(abs(m21),'r');title('滤波后信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,3);%绘出滤波前的信号波形plot(s);title('滤波前信号的波形','fontweight','bold');axis(00000 100000 -1 1);grid;subplot(2,2,4);%绘出滤波后的信号波形plot(z21);title('滤波后的信号波形','fontweight','bold');axis(00000 100000 -1 1);grid;结果如下:可以看出:大部分的噪声频率被滤除,几乎完整的保留了原始信号的频谱,滤波效果最好,但是由于在低频部分仍然有随机信号的干扰,所以回放信号较原始信号音质稍差。(5) FIR高通滤波器y,fs,nbits=wavread ('OriSound');%语音信号采集n = length (y) ; %计算语音信号的长度Noise=0.2*randn(n,1); %产生随机噪声s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换Ft=8000;Fp=4000;Fs=3500;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.(-rp/20); %通带阻带波纹q=10.(-rs/20);fpts=ws wp;mag=0 1;dev=p q;n23,wn23,beta,ftype=kaiserord(fpts,mag,dev);b23=fir1(n23,wn23,'high',kaiser(n23+1,beta); %由fir1设计滤波器z23=fftfilt(b23,s);%滤波sound(z23,fs,nbits);%回放滤波后的信号m23=fft(z23); %滤波后的信号频谱figure;subplot(2,2,1);%绘出滤波前的信号频谱plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,2);%绘出滤波后的信号频谱plot(abs(m23),'r');title('滤波后信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,3);%绘出滤波前的信号波形plot(s);title('滤波前信号的波形','fontweight','bold');axis(00000 100000 -1 1);grid;subplot(2,2,4);%绘出滤波后的信号波形plot(z23);title('滤波后的信号波形','fontweight','bold');axis(00000 100000 -1 1);grid;结果如下:可以看到,滤波后只剩部分高频噪声频率,原始语音信号频率被滤除,因此无法恢复语音信号。(6) FIR带通滤波器y,fs,nbits=wavread ('OriSound');%语音信号采集n = length (y) ; %计算语音信号的长度Noise=0.2*randn(n,1); %产生随机噪声s=y+Noise; %语音信号加噪 S=fft(s); %快速傅里叶变换Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;Ft=2200;wp1=tan(pi*Fp1/Ft); %带通到低通滤波器参数转换wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft); w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp*wp2-w.2)/(bw*w);n22,wn22=buttord(wp,ws,1,50,'s'); %低通滤波器阶数和截止频率b22,a22=butter(n22,wn22,'s'); %S域的频率响应的参数z22=fftfilt(b22,s);%滤波sound(z22,fs,nbits);%回放滤波后的信号m22=fft(z22); %滤波后的信号频谱figure;subplot(2,2,1);%绘出滤波前的信号频谱plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,2);%绘出滤波后的信号频谱plot(abs(m22),'r');title('滤波后信号的频谱','fontweight','bold');axis(0 80000 0 4000);grid;subplot(2,2,3);%绘出滤波前的信号波形plot(s);title('滤波前信号的波形','fontweight','bold');axis(00000 100000 -1 1);grid;subplot(2,2,4);%绘出滤波后的信号波形plot(z22);title('滤波后的信号波形','fontweight','bold');axis(00000 100000 -1 1);grid;结果如下:可以看到,滤波器将部分低频滤去,也就滤掉了部分原始信号频率,因此无法正常恢复语音信号。(8)设计GUI界面创建一个GUI界面,可以方便的管理各个模块。首先通过File->New->GUI创建一个GUI界面,然后对界面进行设计,最后对各个空间编写回调函数。效果如下:其中,“原始语音频谱分析”可以对原始语音信号进行波形和频谱的显示,“加噪后频谱分析”可以对加噪后语音信号进行波形和频谱的显示,“滤波器对加噪语音信号进行滤波模块”中的各滤波器控件分别可以利用相应的滤波器对加噪后的语音信号进行滤波处理并回放。6. 课程设计总结:在这次课程设计中,我设计制作了加噪语音信号滤波提取的系统,综合运用了之前几次实验,尤其是滤波器设计方面的MATLAB知识,并最后得到了比较理想的效果。通过这次课程设计,我加深了对滤波器方面知识的理解。用自己设计的各种滤波器对污染信号进行处理,也让我更加清楚的理解了滤波器的滤波特性,比较并找到最合适的滤波器。这次课程设计是一个不小的挑战,通过不断的学习和尝试,最终制作完成,在这个过程中我也有了很多的提高和收获。比如,如何在语音信号中添加噪声,如何灵活的利用各种滤波器对语音信号进行处理,如何用MATLAB设计GUI界面并对控件添加回调函数等。其中,印象最深的是GUI界面的设计。通过查找资料,我掌握了设计GUI基本界面的方法,把所有的功能集中到一个界面中,操作简便又实用美观。当然,这次设计也让我认识到自身的不足,比如编程经验欠缺,知识联系能力不强等。但是通过不断的改进,我在这两方面都有了很大的提高,对课堂知识的掌握和精进有很大的帮助。

    注意事项

    本文(基于MATLAB的有噪声的语音信号处理的课程设计 .doc)为本站会员(yy****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开