基于MATLAB的语音信号分析与处理_第1页
基于MATLAB的语音信号分析与处理_第2页
基于MATLAB的语音信号分析与处理_第3页
基于MATLAB的语音信号分析与处理_第4页
基于MATLAB的语音信号分析与处理_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)任务书 学院 专业 班 一、课程设计(论文)题目基于 matlab 的语音信号分析与处理的课程设计二、课程设计(论文)工作自 年 月 日起至 年 月 日止。三、课程设计(论文) 地点: 四、课程设计(论文)内容要求:1本课程设计的目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 matlab 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。 2课程设计的任务及要求1)基本要求: 学会 matlab 的使用,掌握 matlab 的程序设计方法。 掌握在 windows 环境下语音信号采集的方法。 掌握数字信号处理的基本概

2、念、基本理论和基本方法。 掌握 matlab 设计 fir 和iir 数字滤波器的方法。 学会用 matlab 对信号进行分析和处理。 2)创新要求: 在基本要求达到后,可进行创新设计,如界面优化等。3)课程设计报告要求(1)要课程设计目的及要求(2)要课程设计详细设计过程及调试分析(3)要结果分析与体会(4)要按照书稿的规格打印课程设计(5)课程设计包括目录、绪论、正文、小结、参考文献、谢辞、附录等(6)要按照书稿的规格打印课程设计,装订按学校的统一要求完成4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:40分; (3)完成调试:20分;(4)回答问题:20分。5)参

