基于matlab的语音信号录制采集和分析的程序课程设计.doc_第1页
基于matlab的语音信号录制采集和分析的程序课程设计.doc_第2页
基于matlab的语音信号录制采集和分析的程序课程设计.doc_第3页
基于matlab的语音信号录制采集和分析的程序课程设计.doc_第4页
基于matlab的语音信号录制采集和分析的程序课程设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

目录第一章 Matlab课程设计方案的提出1第一节 设计的主要内容及基本要求1一 主要内容1二 基本要求1第二节 设计方案1第二章 语音信号及其加噪2第一节 语音信号2一 语音信号的采集2二 语音信号的时域及频谱分析2第二节 语音信号的加噪和分析4一 语音信号的加噪4第三章 滤波器的选择8第一节 滤波器的基本概念8一 滤波器的功能8二 四种基本的滤波器9第二节 数字滤波器的基本知识9一 FIR数字滤波器9二 IIR数字滤波器10第三节 数字滤波器的选取11心得体会12参考文献13附录14第一章 Matlab课程设计方案的提出第一节 设计的主要内容及基本要求一 主要内容要求录制一段自己的语音信号后,在MATLAB软件中采集语音信号,回放语音信号并画出语音信号的时域波形和频谱图;对所采集的语音信号加入干扰噪声,对加入噪声后的信号进行播放,并画出时域和频谱分析;对比加噪声前后的时域图和频谱图,分析讨论采用什么样的滤波器进行滤除噪声。二 基本要求 学会使用MATLAB,掌握MATLAB的程序设计方法;掌握在Windows环境下语音信号的录制方法;掌握在MATLAB环境下语音信号的采集方法;用randn函数给原始信号加入高斯随机噪声;并会用MATLAB对信号进行分析和处理。第二节 设计方案 录制一段语音信号;然后,利用MATLAB中的wavread命令来读入语音信号,将它赋值给某一向量。再将该向量看做一个普通的信号,对其进行FFT变换实现频谱分析;随后,利用随机函数randn产生噪声加入其中,对其进行频谱分析。并用sound函数回放加噪声前后的语音。最后,分析比较加噪声前后的语音信号的波形及频谱。第二章 语音信号及其加噪第一节 语音信号一 语音信号的采集 首先,打开电脑;在计算机中Windows XP的操作系统中,点击开始附件录音机,就会启动计算机中录音机。这时按下开始录音按钮,就会开始录音,此时对着电脑说“你好”,说完后按下停止录音按钮,录音结束。到此,完成了自己的语音信号的录制。录制的语音信号的后缀名为.wav。然后将已录制好的语音信号命名为“你好”,再将其以该文件名保存在C:USERLenovoDOCUMENTSMATLAB中,此时本次课程设计的第一步录制一段自己的语音信号完成。二 语音信号的时域及频谱分析在MATLAB软件平台下,利用wavread函数对语音信号进行采样,得到了声音数据变量y,同时把y的采样频率Fs=8000Hz和数据位Nbits=8Bit放进了MATLAB的工作空间。用sound函数对语音信号进行播放,并可对语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。函数FFT的调用格式为:fft(x,n);其中,x为所要进行快速傅里叶变换的语音信号,n为所要进行的傅里叶变换的点数,在本次的课程设计中我所使用的n的点数为原语音信号的长度,但也可使用1024、512等。wavread函数的调用格式为:y,fs,nbits=wavread(语音信号文件名);sound函数的调用格式为:sound(y,fs,nbits);求信号的长度的函数为length(),其调用格式为:length(y);其中,y为所要求长度的信号。对原语音信号的采集及回放和时域、频域的波形的程序如下:y,fs,nbits=wavread(你好);%把语音信号加载入Matlab仿真软件平台sound(y,fs,nbits);%回放语音信号subplot(2,1,1);plot(y);title(原语音信号的时域波形);grid on;%加网格legend(Waveform );xlabel( Time (s) );%标横坐标ylabel(Amplitude );%标纵坐标n=length(y);%求出语音信号的长度Y=fft(y,n);%傅里叶变换Y1=fftshift(Y);%对频谱图进行平移subplot(2,1,2);plot(abs(Y1);title(原语音信号的频谱图);grid on;%加网格上述的程序是在MATLAB软件中采集并回放出原语音信号并画出其时域波形及频谱图。在MATLAB软件中运行上述程序可得到原语音信号的时域波形和其频谱图如图2.1所示。图2.1由频谱图可看出,原语音信号的频率大约集中在500Hz以内,由采样定理可得2=2500=1000Hz,故重放语音后仍可较清晰地听出原语音信号,不存在声音混叠现象。第二节 语音信号的加噪和分析一 语音信号的加噪(一) 噪声的构建在MATLAB中人为设计一噪声,在本次课程设计中利用MATLAB中的随机函数randn产生噪声。randn函数的基本调用格式有两种:randn(n)和randn(m,n),前者产生nn服从标准高斯分布的随机函数矩阵,后者产生mn的随机数矩阵。在这里,我们选用randn(m,n)函数,应注意的是:randn(m,n)的行和列即m、n应与原语音信号的行和列的长度保持一致。在这里构造的随机高斯噪声为noise=0.005*randn(n,1);即产生一列n行的随机高斯噪声,n为原语音信号的长度。构造的随机高斯噪声的程序如下所示:y,fs,nbits=wavread (你好);%把语音信号加载入Matlab仿真软件平台中n=length(y);%求出语音信号的长度noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声sound(noise);%回放噪声信号subplot(2,1,1);plot(noise);title(干扰噪声的时域波形);grid on;%加网格legend(Waveform );xlabel( Time (s) );%标横坐标ylabel(Amplitude );%标纵坐标N=fft(noise,n);%傅里叶变换 N1=fftshift (N);subplot(2,1,2);plot(abs(N1);title(干扰噪声的频谱图);grid on;%加网格上述程序可在MATLAB软件中回放出所构造的随机高斯噪声并画出它的时域波形及频谱图,在MATLAB软件中运行该程序可得所加的随机高斯噪声的时域波形如图2.2上所示及其频谱图如图2.2下所示。由图2.2中的频谱图我们可以看出,所加的随机高斯噪声为高频噪声,从频谱图可知,其频率主要集中在7k Hz以内。从回放的语音中,我们也可以清楚的听到所加的随机高斯噪声。图2.2(二) 噪声与原语音信号的叠加及叠加后时域、频谱分析在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。将原语音信号与noise叠加,调用的形式为:s=y+noise;其中,y为原语音信号,noise为所构造的随机高斯噪声,s即为两者的叠加后的语音信号。程序如下:y,fs,nbits=wavread(你好);%把语音信号加载入Matlab仿真软件平台n=length(y);%求出语音信号的长度noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声s=y+noise;%把噪声加入语音信号 sound(s,fs,nbits);%回放加入噪声后的语音信号subplot(2,1,1);plot(s);title(加入干扰噪声后的信号时域波形);grid on;%加网格legend(Waveform );xlabel( Time (s) );%标横坐标ylabel(Amplitude );%标纵坐标S=fft(s,n);%傅里叶变换 S1=fftshift(S);%对频谱图进行平移subplot(2,1,2);plot(abs(S1);title(加入干扰噪声后的信号频谱图)grid on;%加网格上述程序是在MATLAB软件中实现在原语音信号中加入构造的随机高斯噪声并画出加入噪声后的语音信号的时域波形,回放加入噪声后的声音。在MATLAB软件中运行该程序可得到加入噪声后的语音信号的时域波形图及频谱图如图2.3所示。从回放的语音中我们可以清楚的听到原语音信号“你好”以及所加的噪声,从图2.3的时域波形图中可以看出噪声加入后时域波形在1400Hz内都有明显的波形;从图2.3中的频谱图可以看出,加入噪声后的语音信号的频率的范围约集中在7kHz,原语音信号在500Hz 0|处收敛。系统单位冲激响应在有限个n值处不为零。结构上主要是非递归结构,没有输出到输入的反馈。故只能用较高的阶数达到高的选择性。FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位即不同频率分量的信号经过FIR数字滤波器后他们的时间差不变。FIR数字滤波器具有系统稳定,易实现相位控制,允许设计多带通滤波器等优点。(二)FIR结构FIR数字滤波器的结构有四种:横截性;级联型结构;频率采样型结构;线性相位FIR滤波器的结构。二 IIR数字滤波器(一)IIR数字滤波器的特点电位冲激响应h(n)是无限长的;系统函数H(z)在有限z平面上(0 |z|)有极点存在;结构上存在着输出到输入的反馈,也就是结构上是递归型的。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成。(二) 有限阶IIR的表达式: (3-2) (3-3)(三)IIR滤波器的四种结构IIR数字滤波器的结构也有四种:直接I型;直接II型典范型;级联型;并联型。第三节 数字滤波器的选取由图2-1和图2-2可以看出,语音信号的能量集中在低频部分,所以根据滤波器的特性和功能,所选择的滤波器应该具有滤除无用的高频成分的作用,所以可以选用低通滤波器。又由于IIR数字滤波器的输出不但取决于过去和现在的输入,还取决于过去的输出,所以,选择IIR数字滤波器比选择FIR数字滤波器要好。通过徐靖涛.基于MATLAB的语音信号分析与处理J.重庆科技学院学报2008,1中的2.4的阅读,可知,本语音信号的滤波选取椭圆型数字低通滤波器效果最好。心得体会这次的Matlab课程设计的题目是基于Matlab的语言信号录制采集和分析,刚开始布置下来题目的时候我觉得特别难,不知道该怎么做。于是去图书馆借书,可是又找不到语音信号的书,不过,在网上搜到了老师推荐的那两本参考资料,我很高兴。看过这两篇文章后,我开始写程序,原语音信号的采集和时域、频域分析很顺利;但是加噪声时,我遇到了困难,不知道该怎样加,按照网上的说法加,总是感觉不太对。于是,我问了同学,王争同学热心的帮助我解决问题,可是加噪声的频谱图依然没能得到解决,她也不知道对不对,也是感觉不太对。于是,她建议我去问老师,我也很乐意;但是第一次去找老师,老师不在,我只能等到第二天,当天晚上,我又试了试,还是得不到解决。第二天我去问老师了,老师热情的给我讲解了我的疑惑,我很激动,于是,在搞懂了那个问题后,我赶快接着写,顺利的完成了本次的课程设计。在这次的课程设计中,我非常感谢老师给我的帮助,也很感谢同学给我的帮助。这次的课程设计,让我对语音信号有了更深的认识,对Matlab能更熟练地应用,对信号处理有了更直观的感受。我学会了将录制的语音采集到Matlab中,在Matlab中回放,加噪声,应该用什么样的滤波器滤除噪声。这些让我对自己以前所学的有了更好的体会,增加了我对信号这方面的兴趣。参考文献【1】徐靖涛.基于MATLAB的语音信号分析与处理J.重庆科技学院学报2008,1【2】张文.基于MATLAB的语音信号的滤波与实现J.山西电子技术.2008,2【3】黄文填,李金平.基于MATLAB的语音信号分析和滤波处理J.北京联合大学信息学院.2009,45【4】陈怀琛. MATLAB及在电子信息课程中的应用M.北京:电子工业出版社.2008.1附录总程序如下所示:figure(1);y,fs,nbits=wavread(你好);%把语音信号加载入Matlab仿真软件平台sound(y,fs,nbits);%回放语音信号subplot(2,1,1);plot(y);title(原语音信号的时域波形);grid on;%加网格legend(Waveform );xlabel( Time (s) );%标横坐标ylabel(Amplitude );%标纵坐标n=length(y);%求出语音信号的长度Y=fft(y,n);%傅里叶变换Y1=fftshift(Y);%对频谱图进行平移f=(0:length(y)- 1)/ fs;%得出频点subplot(2,1,2);plot(f,abs(Y1);title(原语音信号的的频谱图);grid on;%加网格figure(2);y,fs,nbits=wavread(你好);%把语音信号加载入Matlab仿真软件平台n=length (y) ;%求出语音信号的长度 noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声s=y+noise;%把噪声加入语音信号 sound(

温馨提示

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

评论

0/150

提交评论