ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:1.17MB ,
资源ID:5211486      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5211486.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MATLAB的语音信号分析和处理.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MATLAB的语音信号分析和处理.docx

1、基于MATLAB的语音信号分析和处理基于MATLAB 的语音信号分析和处理福建师范大学协和学院 信息技术系 电子信息科学与技术专6028 王祯飞 指导老师 黄小芬 【摘要】本设计用微软录音机采集了一段语音,对其进行了时域分析,频谱分析,分析语音信号的特性。并应用matlab平台对语音信号加入了不同的噪声,进一步用双线性变换法设计了一个的巴特沃思低通滤波器,基于巴特沃斯模拟滤波器设计数字带通滤波器和用窗函数法设计了FIR低通滤波器,然后对加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性,回放加噪语音信号和去噪语音信号,对比研究了巴特沃思IIR滤波器和FIR滤波器在信号处理尤

2、其是信号滤波去噪方面的特性和应用。论文从理论和实践上比较不同数字滤波器的滤波效果。【关键词】 语音信号;频域特性; 时域特性; 滤波器1绪论1.1课题的研究意义语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言

3、信号处理具有时代的意义。1.2设计任务本设计先完成语音信号的采集,然后设计低通,高通,带通等滤波器对采集到的语音信号进行滤波处理,分析语音信号各频率段的特性。并对所采集的语音信号加入不同的干扰噪声,对加入噪声的信号进行频谱分析,针对受干扰语音信号的特点设计不同的滤波器,对加噪信号进行滤波,恢复原信号。把原始语音信号、加噪语音信号和滤波后的信号进行时域变换和频域变换,画出它们的时域波形和频域波形图,从视觉角度比较分析滤波的效果。也可将这3类信号进行播放从听觉角度感受滤波的效果。2基本原理2.1 语音信号概述语言是人类创造的,是人类区别于其他地球生命的本质特征之一。人类用语言交流的过程可以看成是一

4、个复杂的通信过程,为了获取便于分析和处理的语音信源,必须将在空气中传播的声波转变为包含语音信息并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音信号就成为语音的表现形式或载体。语音学和数字信号处理的交叉结合便形成了语音信号处理。语音信号处理是建立在语音学和数字信号处理基础之上的,对语音信号模型进行分析、存储、传输、识别和合成等方面的一门综合性学科。2.2数字滤波器原理若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。数字滤波器实质上是一种运算过程用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。数字

5、滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。(1)根据单位冲激响应h(n)的时间特性分类 无限冲激响应(IIR)数字滤波器 有限冲激响应(FIR)数字滤波器(2)根据实现方法和形式分类 递归型数字滤波器 非递归型数字滤波器 快速卷积型(3)根据频率特性分类 低通数字滤波器、高通数字滤波器、带通数字波器、 带阻数字滤波器3总体设计思想3.1 语音信号的采集Windows 自带了一个录音机程序(简称录音机)

6、,通过它可以驱动声卡采集、播放和简单处理语音信号。语音信号的采集可以用麦克风直接录制人的语音,也可以通过音频线或者MIDI 线将收音机、电视机或磁带录机中的语音信号采集到计算机中。在录音机中可以进行简单的声音处理,如加大或降低音量,加速或减速,声音的反转或添加回音效果等。加速或减速的改变可以完成变音功能,反转可以达到对声音文件保密的功能。本设计用是收音机接到电脑上用录音机录的,保存起来以备处理。3.2 语音信号处理工具的选择语音信号的进一步处理分析工作选用了matlab平台。MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大

7、量的内置函数,不断完善 MATLAB 产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。在编程效率、程序可读性、可移植性和可扩充性上matlab远远优于其它的高级编程语言,而且编程易学、直观,代码非常符合人们的思维习惯。另外matlab为用户提供了丰富的windows图形界面设计方法,使用户能够在利用其强大的数值计算功能的同时可设计出友好的图形界面,它受到了越来越多的用户的欢迎Matlab几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上,matlab远优越于其他的高级编程语言。Matlab语言具有强大的数值计算

