MATLAB的有噪声的语音信号分析与处理设计武汉理工大学_第1页
MATLAB的有噪声的语音信号分析与处理设计武汉理工大学_第2页
MATLAB的有噪声的语音信号分析与处理设计武汉理工大学_第3页
MATLAB的有噪声的语音信号分析与处理设计武汉理工大学_第4页
MATLAB的有噪声的语音信号分析与处理设计武汉理工大学_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录1课程设计目的(4)2课程设计基本要求.(4)3课程设计内容.(4)4课程设计实现.(4)(1)语音信号的采集.(4)(2)语音信号的时频分析.(5)(3)语音信号加噪与频谱分析.(5)(4)设计FIR和IIR数字滤波器.(8)(5)用滤波器对加噪语音信号进行滤波.(6)比较滤波前后语音信号的波形及频谱(7)回放语音信号.5、心得体会.(11)6、参考文献.(11)基于MATLAB的有噪声的语音信号分析与处理设计1课程设计目的综合运用数字信号处理的理论知识对语音信号进行时频分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理

2、解,建立概念。2课程设计基本要求 1 ) 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。 2 ) 掌握在 Windows 环境下语音信号采集的方法。 3 ) 掌握数字信号处理的基本概念、基本理论和基本方法。 4 ) 掌握 MATLAB 设计 FIR 和IIR 数字滤波器的方法。5 ) 学会用 MATLAB 对信号进行分析和处理。3课程设计内容1) 选择一个语音信号作为分析对象,或录制一段语音信号;2) 对语音信号进行采样,画出采样后语音信号的时域波形和频谱图;3) 利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析;4) 设计FIR和II

3、R数字滤波器,并对被噪声污染的语音信号进行滤波,画出滤波前后信号的时域波形和频谱,并对滤波前后的信号进行比较,分析信号的变化;5) 回放语音信号。4课程设计实现(1)语音信号的采集利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“speech”保存入g : MATLAB work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。(2)语音信

4、号的时频分析Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数Wavread 函数调用格式y=wavread(file)%读取file所规定的wav文件,返回采样值放在向量y中。y,fs,nbits=wavread(file) %采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。y=wavread(file,N)%读取钱N点的采样值放在向量y中。y=wavread(file,N1,N2)%读取从N1到N2点的采样值放在向量y中。对语音信号speech.wav进行采样其程序如下:y,fs,nbits=wavered ('speec

5、h'); %把语音信号进行加载入Matlab 仿真软件平台中fs = 8000nbits = 16首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在matlab中利用fft对信号进行快速傅里叶变换,得到信号的频谱特性。其程序如下:y,fs,nbits=wavread ('speech');sound(y,fs,nbits); %回放语音信号n = length (y) ; %求出语音信号的长度Y=fft(y,n); %傅里叶变换subplot(2,1,1);plot(y);title('原始信号波形');subplot(2,1,2);plot(a

6、bs(Y);title('原始信号频谱')程序结果如下图:(3)语音信号加噪与频谱分析利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。其程序如下:y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 sound(s);subplot(2,1,1);plot(s);title('加噪语音信号的时域波形');S=fft(s

7、); %傅里叶变换subplot(2,1,2);plot(abs(S);title('加噪语音信号的频域波形')程序结果如下图:(4) 设计FIR和IIR数字滤波器根据语音信号的特点给出有关滤波器的新能指标: 低通滤波器的性能指标fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB 高通滤波器的性能指标fp=4800Hz,fc=5000Hz,As=100dB,Ap=1dB; 带通滤波器的性能指标fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB在Matlab中,可以利用函数fir1设计FIR

8、滤波器,利用函数butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。分析如下:函数fir1默认的设计滤波器的方法为窗函数法,其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。 函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。IIR低通:Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);f

9、s=2*Fs*tan(wp/2);n11,wn11=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,'s'); %求S域的频率响应的参数 num11,den11=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 h,w=freqz(num11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);legend('用butter设计');gridIIR带通:Fp1=1200;Fp2=3000;

10、Fs1=1000;Fs2=3200;Ft=8000;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=(wp1*wp2-w.2)/(bw*w);n12,wn12=buttord(wp,ws,1,50,'s'); %求低通滤波器阶数和截止频率b12,a12=butter(n12,wn12,'s'); %求S域的频率响应参数num2,den2=lp2bp(b12,a12,sq

11、rt(wp1*wp2),bw);%将S域低通参数转为带通的num12,den12=bilinear(num2,den2,0.5);%利用双线性变换实现频率响应S域到Z域的转换h,w=freqz(num12,den12);%根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);axis(0 4000 0 1.5);legend('用butter设计');grid;IIR高通:Ft=8000;Fp=4000;Fs=3500;wp1=tan(pi*Fp/Ft);%高通到低通滤波器参数转换ws1=tan(pi*Fs/Ft);wp=1;ws=wp1*wp/ws1;n13

