1、数字信号处理课程设计报告学院(部) 信息工程学院 专 业 电子信息工程 班 级 24030902 学生姓名 周小军 学 号 2403090212 数字信号综合设计一、实验目的1学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法;2掌握在 Windows 环境下语音信号采集的方法;3掌握数字信号处理的基本概念、基本理论和基本方法;4掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法;5学会用 MATLAB 对信号进行分析和处理。二、实验原理2.1 语音信号采集与分析运用 windows 下的录音机,录制一段自己的话音,时间控制在一秒。然后在MATLAB 软件平台下,利用函
2、数 wavread 对语音信号进行采样,再运用 plot 函数画出语音信号的时域波形,最后在语音信号频谱分析时运用 fft 对信号进行快速傅里叶变换,得到频谱特性图形,具体运用见程序代码。2.2 滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计 FIR 滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用 fir1 函数设计线性相位 FIR 数字滤波器,再用 freqz 函数画出其频谱图形,最后运用 fftfilt 函数对信号进行滤波。而等波纹逼近法中则运用 remez 和 remezord 直接设计 FIR 滤波器,然后运用 fftfilt 函数对信号进行滤波。具体见程序代码。
3、2 )双线性变换法社设计 IIR 数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标: ph=2/T*tan(wp/2),然后用 butter 和 buttord、cheby1 和 cheb1ord、ellip 和 ellipord设计各种模拟滤波器,再用 bilinear 函数进行模拟滤波器和数字滤波器之间的转换,最后用 filter 函数对语音信号进行滤波,并运用函数 sound 播放滤波后语音。 三、主要实验仪器及材料微型计算机、Matlab7.x四、实验程序代码、结果和滤波性能分析1 )语音信号采集及频谱分析程序代码如下:%语音信号的时域波形和频谱特性c
4、lear all;close all;clc;file=zhong.wav; %zhong.wav的内容为“ 中华人民共和国”y,fs,nbits=wavread(file);sound(y,fs,nbits);yn=fft(y);figure(1);plot(y);title(语音时域波形);figure(2);freqz(yn);title(语音频谱特新);运行结果如下;先会听到“中华人民共和国”,然后会看到如下图形:图 语音时域波形图 语音频谱2 )窗函数设计滤波器及滤波程序代码如下:%用凯瑟窗设计FIR低通滤波器clear all;close all;clc ;fp=1000;fs=1
5、200;rs=100;Fs=8000; %kaiser滤波器设计wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Bt=ws-wp;alph=0.112*(rs-8.7);M=ceil(rs-8)/2.285/Bt);wc=(wp+ws)/2/pi;hn=fir1(M,wc,kaiser(M+1,alph);figure(1);freqz(hn);y,fn,nbits=wavread(zhong); Y=fft(y);y1=fftfilt(hn,y); %利用 kaiser滤波器对语音信号滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221
6、);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图3 凯瑟窗设计FIR 低通滤波器图 4 Kaiser 滤波器滤波前后语音波形、频谱%用凯瑟窗设计FIR数字高通滤波器clear all;close all;clc;fp=3000;fs=2800;FS=8000;as=100;wp=2*pi*fp/F
7、S;ws=2*pi*fs/FS;Bt=wp-ws;alph=0.112*(as-8.7);M=ceil(as-8/2.285/Bt);wc=(wp+ws)/2/pi;hn=fir1(M,wc,high,kaiser(M+1,alph);figure(1);freqz(hn)y,fn,nbits=wavread(zhong); Y=fft(y);y1=fftfilt(hn,y); 用kaiser滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);
8、title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果:图 凯瑟窗设计FIR数字高通滤波器图 Kaiser 滤波器滤波前后语音波形、频谱%用凯瑟窗设计FIR数字带通滤波器clear all;close all;clc;fp1=1200;fp2=300;fc1=1000;fc2=3200;FS=8000;as=100;wlp=2*pi*fp1/FS;wls=2*pi*fc1/FS;wup=2*pi*fp2
9、/FS;wus=2*pi*fc2/FS;Bt=min(wlp-wls,wus-wup);alph=0.112*(as-8.7);M=ceil(as-8/2.285/Bt);wc=(wlp+wls)/2/pi,(wup+wus)/2/pi;hn=fir1(M,wc,bandpass,kaiser(M+1,alph);figure(1);freqz(hn);y,fn,nbits=wavread(zhong); Y=fft(y);y1=fftfilt(hn,y); 用kaiser滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot
10、(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果:图 凯瑟窗设计 FIR 数字带通滤波器图 Kaiser 滤波器滤波前后语音波形、频谱 ) 等波纹逼近法设计滤波器及滤波程序代码如下:等波纹逼近法设计低通滤波器及滤波fp=1000;fs=1200;FS=8000;rp=1;rs=100;f=fp,fs;m=1,0;da
11、t1=(10(rp/20)-1)/(10(rp/20)+1);dat2=10(-rs/20);rip=dat1,dat2;M,fo,mo,w=remezord(f,m,rip,FS);M=M+1;hn=remez(M,fo,mo,w);figure(1);freqz(hn);y,fn,nbits=wavread(zhong); Y=fft(y);y1=fftfilt(hn,y); 用设计的滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);ti
12、tle(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图等波纹逼近法设计低通滤波器及滤波图 等波纹逼近法设计数字滤波器滤波前后语音波形、频谱等波纹逼近法设计高通滤波器及滤波fp=3000;fs=2800;FS=8000;rp=1;rs=100;f=fs,fp;m=0,1;dat1=(10(rp/20)-1)/(10(rp/20)+1);dat2=10(-rs/20);rip=dat2,dat1;M,f
13、o,mo,w=remezord(f,m,rip,FS);M=M+1;hn=remez(M,fo,mo,w);figure(1);freqz(hn);y,fn,nbits=wavread(zhong); Y=fft(y);y1=fftfilt(hn,y); 用设计的滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);
14、plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图等波纹逼近法设计高通滤波器图等波纹逼近法设计数字滤波器滤波前后语音波形、频谱等波纹逼近法设计带通滤波器及滤波fp1=1200;fp2=3000;fc1=1000;fc2=3200;FS=8000;rp=1;rs=100;f=fc1,fp1,fp2,fc2;m=0,1,0;dat1=(10(rp/20)-1)/(10(rp/20)+1);dat2=10(-rs/20);rip=dat2,dat1,dat2;M,fo,mo,w=remezord(f,m,rip,FS);M=M
15、+1;hn=remez(M,fo,mo,w);figure(1);freqz(hn);y,fn,nbits=wavread(zhong); Y=fft(y);y1=fftfilt(hn,y); 用设计的滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound
16、(y1,fn,nbits); %滤波后语音回放运行结果如下:图等波纹逼近法设计高通滤波器及滤波图 等波纹逼近法设计数字滤波器滤波前后语音波形、频谱 )双线性变换法设计数字滤波器设计模拟滤波器,再经双线性变换法设计数字滤波器程序代码如下:%butter设计模拟低通滤波器再用双线性变换法设计IIR 数字低通滤波器clear all;close all;clc;fp=1000;fc=1200;FS=8000;rp=1;rs=100; wpz=2*pi*1000/FS;wsz=2*pi*1200/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS; %预畸校正转换指标N,
17、wc=buttord(wp,ws,rp,rs,s);B,A=butter(N,wc,s);Bz,Az=bilinear(B,A,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0,1,-800,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(butter数字低通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-1;figure
18、(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图5 butter设计的数字低通滤波器频谱图6 滤波前后语音信号的时域波形和频谱%butter设计数字高通滤波器(此处直接运用了butter设计数字高通滤波器)clear all;close all;clc;fp=3000
19、;fc=2800;rp=1;rs=100;FS=8000;wp=2*pi*1000/FS;ws=2*pi*1200/FS;N,wc=buttord(wp,ws,rp,rs);B,A=butter(N,wc,high);w=0:0.01*pi:pi;h,w=freqz(B,A,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0,1,-800,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(butter数字高通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(B,A,
20、y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图7 butter设计的数字高通滤波器频谱图8 滤波前后语音信号的时域波形和频谱%butter设计数字带通滤波器(此处直接运用了butter设计数字
21、带通滤波器)clear all;close all;clc;fp1=1200;fp2=3000;fc1=1000;fc2=3200;rp=1;rs=100;FS=8000;wp=2*fp1/FS,2*fp2/FS;ws=2*fc1/FS,2*fc2/FS;N,wc=buttord(wp,ws,rp,rs);B,A=butter(N,wc);w=0:0.01*pi:pi;h,w=freqz(B,A,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0,1,-1000,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(bu
22、tter数字带通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(B,A,y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图 19 butter
23、设计的数带低通滤波器频谱图 20 滤波前后语音信号的时域波形和频谱设计模拟滤波器,然后经双线性变换法设计数字滤波器程序代码如下:%cheby1设计模拟低通滤波器再经双线性变换法设计成低通数字滤波器fp=1000;fc=1200;rp=1;rs=100;FS=8000;wpz=2*pi*fp/FS;wsz=2*pi*fc/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS;% 预畸校正转换指标N,wpo=cheb1ord(wp,ws,rp,rs,s);BH,AH=cheby1(N,rp,wpo,s);Bz,Az=bilinear(BH,AH,FS);w=0:0.01
24、*pi:pi;h,w=freqz(Bz,Az,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0,1,-800,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(cheby1数字低通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形)
25、;subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图 21 cheby1 数字低通滤波器图 22 滤波前后语音信号的时域波形和频谱%cheby1设计模拟高通滤波器再经双线性变换法设计成数字高通滤波器fp=3000;fc=2800;rp=1;rs=100;FS=8000;wpz=2*pi*fp/FS;wsz=2*pi*fc/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS;% 预畸校正转换指
26、标N,wpo=cheb1ord(wp,ws,rp,rs,s);BH,AH=cheby1(N,rp,wpo,high,s);Bz,Az=bilinear(BH,AH,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);plot(w/pi,20*log(abs(h),k);axis(0,1,-800,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(cheby1数字高通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-
27、1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图 2 cheby1数字高通滤波器图 24 滤波前后语音信号的时域波形和频谱%cheby1设计模拟带通滤波器再经双线性变换法设计成数字带通滤波器fp1=1200;fp2=3000;fc1=1000;fc2=
28、3200;rp=1;rs=100;FS=8000;wpz=2*pi*fp1/FS,2*pi*fp2/FS;wsz=2*pi*fc1/FS,2*pi*fc2/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS; %预畸校正转换指标N,wpo=cheb1ord(wp,ws,rp,rs,s);BH,AH=cheby1(N,rp,wpo,s);Bz,Az=bilinear(BH,AH,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0,1,-1000,100);
29、xlabel(w/pi);ylabel(幅度/dB);grid;title(数字带通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,f
30、n,nbits); %滤波后语音回放运行结果如下:图 25 cheby1 数字带通滤波器图 26 滤波前后语音信号的时域波形和频谱ellip 设计模拟滤波器,然后经双线性变换法设计数字滤波器%ellip设计模拟低通滤波器再经双线性变换法设计数字低通滤波器fp=1000;fc=1200;rp=1;rs=100;FS=8000;wpz=2*pi*fp/FS;wsz=2*pi*fc/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS;% 预畸校正转换指标N,wpo=ellipord(wp,ws,rp,rs,s);BH,AH=ellip(N,rp,rs,wpo,s);Bz
31、,Az=bilinear(BH,AH,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0,0.9,-400,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(ellip数字低通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subp
32、lot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图 27 ellip 数字低通滤波器频谱图 28 滤波前后语音信号的时域波形和频谱% ellip设计模拟高通滤波器再经双线性变换法设计数字高通滤波器fp=3000;fc=2800;rp=1;rs=100;FS=8000;wpz=2*pi*fp/FS;wsz=2*pi*fc/FS;wp=2*tan(wpz/2)
33、*FS;ws=2*tan(wsz/2)*FS;% 预畸校正转换指标N,wpo=ellipord(wp,ws,rp,rs,s);BH,AH=ellip(N,rp,rs,wpo,high,s);Bz,Az=bilinear(BH,AH,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);figure(1);plot(w/pi,20*log(abs(h),k);axis(0.1,1,-400,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(ellip数字高通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);
34、y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subplot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图 29 ellip 数字高通滤波器频谱图 30 滤波前后语音信号的时域波形和频谱% ellip设计模拟带通滤波器再
35、经双线性变换法设计数字带通滤波器fp1=1200;fp2=3000;fc1=1000;fc2=3200;rp=1;rs=100;FS=8000;wpz=2*pi*fp1/FS,2*pi*fp2/FS;wsz=2*pi*fc1/FS,2*pi*fc2/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS; %预畸校正转换指标N,wpo=ellipord(wp,ws,rp,rs,s);BH,AH=ellip(N,rp,rs,wpo,s);Bz,Az=bilinear(BH,AH,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);plot(w/p
36、i,20*log(abs(h),k);axis(0,1,-1000,100);xlabel(w/pi);ylabel(幅度/dB);grid;title(ellip数字带通滤波器);y,fn,nbits=wavread(zhong); Y=fft(y);y1=filter(Bz,Az,y); Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title(未滤波语音波形);subplot(222);plot(y1);title(滤波后语音波形);subplot(223);plot(n,Y);title(未滤波语音频谱);subpl
37、ot(224);plot(n,Y1);title(滤波后语音频谱);sound(y1,fn,nbits); %滤波后语音回放运行结果如下:图 31 ellip 数字带通滤波器频谱图 32 滤波前后语音信号的时域波形和频谱5 )各种滤波器性能比较如表一:性能类型 性能比较低通 声音变得低沉,虑掉了高音部分,音质较圆滑高通 只能听到声音音调高的部分,变得嘶哑、高亢,滤掉了低音,音质差Kaiser 设计 FIR 数字滤波器带通 只能听到声音某段音调,而其他频段被虑掉,音质差低通 声音变得低沉,虑掉了高音部分,音质较圆滑高通 只能听到声音音调高的部分,变得嘶哑、高亢,滤掉了低音,音质差等波纹逼近法设计
38、FIR 数字滤波器带通 只能听到声音某段音调,而其他频段被虑掉,音质差低通 只能听到“吱”的一声,几乎滤掉了所有音频,音质特别差高通 只能听到声音音调高的部分,变得嘶哑、高亢,滤掉了低音,音质差(此处没有先设计模拟滤波器,再线性变换后设计数字滤波器)Butter 设计 IIR 数字滤波器带通 只能听到声音某段音调,而其他频段被虑掉,音质差(此处没有先设计模拟滤波器,再线性变换后设计数字滤波器)低通 声音变得低沉,虑掉了高音部分,音质较圆滑高通 只能听到声音音调高的部分,变得嘶哑,高亢,滤掉了低音,音质差Cheby1 设计 IIR 数字滤波器带通 只能听到声音某段音调,而其他频段被虑掉,音质差低
39、通 声音变得低沉,虑掉了高音部分,音质较圆滑高通 只能听到声音音调高的部分,变得嘶哑、高亢,滤掉了低音,音质差Ellip 设计 IIR 数字滤波器带通 只能听到声音某段音调,而其他频段被虑掉,音质差表一五、实验结论由表一可知实验中的各种数字低通滤波器(butter 设计模拟滤波器再经双线变化法设计的数字低通滤波器除外)在相同采样频率下,对语音信号都有较好的过滤作用,让声音变得低沉、圆润,音质较好;而实验中各种数字高通滤波器则对高音部分有较好的保留作用,滤掉了低音部分,让声音变得嘶哑、高亢;实验中的各种数字带通滤波器对声音的某一频段有较好的保真的作用,但让语音变得急促。总之无论是哪种数字滤波器都有自己独特的作用,谁优谁劣,不能一概而论。六、实验思考双线性变换法中 和 之间的关系是非线性的,在实验中你注意到这种非线性关系了吗?从哪几种数字滤波器的幅频特性曲线中可以观察到这种非线性关系? 答:注意到了 和 之间的关系是非线性的,在用 butter、cheby1 和 ellip 设计的模拟滤波器,经再双线性变换法设计数字滤波器中,都运用了这种非线性关系,将数字指标转换成模拟指标,如预畸校正法就体现了这种非线性关系。