8、能力和视图能力,其偏微分方程工具箱提供了有限元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。但是,和其他的高级语言相比,matlab程序的执行速度较慢。在目前电脑处理速度不断提升的情况下,如果实时性要求不是非常高的情况下,使用matlab开发就不存在此类问题了。3.3 数字滤波器的设计 本设计在matlab平台上,设计了IIR和FIR滤波器各种类型的滤波器。用以对语音原始信号及加噪的语音信号进行滤波,重点对加噪信号进行了滤波。对于IIR滤波器,它的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次可以较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟

9、滤波器的优良特性,因此应用很广。设计IIR数字滤波器的常用方法是从模拟滤波器来设计数字IIR滤波器。模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便。再将模拟滤波器转换为数字滤波器,其转换方法有冲激响应不变法和双线性Z变换法。一般,当着眼于滤波器的时域瞬态响应时,采用脉冲响应不变法较好,而其它情况下,对于IIR的设计,大多采用双线性变换法。 对于FIR滤波器,它有精确、严格的线性相位特性,并且可以做成既是因果的又是稳定的系统。所以FIR滤波器的应用越来越广泛。 IIR与FIR滤波器的性

10、能比较如下图3.1所示。 表3.1 IIR滤波器与FIR滤波器的性能比较IIR DFFIR DF(1)相位一般是非线性的(1)相位可以做到严格线性(2)不一定稳定(2)一定是稳定的(3)不能用FFT作快速卷积(3)信号通过系统可采用快速卷积(4)一定是递归结构(4)主要是非递归结构,也可含递归环节(5)对频率分量的选择性好(零极点可同时起作用)(5)选择性差(6)相同性能下阶次较低(6)相同性能下阶次高(7)有噪声反馈,噪声大(7)噪声小(8)运算误差大,有可能出现极限环振荡(8)运算误差小,不会出现极限环振荡(9)设计有封闭形式的公式,一次完成(9)没有封闭形式的设计公式,须靠经验与反复调试

11、(10)对计算手段的要求较低(10)一般需用计算机计算(11)主要用于设计分段常数的标准低通、高通、带通、带阻和全通滤波器(11)还可设计正交变换器、微分器、线性预测器、回波抵消器、均衡器、线性调频器等各种网络,适用范围广从上面的简单比较我们可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。例如,从使用要求上来看,在对相位要求不敏感的场合,如语言通讯等,选用IIR较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的

