1、工学院数字信号处理课程设计说明书设计题目语音信号的处理与滤波系 别计算机工程系专业班级 通信061学生姓名 学号指导教师 日期日摘要: 本文主要利用 MATLAB 工具采用双线性法和窗函数法设计 IIR 滤波器和 FIR 数字滤波器,并通过所设计的滤波器进行语音信号滤波分析,初步学会信号处理的过程和分析问题的能力。关键词 : MA TLAB 滤波器设计一引言随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。数字信号处理在通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用
2、。二 MATLAB 工具简介1 MA TLAB 是矩阵实验室( MatrixLaboratory )之意,现已发展成为适合多学科,多种工作平台的功能强大的大型软件,已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;2 MATLAB 的语言特点( 1 ) 。语言简洁紧凑,使用方便灵活,库函数极其丰富。 MATLAB 程序书写形式自由,利用起丰富的库 函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家 编写,用户不必担心函数的可靠性。( 2 )运算符丰富。由于MA TLAB 是用 C 语言编写的, MATL
3、AB 提供了和 C 语言几乎一样多的运算符,灵活使用 MATLAB 的运算符将使程序变得极为简短。( 3 ) MA TLAB 既具有结构化的控制语句(如 for 循环, while 循环, break 语句和 if 语句) ,又有面向对 象编程的特性。( 4)程序限制不严格,程序设计自由度大。例如,在MA TLAB 里,用户无需对矩阵预定义就可使用。( 5 )程序的可移植性很好,基本上不做修改就可在各种型号的计算机和操作系统上运行。( 6 ) MA TLAB 的图形功能强大。在FORTRAN 和 C 语言里,绘图都很不容易,但在MATLAB 里,数据的可视化非常简单。 MA TLAB 还具有较
4、强的编辑图形界面的能力。(7) MA TLAB 的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MA TLAB 的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。( 8)功能强大的工具箱是MATLAB 的另一特色。 MA TLAB 包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如 control,toolbox,signl procees
5、sing toolbox,commumnication toolbox 等。( 9 )源程序的开放性。开放性也许是MA TLAB 最受人们欢迎的特点。除内部函数以外,所有MA TLAB的核心文件和工具箱文件都是可读可改的源文件, 用户可通过对源文件的修改以及加入自己的文件 构成新的工具箱。三设计目的通过对课程设计,对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,培养发现问题,分析问题和解决问题的能力。四设计理论依据采样频率,采样位数的概念,采样定理;时域信号的DFT, FFT 及频
6、谱分析;数字滤波器的设计原理和方法。五设计过程(设计步骤)1语音信号的采集及频谱分析用WINDOWS的录音机,用单声道录制一段音乐或声音,时间在 5s内。然后MATLA嗽件平台下,利用函数WAVREAD语音信号进行采样,记住采样频率和采样点数。对语音信号进行快速傅立叶变换,在一个窗口同时画出信号的时域波形图和频谱图,分析语音信号的频谱特点。程序如下:y,fs,bits=wavread(music.wav,1024 61500);sound(y,fs,bits);Y=fft(y); plot(y);figure(1); title(语音信号的时域波形);gridfigure(2);plot(ab
7、s(Y); title(语音信号的频谱特性);grid图形如下:语音信号的时域波形语音信号的频谱特性2:设计数字滤波器给出个滤波器的性能指标:(1)低通滤波器性能指标 fb=1000HZ,fc=1200HZ,As=100dB,Ap=1dB(2)高通滤波器性能指标 fb=2800HZ,fc=3000HZ,As=100dB,Ap=1dB(3)带通滤波器性能指标fb1=1200HZ,fc1=1000HZ, fb2=2800HZ,fc2=3000HZ As=100dB,Ap=1dB用窗函数法和双线性变换法设计以上要求的3种数字滤波器绘制个滤波器的频率响应。IIR低通滤波器,程序如下:Ap=1; As=
8、100; fs=4000;fb=1000;fc=1200;%频率预畸wb=(fb/fs)*2*pi;%临界频率采用角频率表示wc=(fc/fs)*2*pi;%临界频率采用角频率表示OmegaP=2*fs*tan(wb/2);OmegaS=2*fs*tan(wc/2);n,wn=buttord(OmegaP,OmegaS,Ap,As,s);b,a=butter(n,wn,s);bz,az=bilinear(b,a,fs);% 映射为数字的H,W=freqz(bz,az);% 绘出频率响应plot(W*fs/(2*pi),abs(H);title(IIR低通滤波器);IIR 高通滤波器,程序如下:
9、fs=22050;Ap=1;As=100;fb=5000;fc=4800;wb=(fb/fs)*2*pi;% 临界频率采用角频率表示wc=(fc/fs)*2*pi;% 临界频率采用角频率表示OmegaP=2*fs*tan(wb/2);OmegaS=2*fs*tan(wc/2);n,wn=cheb1ord(OmegaP,OmegaS,Ap,As,s);b,a=cheby1(n,Ap,wn,high,s);bz,az=bilinear(b,a,fs);% 映射为数字的H,W=freqz(bz,az);% 绘出频率响应f=W/pi*11025;plot(f,20*log10(abs(H);title
10、(IIR 高通滤波器 );IIR 带通滤波器,程序如下:fb1=1200;fb2=3000;fc1=1000;fc2=3200;Ap=1;As=100;fs=8000;wb1=(fb1/fs)*2*pi; wb2=(fb2/fs)*2*pi;wc1=(fc1/fs)*2*pi;wc2=(fc2/fs)*2*pi;OmegaP1=2*fs*tan(wb1/2); OmegaP2=2*fs*tan(wb2/2);OmegaS1=2*fs*tan(wc1/2); OmegaS2=2*fs*tan(wc2/2);n,wn=cheb1ord(OmegaP1,OmegaP2,OmegaS1,OmegaS2
11、,Ap,As,s);b,a=cheby1(n,Ap,wn,bandpass,s);bz,az=bilinear(b,a,fs);% 映射为数字的H,W=freqz(bz,az);% 绘出频率响应f=fs*W/pi/2;plot(f,20*log10(abs(H);title(IIR 带通滤波器 );FIR 低通滤波器,程序如下:fb=1000;fc=1200;fs=22050;beta=10.056;wb=2*pi*fb/fs;wc=2*pi*fc/fs;width=wc-wb;wn=(wb+wc)/2;n=ceil(12.8/width*pi);b=fir1(n,wn/pi,kaiser(n
12、+1,beta);H,W=freqz(b);f=fs*W/pi/2;plot(f,20*log10(abs(H);grid on;FIR 高通滤波器,程序如下:fb=5000;fc=4800;fs=22050;n,Wn,beta,typ=kaiserord(fc, fb,0 1,0.001 0.001,fs);b=fir1(n,Wn,typ,kaiser(n+1,beta),noscale);H,W=freqz(b);f=fs*W/pi/2;%f=W/pi*(fs/2);plot(f,20*log10(abs(H);title(FIR高通滤波器);grid on;FIR带通滤波器,程序如下:f
13、s=12000;fcuts=1000,1200,3000,3200;mags=0,1,0;devs=0.01,0.0078,0.01;n,wn,beta,ftype=kaiserord(fcuts,mags,devs,fs);n=n+rem(n,2);b=f1(n,wn,ftype,kaiser(n+1,beta),noscale);H,W=freqz(b,1,1024,fs);plot(W,abs(H);title(FIR带通滤波器);各滤波器的图形如下:FIR带通滤波器3:用滤波器对信号进行滤波IIR低通滤波器滤波,程序如下:Ap=1; As=100; fs=4000;fb=1000;fc
14、=1200;%频率预畸wb=(fb/fs)*2*pi;%临界频率采用角频率表示wc=(fc/fs)*2*pi;%临界频率采用角频率表示OmegaP=2*fs*tan(wb/2);OmegaS=2*fs*tan(wc/2);n,wn=buttord(OmegaP,OmegaS,Ap,As,s);b,a=butter(n,wn,s);bz,az=bilinear(b,a,fs);% 映射为数字的H,W=freqz(bz,az);% 绘出频率响应plot(W*fs/(2*pi),abs(H);title(IIR低通滤波器);y,fs,bits=wavread(music.wav);x=filter(
15、bz,az,y);plot(x);title(滤波后的波形);grid onX=fft(x);plot(abs(X);title(滤波后的频谱);grid on滤波后的波形IIR高通滤波器滤波,程序如下:fs=22050;Ap=1;As=100;fb=5000;fc=4800;wb=(fb/fs)*2*pi;%临界频率采用角频率表示wc=(fc/fs)*2*pi;%临界频率采用角频率表示 OmegaP=2*fs*tan(wb/2);OmegaS=2*fs*tan(wc/2);n,wn=cheb1ord(OmegaP,OmegaS,Ap,As,s);b,a=cheby1(n,Ap,wn,high
16、,s);bz,az=bilinear(b,a,fs);% 映射为数字的 H,W=freqz(bz,az);% 绘出频率响应 f=W/pi*11025;plot(f,20*log10(abs(H);title(IIR高通滤波器); grid on;y,fs,bits=wavread(music.wav);x=filter(bz,az,y);plot(x);title(滤波后的波形);grid on X=fft(x);plot(abs(X);title(滤波后的频谱);grid on滤波后的波形IIR带通滤波器滤波,程序如下:fb1=1200;fb2=3000;fc1=1000;fc2=3200;
17、Ap=1;As=100;fs=8000;wb1=(fb1/fs)*2*pi; wb2=(fb2/fs)*2*pi;wc1=(fc1/fs)*2*pi;wc2=(fc2/fs)*2*pi;OmegaP1=2*fs*tan(wb1/2); OmegaP2=2*fs*tan(wb2/2);OmegaS1=2*fs*tan(wc1/2); OmegaS2=2*fs*tan(wc2/2);n,wn=cheb1ord(OmegaP1,OmegaP2,OmegaS1,OmegaS2,Ap,As,s);b,a=cheby1(n,Ap,wn,bandpass,s);bz,az=bilinear(b,a,fs);
18、% 映射为数字的H,W=freqz(bz,az);% 绘出频率响应f=fs*W/pi/2;plot(f,20*log10(abs(H);title(IIR带通滤波器);grid on;y,fs,bits=wavread(music.wav);x=filter(bz,az,y);plot(x);title(滤波后的波形);grid onX=fft(x);plot(abs(X);title(滤波后的频谱);grid on滤波后的波形滤波后的频谙FIR低通滤波器滤波,程序如下:fb=1000;fc=1200;fs=22050;beta=10.056;wb=2*pi*fb/fs;wc=2*pi*fc/
19、fs;width=wc-wb;wn=(wb+wc)/2;n=ceil(12.8/width*pi);b=fir1(n,wn/pi,kaiser(n+1,beta);H,W=freqz(b);f=fs*W/pi/2;%f=W/pi*(fs/2);plot(f,20*log10(abs(H);title(FIR低通滤波器);grid on;y,fs,bits=wavread(music.wav);x=fftfilt(b,y);plot(x);title(滤波后的波形);grid onX=fft(x);plot(abs(X);title(滤波后的频谱);grid on滤波后的波形0510150 10
20、.0500 05-0.1x 104FIR高通滤波器滤波,程序如下:fb=5000;fc=4800;fs=22050;fb,0 1,0.001 0.001,fs);n,Wn,beta,typ=kaiserord(fc, b=f1(n,Wn,typ,kaiser(n+1,beta),noscale);H,W=freqz(b);f=fs*W/pi/2;%f=W/pi*(fs/2);plot(f,20*log10(abs(H); title(FIR高通滤波器); grid on;y,fs,bits=wavread(music.wav);x=fftfilt(b,y);plot(x);title(滤波后的
21、波形);grid on X=fft(x);plot(abs(X);title(滤波后的频谱);grid onFIR带通滤波器滤波,程序如下:fs=12000;fcuts=1000,1200,3000,3200;mags=0,1,0;devs=0.01,0.0078,0.01;n,wn,beta,ftype=kaiserord(fcuts,mags,devs,fs);n=n+rem(n,2);b=f1(n,wn,ftype,kaiser(n+1,beta),noscale);H,W=freqz(b,1,1024,fs);plot(W,abs(H);title(FIR带通滤波器);y,fs,bit
22、s=wavread(music.wav);x=fftfilt(b,y);plot(x);title(滤波后的波形);grid onX=fft(x);plot(abs(X);title(滤波后的频谱);grid on滤波后的频谱4:回放语音信号对语音信号进行回放,感觉滤波前后语音信号的变化。Sound(x,fs,bits);五.总结与分析通过本次课程设计,使我们对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。同时可以看到滤波器在语音处理的重要性,学到了很多滤波器的设计方法,对 MATLAB这个软件有 了进一步的了解,巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号 处理的理论和方法,提高了自己的发现问题,分析问题和解决问题的能力。参考文献:1 .张威编.MATLAB基础与编程入门.西安:西安电子科技大学出版社,20052 .邹鲸,袁俊泉,编著.MATLAB 6.x信号处理.北京:清华大学出版社,20043.楼天顺,李博菌,编著.基于MATLAB的系统分析与设计一一信号处理.西安电子科技大学出版社