《专业课程设计》说明书-基于Matlab含噪声语音信号处理设计.docx
《《专业课程设计》说明书-基于Matlab含噪声语音信号处理设计.docx》由会员分享,可在线阅读,更多相关《《专业课程设计》说明书-基于Matlab含噪声语音信号处理设计.docx(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录1软件介绍22语音信号的采集23语音信号的时频与加噪分析23.1 语音信号的时频分析23.2 语音信号的加噪分析24 FIR和IIR数字滤波器设计24.1 IIR数字滤波器设计24.1.1 IIR低通滤波器设计24.1.2 IIR带通滤波器设计24.1.3 IIR高通滤波器设计24.2 FIR滤波器设计24.2.1 FIR低通滤波器设计24.2.2 FIR带通滤波器设计24.2.3 FIR高通滤波器设计25 GUI设计及滤波结果分析25.1 GUI设计25.1.1 控件及界面设计25.1.2 设置回调函数25.2 滤波结果及分析25.2.1 滤波结果图25.2.2 结果分析26 心得体会
2、27 参考文献21软件介绍MATLAB是矩阵实验室MatrixLaboratory之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的根本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工
3、具包是专业性比拟强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.开放性使MATLAB广受用户欢送.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或参加自己编写程序构造新的专用工具包.一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码
4、,代替了C和 FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担忧函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。2语音信号的采集利用PC 机上的声卡和WINDOWS 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理,说完后停止录音,屏幕左侧将
5、显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“555保存入D: MATLAB work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。3语音信号的时频与加噪分析3.1 语音信号的时频分析Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数Wavread 函数调用格式如下:y=wavread(file)%读取file 所规定的wav 文件,返回采样值放在向量y中。y,fs,nbits=wavread(file) %采样值放在向量y 中,fs 表示采样频率,nbits 表示采样位数。y=
6、wavread(file,N)%读取钱N 点的采样值放在向量y 中。y=wavread(file,N1,N2)%读取从N1 到N2 点的采样值放在向量y 中。对语音信号555.wav 进行采样其程序如下:y,fs,nbits=wavered (555); %把语音信号进行加载入Matlab仿真软件平台fs =8000nbits =16首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在matlab中利用fft 对信号进行快速傅里叶变换,得到信号的频谱特性。其程序如下:y,fs,nbits=wavread (555);sound(y,fs,nbits); %回放语音信号n = length
7、 (y) ; %求出语音信号的长度Y=fft(y,n); %傅里叶变换subplot(2,1,1);plot(y);title(原始信号波形);subplot(2,1,2);plot(abs(Y);title(原始信号频谱)程序结果图如下:图 1 原始信号波形与频谱图3.2 语音信号的加噪分析利用MATLAB中的随机函数(rand或randn)产生噪声参加到语音信号中模仿语音信号被污染并对其频谱分析。其程序如下:y,fs,nbits=wavread (123); n = length (y) ; %求出语音信号的长度 noise=0.07*randn(n,2); %随机函数产生噪声 s=y+n
8、oise; %语音信号参加噪声 sound(s,fs,nbits); wavwrite(s,fs,nbits,AddNoise) subplot(2,1,1); plot(s);title(加噪语音信号的时域波形); S=fft(s); %傅里叶变换 subplot(2,1,2); plot(0:length(S)-1)/length(S)*8000,abs(S);title(加噪语音信号的频域波形);程序结果图如下:图 2 加噪语音信号波形与频谱图4 FIR和IIR数字滤波器设计根据语音信号的特点给出有关滤波器的新能指标: 低通滤波器的性能指标fp=1000Hz,fc=1200Hz,As=1
9、00db ,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 滤波器,利用函数butter,cheby1和ellip 设计IIR 滤波器,利用Matlab 中的函数freqz 画出各步步器的频率响应。分析如下:函数fir1 默认的设计滤波器的方法为窗函数法其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackm
10、an 窗其相应的都有实现函数。函数butter,cheby1 和ellip 设计IIR 滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。4.1 IIR数字滤波器设计 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,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,s); %求S 域的频率响应的参数num11,den11=bil
11、inear(b11,a11,0.5); %利用双线性变换实现频率响应S 域到Z 域的变换h,w=freqz(num11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);legend(用butter 设计);grid图3 IIR低通滤波器4.1.2 IIR带通滤波器设计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/ws
12、2;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,sqrt(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
13、(0 4000 0 1.5);grid;图4 IIR带通4.1.3 IIR高通滤波器设计Ft=8000;Fp=4000;Fs=3500;wp1=tan(pi*Fp/Ft);%高通到低通滤波器参数转换ws1=tan(pi*Fs/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
14、.5); %双线性变换频率响应S 到Z 域转换h,w=freqz(num13,den13);plot(w*21000*0.5/pi,abs(h);title(IIR 高通滤波器);axis(0 12000 0 1.5);grid;图5 IIR高通滤波器4.2 FIR滤波器设计4.2.1 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,wn2
15、1,beta,ftype=kaiserord(fpts,mag,dev);b21=fir1(n21,wn21,Kaiser(n21+1,beta); %由fir1 设计滤波器h,w=freqz(b21,1); %得到频率响应plot(w/pi,abs(h);title(FIR 低通滤波器);grid;图6 FIR低通滤波器 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*F
16、s2/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 域的频率响应的参数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*8
17、000*0.5/pi,abs(h);axis(0 4000 0 1.5);grid图7 FIR带通滤波器4.2.3 FIR高通滤波器设计Ft=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(b
18、23,1); %得到频率响应plot(w*12000*0.5/pi,abs(h);title(FIR 高通滤波器);axis(3000 6000 0 1.2);grid图8 FIR高通滤波器5 GUI设计及滤波结果分析5.1 GUI设计5.1.1 控件及界面设计在控件布局设计区放置3个Panel控件、7个Axes控件、7个Text控件、5个PushButton控件、2个RadioButton控件、1个CheckBox控件。界面设置如下:图9 控件版面设计5.1.2 设置回调函数保存后,在GUI主窗口点击M-file Editor,进入设置回调函数的界面。这里,虽然GUI自动生成了回调函数,但是
19、它们都是空的,需要进一步的定义说明。这里需要对5个PushButton控件的回调函数进行定义说明,将控件的回调函数定义完毕后,整个GUI根本设计完毕。% - Executes on button press in pushbutton3.低通滤波器设置function pushbutton3_Callback(hObject, eventdata, handles)if get(handles.radiobutton1,value) Ft=8000; Fp=1000; Fs=1200; wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft; fp=2*Ft*tan(wp/2); fs=2*
20、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); %根据参数求出频率响应 axes(handles.axes7);plot(w*8000*0.5/pi,abs(h);endif get(handles.radiobutton2,value) Ft=8000; Fp=1000; Fs=1200;
21、 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); b21=fir1(n21,wn21,Kaiser(n21+1,beta); %由fir1 设计滤波器 h,w=freqz(b21,1); %得到频率响应 axes(handles.axes7); plot(w/pi,abs(h);endif get(handles.radiobutton1,v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程设计 专业课程 设计 说明书 基于 Matlab 噪声 语音 信号 处理
限制150内