12、条件等多方面的因素。整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。而不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:(1) 按照实际任务的要求,确定滤波器的性能指标。(2) 用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。根据系统的不同的要求可以考虑用IIR系统函数或FIR系统函数去逼近。(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。4语音信号分析和滤波处理4.1 语音信号的采集把语音信号并保存为.wav文件,长度小于30秒,并对语言信号进行采样;录制的软件可以使用W

13、indows自带的录音机,或者也可以使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为了方便比较,需要在安静、无噪音、干扰小的环境下录。4.2 语音信号的读入与打开 在MATLAB中,y,fs,bits=wavread(Blip,N1 N2);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。N1 N2表示读取的值从N1点到N2点的值。 sound(y); 用于对声音的回放。向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并

14、绘出了语音信号的波形频谱图。x,fs,bits=wavread(wzf.wav); sound(x); X=fft(x,4096);magX=abs(X);angX=angle(X);subplot(221);plot(x);title(原始信号波形);subplot(222);plot(X); title(原始信号频谱);subplot(223);plot(magX);title(原始信号幅值);subplot(224);plot(angX);title(原始信号相位);程序运行可以听到声音,得到的结果图4-1所示:图4-1 语音信号的读入与打开4.3语言信号处理 用MATLAB绘制出语音信

15、号的时域波形图和原始语音信号的频率响应图和原始语音信号的FFT频谱图。程序设计如下:fs=22050; %语音信号采样频率为22050x,fs,bits=wavread(wzf.wav); sound(x,fs,bits); %播放语音信号y1=fft(x,1024); %对信号做1024点FFT变换f=fs*(0:511)/1024;figure(1)plot(x) %做原始语音信号的时域波形图title(原始语音信号时域图);xlabel(time n);ylabel(fuzhi n);figure(2)freqz(x) %绘制原始语音信号的频率响应图title(频率响应图)figure(

16、3)plot(f,abs(y1(1:512);title(原始语音信号频谱)xlabel(Hz);ylabel(fudu); 如下图4-2所示:图4-2语言信号分析在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:(1)单频噪色(正弦干扰);(2)高斯随机噪声。绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。程序代码如下:fs=22050; %语音信号采样频率为22050x,fs,bits=wavread(ding.wav); %读取语音信号的数据,赋给变量

17、x%sound(x)%t=0:1/22050:(size(x)-1)/22050;y1=fft(x,1024); %对信号做1024点FFT变换f=fs*(0:511)/1024;x1=rand(1,length(x); %产生一与x长度一致的随机信号 x2=x1+x;%t=0:(size(x)-1); %加入正弦噪音%Au=0.3;%d=Au*sin(6*pi*5000*t);%x2=x+d; sound(x2);figure(1)subplot(2,1,1)plot(x) %做原始语音信号的时域图形title(原语音信号时域图)subplot(2,1,2)plot(x2) %做原始语音信号

18、的时域图形title(加高斯噪声后语音信号时域图)xlabel(time n);ylabel(fudu);y2=fft(x2,1024);figure(2)subplot(2,1,1)plot(abs(y1)title(原始语音信号频谱);xlabel(Hz);ylabel(fudu);subplot(2,1,2)plot(abs(y2)title(加噪语音信号频谱);xlabel(Hz);ylabel(fudu);程序运行可以听到声音,得到的结果图4-4和图4-5所示:图4-4高斯随机噪声图4-5正弦sin噪声的加噪语音信号4.4滤波器的设计对加入高斯随机噪声和正弦噪声的语音信号进行滤波。用

19、双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。程序设计如下:x,fs,bits=wavread(wzf.wav);%sound(x)%随机噪声合成x2=rand(1,length(x); %产生一与x长度一致的随机信号 y=x+x2;%加入正弦噪声%t=0:(size(x)-1);%Au=0.3;%d=Au*sin(2*pi*500*t);%y=x+d;wp=0.1*pi;ws=0.4*pi;Rp=1;Rs=15;Fs=22050;Ts=1/Fs;wp1=2/Ts*tan(wp/2); %将模

20、拟指标转换成数字指标ws1=2/Ts*tan(ws/2); N,Wn=buttord(wp1,ws1,Rp,Rs,s); %选择滤波器的最小阶数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)gridf1=filter(bz,az,y);figure(2)subplot(2

21、,1,1)plot(t,y) %画出滤波前的时域图title(滤波前的时域波形);subplot(2,1,2)plot(t,f1); %画出滤波后的时域图title(滤波后的时域波形);sound(f1); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(y,1024);subplot(2,1,1);plot(f,abs(y2(1:512); %画出滤波前的频谱图title(滤波前的频谱)xlabel(Hz);ylabel(fuzhi);subplot(2,1,2)F1=plot(f,abs(F0(1:512); %画出滤波

22、后的频谱图title(滤波后的频谱)xlabel(Hz);ylabel(fuzhi);程序运行可以播放滤波前面的语音信号,对比滤波前面的语音效果,得到的结果分别图4-6和图4-7所示:图4-6高斯噪声滤波图4-7正弦噪声滤波利用双线性变换实现频率响应S域到Z域的变换法设计了巴特沃斯低通数字IIR滤波器,对加入高斯随机噪声和正弦噪声的语音信号进行滤波,并绘制了两滤波器滤波前后的语音信号时域图和频谱图。程序设计如下:Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);n11,

23、wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,s); %求S域的频率响应的参数 num11,den11=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 x,fs,nbits=wavread (wzf.wav);n = length (x) ; %求出语音信号的长度t=0:(n-1);x2=rand(1,length(x); %产生一与x长度一致的随机信号 y=x+x2;%加入正弦噪声%t=0:(size(x)-1);%Au=0.03;%d=Au*sin(2*pi*

24、500*t);%y=x+d;figure(1)f2=filter(num11,den11,y)subplot(2,1,1)plot(t,y)title(滤波前的加高斯噪声时域波形);subplot(2,1,2)plot(t,f2); %画出滤波后的时域图title(滤波后的时域波形);sound(f1); %播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(2)y2=fft(y,1024);subplot(2,1,1);plot(f,abs(y2(1:512); %画出滤波前的频谱图title(滤波前加高斯噪声的频谱)xlabel(Hz);yla

25、bel(fuzhi);subplot(2,1,2)F1=plot(f,abs(F0(1:512); %画出滤波后的频谱图title(滤波后的频谱)xlabel(Hz);ylabel(fuzhi);程序运行可以播放滤波前面的语音信号,对比滤波前面的语音效果,得到的结果分别图4-8和图4-9所示:图4-8高斯噪音滤波图4-9正弦噪音滤波设计了巴特沃斯带通数字IIR滤波器对加了高斯随机噪声和正弦噪声的语音信号进行滤波,并绘制了两滤波器滤波后的语音信号时域图和频谱图。程序设计如下:Wp=0.3*pi,0.7*pi;Ws=0.2*pi,0.8*pi;Ap=1;As=30;N,wn=buttord(Wp/

26、pi,Ws/pi,Ap,As); %计算巴特沃斯滤波器阶次和截止频率b,a=butter(N,wn,bandpass); %频率变换法设计巴特沃斯带通滤波器%db,mag,pha,grd,w=freqz_m(b,a); %数字滤波器响应%Plot(w/pi,mag);%Title(数字滤波器幅频响应|H(ejOmega)|)x,fs,nbits=wavread (wzf.wav);n = length (x) ; %求出语音信号的长度t=0:(size(x)-1);x2=rand(1,length(x); %产生一与x长度一致的随机信号 y=x+x2;%加入正弦噪声%n = length (x

27、) ; %求出语音信号的长度%t=0:(n-1);%Au=0.03;%d=Au*sin(2*pi*500*t);%y=x+d;f=filter(bz,az,y);figure(1)freqz(b,1,512)f2=filter(bz,az,y)figure(2)subplot(2,1,1)plot(t,y)title(滤波前的时域波形);subplot(2,1,2)plot(t,f2);title(滤波后的时域波形);sound(f2); %播放滤波后的语音信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(y,1024);subplot(2

28、,1,1);plot(f,abs(y2(1:512); %画出滤波前的频谱图title(滤波前的频谱)xlabel(Hz);ylabel(fuzhi);subplot(2,1,2)F1=plot(f,abs(F0(1:512); %画出滤波后的频谱图title(滤波后的频谱)xlabel(Hz);ylabel(fuzhi); 程序运行可以听到声音,得到的结果分别图4-10和图4-11所示:图4-10高斯噪声滤波图4-17正弦噪声滤波4.4.4 基于窗函数法的FIR滤器波使用窗函数法,选用海明窗设计了数字FIR低通滤波器对加了高斯随机噪声和正弦噪声的语音信号进行滤波,并绘制了两滤波器滤波后的语音

29、信号时域图和频谱图。程序设计如下:fs=22050;x,fs,bits=wavread(wzf.wav);%sound(x)t=0:(size(x)-1);x2=rand(1,length(x); %产生一与x长度一致的随机信号 y=x+x2;%加入正弦噪声t=0:(n-1); Au=0.03;d=Au*sin(2*pi*500*t);y=x+d;wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta); %取整wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1); %选择窗函数,并归一化截止频率fig

30、ure(1)freqz(b,1,512)f2=filter(bz,az,y)figure(2)subplot(2,1,1)plot(t,y)title(滤波前的时域波形);subplot(2,1,2)plot(t,f2);title(滤波后的时域波形);sound(f2); %播放滤波后的语音信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(y,1024);subplot(2,1,1);plot(f,abs(y2(1:512); %画出滤波前的频谱图title(滤波前的频谱)xlabel(Hz);ylabel(fuzhi);subplot(2,1,2)F1=plot(f,abs(F0(1:512)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1