3、考文献: 1胡广书 数字信号处理理论、算法与实现(第二版) 清华出版社 2陈桂明 应用matlab语言处理数字信号与数字图像 科技出版社 3程佩青 数字信号处理(第三版) 清华出版社 4 5刘敏,魏玲matlab通信仿真与应用m 国防工业出版社 6陈怀琛、吴大正 matlab及在电子信息课中的应用 电子工业出版社 6)课程设计进度安排内容 天数地点构思及收集资料 1图书馆编程与调试 3实验室撰写论文 1图书馆、实验室学生签名: 2008年12月29日课程设计(论文)评审意见(1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(40分):优()、良()、中()

4、、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 讲师 2009年 月 日目录绪论4第1章 设计的过程511 语音信号的采集512 语音信号的频谱分析6(一)巴特沃思滤波器属于iir滤波器8(二)海明窗滤波器属于fir型滤波器914 用滤波器对信号进行滤波1025 比较滤波前后语音信号的波形及频谱1126 回放语音信号1227 设计系统界面1328 作者介绍及谢辞15第2章 设计的思想流程图16第3章 课程设计的心得体会1

5、6第4章 附录程序及相应的波形图18附录一:主程序18(1).用matlab对原始语音信号进行分析,画出它的时域波形和频谱18(2).给原始的语音信号加上一个高频余弦噪声,频率为1800hz19(3).将噪声信号加入原始信号中程序19(4).滤波器的类型设计程序21(5).用sound函数播放语音信号程序25附录二:界面设计的程序26谢辞29参考文献30绪论本次的课程设计是利用matlab对信号进行采样、分析以及根据信号的特点设计出合适的数字滤波器对信号进行滤波。matlab名字是由matrix和laboratory两个词的前三个字母组合而成的。它是mathworks公司于982年推出的一套高

6、性能的数值计算和可视化数学软件。它一般用于数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序,并集应用程序和图形于一便于使用的集成环境中。由于matlab不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。matlab中包括了被称作工具箱(toolbox)的各类应用问题的求解工具。工具箱实际上是对matlab进行扩展应用的一系列matlab函数(称为m文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。其主要内容涉及了从

7、波形产生到滤波器设计和参量建模以及信号谱分析的范围,核心领域为滤波器设计和频谱分析。工具箱除去提供了用于信号处理的命令函数外,还提供了一组基于cpu开发的借口工具。随着matlab版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。 matlab5.3中包括了图形界面编辑gui,改变了以前单一的“在指令窗通过文本形的指令进行各种操作”的状况。这可让使用者也可以象vb vc vj delphi等那样进行一般的可视化的程序编辑。在命令窗口(matlab command window)键入simulink,就出现(simulink

8、) 窗口。以往十分困难的系统仿真问题,用simulink只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视原因所在。因此,选择用matlab进行数字信号处理课程设计。本次课程设计主要涉及的内容是,离散时间信号与系统的时域、频域表示,以及信号通过系统的时域、频域分析及其变换域分析。matlab数据库中提供了与之相对应的函数,如filter、fftfilt、 freqz 。课设过程中最重要的部分是滤波器的设计,数字滤波器设计和频谱分析是数字信号处理的两个主要应用。数字滤波器设计包括了无限冲击响应(iir)和有限冲击响应(fir)滤波器设计,在这一方面,matlab的这一工具库提供了极为丰富的设

9、计工具。频谱分析又可进一步分为线性频谱分析和非线性频谱分析。其中,线性频谱分析的理论基础为傅立叶变换,因此所使用的matlab函数主要为fft,ifft,此外,工具箱中还给出了各种窗函数。对于非线性频谱分析,matlab也提供了多种成熟算法的相应函数。第1章 设计的过程本次课设题目是用matlab语言实现对模拟信号的处理。根据课程设计的任务和要求,设计思路如下:11 语音信号的采集首先利用电脑windows自带的录音机录制一段几秒钟自己的语音信号,如图:然后在matlab软件平台下利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用学生很快理解了采样频

10、率、采样位数等概念。该实验以研究者本人的声音为分析样本。在matlab 中使用wavread 函数, 可得出声音的采样频率fs 为22 050hz, 且声音是单通道的。利用sound函数, 可清晰地听到读音为: “*学院*班”。声音信号及属性如下所示: 录制的一段语音 语音的属性录制的语音信号音频格式pcm,平均数据速率 352kbps,采样级别 22khz,音频采样大小为16位,频道为单声道,从音频参数可以得出对录制的信号采样的频率为8000kz,本人录制的语音信号命名为 huang.wav录制号后将huang.wav文件放在d盘,其路径为d:my documentsmatlabhuang.

11、wav.12 语音信号的频谱分析然后利用matlab语句wavread进行采样:y,fs,n=wavread( d:my documentsmatlabhuang.wav ); %将采样后的语音信号赋给变量y再对采样后的语音信号y做2048点的fft变换,利用如下语句:y=fft(y,2048) 根据设计要求画出语音信号时域图plot(y),以及频谱图plot(abs(y)。如图要求我们首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在matlab中可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性,加深我们对频谱特性的理解。用sound(y,fs,n)语句播放语音,可清晰

12、地听到读音为: “华东交通大学软件学院06信息工程2班”。分析采样后语音信号的频谱图,任意选取一段噪声信号,本人选择了幅值为0.5,1.8k的余弦噪声信号,为了使噪声信号能加入道语音信号中,则所加噪声信号的点数调整到与原始信号相同,否则不能相加,f=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %将所加噪声信号的点数调整到与原始信号相同则噪声信号表达式为d=au*cos(2*pi*1800*t); 画出噪声时域波形plot(t,d)和频谱plot(f,abs(y2(1:512),如下图:只有噪声信号与语音信号的点数相同才可以将噪声加入语音信号中x2=

13、y+d; %将噪声加入到语音信号中画出加入噪声后的语音信号时域图plot(t,x2)然后画出加入噪声后语音信号频谱图并与原语音信号频谱图比较:根据加入噪声以后的语音信号的频谱图,选定滤波器的类型。通常分fir滤波器和iir滤波器,再根据分析结果得出滤波器的性能指标。根据本次课程设计的要求采用双线性变换法和窗函数法来设计滤波器。双线性变换法是先设计一个模拟iir滤波器,然后映射成一个等效的数字滤波器。双线性变换法有巴特沃思滤波器和切贝雪夫滤波器。窗函数法有矩形窗,三角窗,汉宁窗,海明窗,布拉克曼窗。本人采用了巴特沃思滤波器和海明窗来进行滤波器的设计。13 设计数字滤波器和画出其频率响应下面就巴特

14、沃思滤波器和海明窗设计滤波器详细介绍:(一)巴特沃思滤波器属于iir滤波器需要用到的有关语句如下:(1) n,wn=buttord(wp,ws,rp,rs)(2) n,wn=buttord(wp,ws,rp,rs,s)格式(1)对应数字滤波器,式中wp,ws分别使通带和阻带的截至频率,实际上它们是归一化频率,其值在01之间,1对应抽样频率的一半。对低通和高通滤波器,wp,ws都是标量,对带通和带阻滤波器,wp,ws都是12的向量。rp,rs分别是通带和阻带的衰减,单位为db。n是求出的相应低通滤波器的阶次,wn是求出的3db频率,它和wp稍有不同。格式(2)对应模拟滤波器,式中各个变量含义和格

15、式(1)相同,但wp,ws及wn的单位为rad/s,因此,它们实际上是频率。(3) z,p,k=buttap(n)此语句是用来设计模拟低通原型滤波器g(p),n是欲设计的低通原型滤波器的阶次,z,p和k分别是设计出的g(p)的极点、零点及增益。(4) b,a=lp2lp(b,a,wo) 或 b,a=lp2hp(b,a,wo)(5) b,a=lp2bp(b,a,wo,bw)或b,a=lp2bs(b,a,wo,bw)上式功能是将模拟低通原型滤波器g(p)分别转换为实际的低通、高通、带通及带阻滤波器。式中b,a分别是模拟低通原型滤波器g(p)的分子、分母多项式的系数向量,b,a分别是转换后的h(s)

16、的分子、分母多项式的系;在(4)中,wo是低通或高通滤波器的截至频率;在(5)中,wo是带通或带阻滤波器的中心频率,bw是其带宽。本次课程的设计的巴特沃思滤波器是低通滤波器,故用到式子b,a=lp2lp(b,a,wo).(6) bz,az=bilinear(b,a,fs)上式语句是实现双线性变换,即由模拟滤波器h(s)得到数字滤波器h(z).式中b,a 分别是h(s)的分子、分母多项式的系数向量,bz,az分别是h(z)的分子、分母多项式的系数向量,fs是抽样频率。在这里fs=8000.根据含有噪声的语音信号频谱图分析,本人设置wp=0.25*pi;ws=0.3*pi;rp=1;rs=15进行

17、设计巴特沃思低通滤波器。(二)海明窗滤波器属于fir型滤波器 海明(hamming)窗(又称为改进的升余弦窗)窗函数: (n)= rn(n)其频率响应的幅度函数为w()=0.54wr()+0.23 0.54wr()+0.23 ,(当n1)主瓣宽度为42/n=8/n,过渡带宽3.32/n。(7) b=fir1(n,f,m)上式中f是频率向量,其值在01之间,m是与f相对应的所希望的幅频响应,不指定窗函数类型时,则自动选择海明窗。本次课程设计用到类似语句为:n=ceil(6.6*pi/wdelta); %滤波器长度wn=(0.2+0.3)*pi/2;b=fir1(n,wn/pi,hamming(n

18、+1); %选择窗函数,并归一化截止频率根据含有噪声的语音信号频谱图分析,选取wp=0.25*pi; ws=0.3*pi;滤波器设计好后,画出两种滤波器的频率响应图:巴特沃思滤波器海明窗滤波器14 用滤波器对信号进行滤波要求我们用自己设计的各滤波器分别对采集的信号进行滤波,在matlab中fir滤波器利用函数fftfih对信号进行滤波,iir滤波器利用函数filter对信号进行滤波。因此我们用自已设计出来的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比。经过巴特沃思滤波器滤波的时域波形图和频谱图分别如下:分析信号的变化,根据两种滤波器滤波前后频谱图可

19、发现,在1200hz后的信号基本被滤除掉了,回放语音信号:sound(x2,8000); %播放含有噪声的语音信号sound(f1,8000); %播放经过巴特沃思滤波器滤波后的语音信号sound(f2,8000); %播放经过海明窗滤波器滤波后的语音信号滤波后的语音效果有明显的沉闷的感觉,其原因是滤除噪声的同时也滤除了一部分的语音信号,但总体上其滤波后的语音与原语音信号相差无几,也彻底的把噪声滤除掉了。25 比较滤波前后语音信号的波形及频谱要求我们在一个窗口同时画出滤波前后的波形及频谱。其程序如下:x=filter(b,a,y);xfft(x4096);subplot(223);plot(x

20、);title( 滤波后信号波形 );subplot(224);plot(abs(x);title( 滤波后信号频谱 ); 经过海明窗滤波器滤波滤波前后时域波形图及频谱图分别如下:26 回放语音信号在matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。27 设计系统界面为了使编制的程序操作方便,要求我们有能力的学生,设计处理系统的用户界面。在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。首先在matlab工作区键入guide,回车,出现一窗口,选择blank gui(defa

21、ult)。如界面图1界面图1点击ok确定后弹出一运行窗口,如界面图2界面图2菜单设置:选择名为menu editor的图标后,出现另一窗口,添加新的菜单,在label框中键入菜单名,子菜单还需在callback中键入连接的文件名,如界面图3界面图3界面图4 为了使设计的更加友好的matlab界面,我采用了如下的程序导入了图片界面图528 作者介绍及谢辞对于一篇优秀的论文,对作者进行一下介绍情况是必不可少的,我在matlab语言中调用helpdlg函数实现了其功能,效果很不错。如下所示:helpdlg(作者:*班 * 学号:*,关于作者);helpdlg(感谢*老师这一学年对我的课程指导!,谢辞

22、);第2章 设计的思想流程图录音噪声播放原音导入语音文件时域波形和频谱信号时域波形和频谱信号窗函数法双线性变化法海明窗滤波器加入噪声的语音信号信号巴特沃思滤波器频率响应时域波形和频谱信号频率响应滤波语音重放滤波滤波前后时域及频谱图比较滤波前后时域及频谱图比较第3章 课程设计的心得体会在设计之前,在图书馆参考了许多相关的资料,同时也从网络上查看和下载了一些有关的程序。在设计前又回顾了matlab的操作和滤波器的有关知识,从而有了基本的思路。本次课程设计是以数字信号处理为理论基础,利用matlab对信号进行分析,处理语音信号以及设计滤波器。课程设计题目是matlab语言实现对模拟信号的处理课程设计

23、,需要对语音信号进行采样、分析并滤波。从这次课程设计中,我认识到了书上的理论知识很好的和实际结合到了一起,首先要采集一段语音信号,因为原始的语音信号是模拟的,所以要对原始的语音信号进行采样,是通过函数wavread()来实现的,使我很好的掌握了这个函数的用法。数字滤波器设计包括了无限冲击响应(iir)和有限冲击响应(fir)滤波器设计,在本次课设中,iir滤波器本人设计了一种:巴特沃思低通滤波器,fir滤波器本人设计了海明窗低通滤波器。它们的性能指标是根据含有噪声的语音信号频谱图的特点设计的。在平时的理论学习中我们学习了数字滤波器的基本结构,无限长单位冲激响应数字滤波器的设计方法和有限长单位冲

24、激响应数字滤波器的设计方法,着重学习了利用模拟滤波器设计iir数字滤波器,从理论知识可知利用模拟滤波器设计数字滤波器就是要把s平面映射到z平面,使模拟系统函数h(s)变换成所需的数字滤波器的系统函数h(z),一般是利用冲激响应不变法、阶跃响应不变法、双线性变换法来实现模拟滤波器到数字滤波器的映射。在纯理论的学习中,我们学生对滤波器的设计还不了解。通过这次课设,使我对滤波器的设计有了更深层次的的认识。在整个程序中,多次使用了matlab的绘图功能,画出了低通滤波器的频率响应图,滤波前后的语音信号的时域图和频谱图,使我感受到了其强大的绘图功能,使得可以很直观的看出信号的种种特性,从而可以更加容易的

25、判断出对信号的处理是否达到了预期的目的。 “看花容易,绣花难”,我刚开始以为题目比较简单,所以就开始进行设计,但出现了许多未预料到的问题,首先便是语音信号的选取,这不仅仅是通过电脑中windows下的录音机录制一段信号便可,好的语音能使设计更加清晰简单,在该录制中要求录制的语音必须为8位单声道的,且语音的清晰度越高越好,录制时间不应过长,光这一项便花费了很长一段时间。录音完成后利用函数wavread对语音信号进行采样,在采样时采样频率为8hz,但在做程序时发现可以使用其它的采样频率,但采样后声音与原声明显不同,在设计中选择不同点数进行fft变换时所得出的结果不同,我在设计中尝试了很多种情况。在

26、绘制原始信号的时域波形和频谱图遇到的困难不是很多,但在添加噪声信号时却出现了很多问题,例如开始时始终无法将两个信号加在一块,后来在老师的解说下才发现录音的格式不符合,即所录的音必须为单声道的,这样才能和一维的高频余弦信号相加,解决完这点后又发现加噪声的程序会出现警告,这点会影响到m文件的使用,即到了后面设计界面时无法进行,后经过自己的检查和同学的指导最后还是解决了这一问题。在加完噪声后开始确定各参数设计滤波器时,这时需要前面学到的知识再次应用,根据具体的参数选择设计合适的滤波器对加噪后的信号进行滤波,在该设计中我选择的是巴特沃思低通滤波器和汉明窗滤波器,在设计这两种滤波器时要求对它们的原理都要

27、有一定的了解,这同时给了我们复习课程的机会,通过学到的和课本最终还是按要求得出了合适的滤波器,通过对比滤波前后的频谱特性图发现滤波后的信号不能完全达到原来信号那么完整和清晰,这也许是误差,也许是滤波器的选择还是存在一定的问题,但我认为这应该是误差吧!在设计界面的时要将文件分别保存到m文件中,发现汉字不能显示在最外层,设计完界面后利用界面来调取程序感觉简洁了好多,使人很容易就可以了解设计的思路。总的来说,这次课程设计帮助我巩固了平常所学习的理论知识,使我对所学的理论知识有了一个更深层次的理解和掌握,同时加强了我对matlab的运用能力,从而能够借助软件来更好的分析,处理信号和设计滤波器。在整个课

28、程设计过程中,编写程序与调试程序中出现了一系列的问题经过日夜认真琢磨分析后,最终改正了错误,把课程设计顺利完成,总的来说,通过这次的数字信号处理课程设计,收获还是很大的,可以把我们课本上的理论知识应用到实验中。 第4章 附录程序及相应的波形图附录一:主程序(1).用matlab对原始语音信号进行分析,画出它的时域波形和频谱将录制的语音信号与所有的程序放置在同一个文件夹,在程序中通过wavread()函数来读取这段原始信号,并绘出采样后其时域波形图和频谱图。程序如下:y,fs,n=wavread(d:my documentsmatlabhuang.wav); %将采样后的语音信号赋给变量yy=f

29、ft(y,2048) %对采样后的语音信号做2048点fft变换 figure(1);subplot(211);plot(y); %采样后语音信号的波形 title(原始信号波形);xlabel(时间n);ylabel(幅值n);subplot(212);plot(abs(y); %采样后语音信号的频谱 title(原始信号频谱);xlabel(hz);ylabel(幅值n);图1.原始信号时域波形及频谱(2).给原始的语音信号加上一个高频余弦噪声,频率为1800hzy,fs,n=wavread(d:my documentsmatlabhuang.wav); f=fs*(0:511)/2048

30、;t=0:1/8000:(size(y)-1)/8000; %将所加噪声信号的点数调整到与原始信号相同au=0.5; %噪声幅值d=au*cos(2*pi*1800*t); %噪声为1khz的余弦信号y2=fft(d,2048); %对噪声信号做2048点fft变换 figure(2)subplot(2,1,1);plot(t,d)title(噪声信号时域图);xlabel(时间n);ylabel(幅值n);subplot(2,1,2);plot(f,abs(y2(1:512);title(噪声信号频谱);xlabel(hz);ylabel(幅值n);图2.噪声信号频谱(3).将噪声信号加入原

31、始信号中程序 y,fs,n=wavread(d:my documentsmatlabhuang.wav); %将采样后的语音信号赋给变量yf=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %将所加噪声信号的点数调整到与原始信号相同au=0.5; %噪声幅值d=au*cos(2*pi*1800*t); %噪声为1.8khz的余弦信号x2=y+d; %将噪声加入到语音信号中y1=fft(y,2048); %对信号做2048点fft变换y2=fft(x2,2048); %对加入噪声以后的语音信号做2048点fft变换 figure(1)plot(t,x2)

32、title(加噪后的信号);xlabel(时间n);ylabel(幅值n);figure(2)subplot(2,1,1);plot(f,abs(y1(1:512);title(原始语音信号频谱);xlabel(hz);ylabel(幅值n);subplot(2,1,2);plot(f,abs(y2(1:512);title(加噪后的信号频谱);xlabel(hz);ylabel(幅值n);图3.加噪声后的信号图图4.原始语音信号频谱图及加入噪声后的信号频谱图(4).滤波器的类型设计程序双线性变换法设计巴特沃思低通滤波器y,fs,n=wavread(d:my documentsmatlabhu

33、ang.wav); %将采样后的语音信号赋给变量yf=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %将所加噪声信号的点数调整到与原始信号相同au=0.5; %噪声幅值d=au*cos(2*pi*1800*t); %噪声为1.8khz的余弦信号x2=y+d; %将噪声加入到语音信号中wp=0.25*pi;ws=0.3*pi;rp=1;rs=15;fs=8000;ts=1/fs;wp1=2/ts*tan(wp/2); %将模拟指标转换成数字指标ws1=2/ts*tan(ws/2); n,wn=buttord(wp1,ws1,rp,rs,s);%选择滤波

34、器的最小阶数z,p,k=buttap(n); %创建butterworth模拟滤波器bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn); bz,az=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换h,w=freqz(bz,az); %绘制频率响应曲线figure(1)plot(w*fs/(2*pi),abs(h)gridxlabel(频率hz)ylabel(频率响应幅度)title(butterworth)f1=filter(bz,az,x2);figure(2)subplot(2,1,1)plot(t,x2) %画出滤波

35、前的时域图title(滤波前的时域波形);subplot(2,1,2)plot(t,f1); %画出滤波后的时域图title(滤波后的时域波形);f0=fft(f1,2048);f=fs*(0:511)/2048;figure(3)y2=fft(x2,2048);subplot(2,1,1);plot(f,abs(y2(1:512); %画出滤波前的频谱图title(滤波前的频谱)xlabel(hz);ylabel(幅值);subplot(2,1,2)f1=plot(f,abs(f0(1:512); %画出滤波后的频谱图title(滤波后的频谱)xlabel(hz);ylabel(幅值); 图

36、5巴特沃斯低通滤波器 图6滤波前后时域波形图 图7滤波前后频谱图窗函数法设计滤波器:y,fs,n=wavread(d:my documentsmatlabhuang.wav); %将采样后的语音信号赋给变量yf=fs*(0:511)/2048;t=0:1/8000:(size(y)-1)/8000; %将所加噪声信号的点数调整到与原始信号相同au=0.5; %噪声幅值d=au*cos(2*pi*1800*t); %噪声为1.8khz的余弦信号x2=y+d; %将噪声加入到语音信号中wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;n=ceil(6.6*pi/wdelta);

37、%滤波器长度wn=(0.2+0.3)*pi/2;b=fir1(n,wn/pi,hamming(n+1); %选择海明窗函数,并归一化截止频率figure(1)freqz(b,1,512)f2=filter(bz,az,x2)figure(2)subplot(2,1,1)plot(t,x2)title(滤波前的时域波形);subplot(2,1,2)plot(t,f2);title(滤波后的时域波形);f0=fft(f2,2048);f=fs*(0:511)/2048;figure(3)y2=fft(x2,2048);subplot(2,1,1);plot(f,abs(y2(1:512);tit

38、le(滤波前的频谱)xlabel(hz);ylabel(幅值);subplot(2,1,2)f2=plot(f,abs(f0(1:512);title(滤波后的频谱)xlabel(hz);ylabel(幅值);图8海明窗滤波器图9滤波前后时域波形图图10滤波前后频谱图(5).用sound函数播放语音信号程序在matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。实现程序1:y,fs,bits=wavread(d:matlab6p5work12);%读取wav文件y=wavread(d:matlab6p5work12);su

39、bplot(211);plot(y);title(波形);%生成时域波形subplot(212);plot(abs(y);title(频谱图);%生成频谱图%用双线性变换法设计低通fp=1000;fc=1200;as=100;ap=1;fs=22050;wc=2*fc/fs;wp=2*fp/fs;n,wn=ellipord(wp,wc,ap,as);b,a=ellip(n,ap,as,wn);figure(2);freqz(b,a,512,fs);%声音回放sound(y,fs,bits)%x=filter(b,a,y);%x=fft(x,4096);%subplot(223);plot(x)

40、;title(滤波后信号的波形);%subplot(224);plot(abs(x);title(滤波后信号的频谱);实现程序2:y,fs,n=wavread(d:my documentsmatlabhuang.wav); %将采样后的语音信号赋给变量ysound(y,fs,n); %播放语音信号sound(d,8000) %播放噪声信号sound(x2,8000); %播发加入噪声以后的语音信号sound(f1,8000); %播放经过巴特沃思滤波器滤波后的信号sound(f2,8000); %播放经过海明窗滤波器滤波后的语音信号附录二:界面设计的程序function varargout =

41、 dsp(varargin)% dsp m-file for dsp.fig% dsp, by itself, creates a new dsp or raises the existing% singleton*.% h = dsp returns the handle to a new dsp or the handle to% the existing singleton*.% dsp(callback,hobject,eventdata,handles,.) calls the local% function named callback in dsp.m with the give

42、n input arguments.% dsp(property,value,.) creates a new dsp or raises the% existing singleton*. starting from the left, property value pairs are% applied to the gui before dsp_openingfunction gets called. an% unrecognized property name or invalid value makes property application% stop. all inputs ar

43、e passed to dsp_openingfcn via varargin.% *see gui options on guides tools menu. choose gui allows only one% instance to run (singleton).% see also: guide, guidata, guihandles% edit the above text to modify the response to help dsp% last modified by guide v2.5 10-jan-2008 15:24:46% begin initializat

44、ion code - do not editgui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, dsp_openingfcn, . gui_outputfcn, dsp_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & isstr(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargo

45、ut varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);end% end initialization code - do not edit% - executes just before dsp is made visible.function dsp_openingfcn(hobject, eventdata, handles, varargin)% this function has no output args, see outputfcn.% ho

46、bject handle to figure% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% varargin command line arguments to dsp (see varargin)% choose default command line output for dsphandles.output = hobject;% update handles structureguidata(hobject, handles);% uiwait makes dsp wait for user response (see uiresume)% uiwait(handles.figure1);% - outputs from this function are retur

温馨提示

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

评论

0/150

提交评论