12、,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域转换h,w=freqz(num13,den13);plot(w*21000*0.5/pi,abs(h);title('IIR高通滤波器');legend('用cheby

13、1设计');axis(0 12000 0 1.5);grid;FIR低通用窗函数设计低通滤波器的程序如下:Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.(-rp/20); %通带阻带波纹s=10.(-rs/20);fpts=wp ws;mag=1 0;dev=p s;n21,wn21,beta,ftype=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频率b21=fir1(n21,wn21,Kaiser(n21+1,beta); %由fir1设计滤波器h,w=f

14、reqz(b21,1); %得到频率响应plot(w/pi,abs(h);title('FIR低通滤波器');grid;FIR带通滤波器:Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;Ft=8000;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&

15、#39;); %求低通滤波器阶数和截止频率b22,a22=butter(n22,wn22,'s'); %求S域的频率响应的参数num2,den2=lp2bp(b22,a22,sqrt(wp1*wp2),bw); %将S域低通参数转为带通的num22,den22=bilinear(num2,den2,0.5);%利用双线性变换实现S域到Z域的转换h,w=freqz(num22,den22); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);axis(0 4000 0 1.5);legend('用butter设计');gridFIR高通:F

16、t=8001;Fp=4000;Fs=3500;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.(-rp/20); %通带阻带波纹s=10.(-rs/20);fpts=ws wp;mag=0 1;dev=p s;n23,wn23,beta,ftype=kaiserord(fpts,mag,dev);b23=fir1(n23,wn23,'high',Kaiser(n23+1,beta); %由fir1设计滤波器h,w=freqz(b23,1); %得到频率响应plot(w*12000*0.5/pi,abs(h);title('FIR高通滤波器

17、');axis(3000 6000 0 1.2);grid(5)用滤波器对加噪语音信号进行滤波用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。双线性变换法:i.低通滤波器z11=filter(num11,den11,s);ii.带通滤波器z12=filter(num12,den12,s);iii.高通滤波器z13=filter(num13,den13,s);窗函数法i.低通滤波器z21=fftfilt(b21,s);ii.带通滤波器z22=fftfilt(b22,s);

18、iii.高通滤波器z23=fftfilt(b23,s);(6)比较滤波前后语音信号的波形及频谱 双线性变换法i.低通滤波器y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声S=fft(s); %傅里叶变换z11=filter(num11,den11,s);sound(z11);m11=fft(z11); %求滤波后的信号subplot(2,2,1);plot(abs(S),'g');title(&

19、#39;滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m11),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(s);title('滤波前信号的波形');grid;subplot(2,2,4);plot(z11);title('滤波后的信号波形');grid;ii.带通滤波器y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2

20、); %随机函数产生噪声s=y+noise; %语音信号加入噪声S=fft(s); %傅里叶变换z12=filter(num12,den12,s);sound(z12);m12=fft(z12); %求滤波后的信号subplot(2,2,1);plot(abs(S),'g');title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m12),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(s);title('滤波前信号的波形');

21、grid;subplot(2,2,4);plot(z12);title('滤波后的信号波形');grid;iii.高通滤波器y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声S=fft(s); %傅里叶变换z13=filter(num13,den13,s);sound(z13);m13=fft(z13); %求滤波后的信号subplot(2,2,1);plot(abs(S),'g'

22、);title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m13),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(s);title('滤波前信号的波形');grid;subplot(2,2,4);plot(z13);title('滤波后的信号波形');grid;窗函数法i.低通滤波器y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.

23、01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换z21=fftfilt(b21,s);sound(z21);m21=fft(z21); %求滤波后的信号subplot(2,2,1);plot(abs(S),'g');title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m21),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(s);title('滤波前信号的波形&

24、#39;);grid;subplot(2,2,4);plot(z21);title('滤波后的信号波形');grid;ii.带通滤波器y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换z22=fftfilt(b22,s);sound(z22);m22=fft(z22); %求滤波后的信号subplot(2,2,1);plot(abs(S),'g')

25、;title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m22),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(s);title('滤波前信号的波形');grid;subplot(2,2,4);plot(z22);title('滤波后的信号波形');grid;iii.高通滤波器y,fs,nbits=wavread ('speech');n = length (y) ; %求出语音信号的长度noise=0.01*

26、randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 S=fft(s); %傅里叶变换z23=fftfilt(b23,s);sound(z23);m23=fft(z23); %求滤波后的信号subplot(2,2,1);plot(abs(S),'g');title('滤波前信号的频谱');grid;subplot(2,2,2);plot(abs(m23),'r');title('滤波后信号的频谱');grid;subplot(2,2,3);plot(s);title('滤波前信号的波形');grid;subplot(2,2,4);plot(z23);title('滤波后的信号波形');grid;分析:加入

温馨提示

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

评论

0/150

提交评论