DSP 课程设计实验一、语音信号的频谱分析:要求首先画出语音信号的时域波形,然后对语音信号进行频谱分析。
在MATLAB 中,可以利用函数fft 对信号进行快速傅立叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
其程序为:>> [y,fs,bits]=wavread('I:\',[1024 5120]); >> sound(y,fs,bits); >> Y=fft(y,4096);>> subplot(221);plot(y);title('原始信号波形'); |>> subplot(212);plot(abs(Y));title('原始信号频谱'); 程序运行结果为:二、设计数字滤波器和画出频率响应: 根据语音信号的特点给出有关滤波器的性能指标:低通滤波器性能指标,p f =1000Hz ,c f =1200Hz ,s A =100dB ,p A =1dB ; 高通滤波器性能指标,c f =4800Hz ,p f =5000Hz ,s A =100dB ,p A =1dB ;带通滤波器性能指标,1p f =1200Hz ,2p f =3000Hz ,1c f =1000Hz ,2c f =3200Hz ,s A =100dB ,p A =1dB ;】要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数firl 设计FIR滤波器;然后再用双线性变换法设计上面要求的三种滤波器,在MATLAB中,可以利用函数butte、cheby1和ellip设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各种滤波器的频率响应,这里以低通滤波器为例来说明设计过程。
低通:用窗函数法设计的低通滤波器的程序如下:>> fp=1000;fc=1200;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;>> N=ceil(/*(wc-wp)/2))+1;>> beta=*;>> Win=Kaiser(N+1,beta);、>>b=firl(N,wc,Win);>>freqz(b,1,512,fs);程序运行结果:这里选用凯泽窗设计,滤波器的幅度和相位响应满足设计指标,但滤波器长度(N=708)太长,实现起来很困难,主要原因是滤波器指标太苛刻,因此,一般不用窗函数法设计这种类型的滤波器。
用双线性变换法设计的低通滤波器的程序如下:>> fp=1000;fc=1200;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;》>> [n,wn]=ellipord(wp,wc,Ap,As);>> [b,a]=ellip(n,Ap,As,wn);>> freqz(b,a,512,fs);^程序运行结果如图所示:这里选用椭圆函数设计,滤波器的幅度和相位响应满足设计指标,滤波器长度为N=11.三、用滤波器对信号进行滤波:&比较两种滤波器的性能,然后用性能好的滤波器对采集的信号进行滤波,在MATLAB中,FIR 滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
四、比较滤波前后语音信号的波形及频谱:要求在一个窗口同时画出滤波前后的波形及频谱,其程序如下:>> x=filter(b,a,y);>> X=fft(x,4096);>> subplot(211);plot(x);title('滤波后信号的波形');>> title('滤波后信号的波形');>> subplot(212);plot(abs(X));title('滤波后的频谱');@>> sound(x,fs);>> sound(x,fs);>> sound(x,fs,bits程序运行结果如图:五、回放语音信号:在MATLAB中,函数sound可以对声音进行回放。
其调用格式为;sound(x,fs,bits);,可以感觉滤波前后的声音有变化。
六、设计系统界面:为了使编织的程序操作方便,对于有能力的学生,可以利用MATLAB进行图形用户界面的设计,在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
七、其他滤波器的设计:切比雪夫高通滤波器:>> ft=8000;>> fp=3000;>> fs=3500;^>> wp1=tan(pi*fp/ft);>> ws1=tan(pi*fs/ft);>> wp=1;>> ws=wp1*wp/ws1;>> [N,wc]=cheb1ord(wp,ws,1,50,'s');>> [B,A]=cheby1(N,1,wc,'s');>> [b,a]=lp2hp(B,A,wn);>> [num1,den1]=bilinear(b,a,;《>> [h,w]=freqz(num1,den1);>> h=(h(1:501))';>> w=(w(1:501))';>> plot(w/pi,abs(h));>> legend('Cheby');滤波:>> yCheby=filter(b,a,y);fftCheby=fft(yCheby);->> magCheby=abs(fftCheby);>> subplot(2,2,1),plot(y);title('滤波前的波形');>> subplot(222),plot(abs(Y));title('滤波前的频谱图');>> subplot(223),plot(yCheby);title('滤波后的波形图');>> subplot(224),plot(magCheby);title('滤波后的频谱图');>> sound(yCheby,ft);高通滤波器:~>> fp=4800;fc=5000;As=100;Ap=1;fs=22050;>> wc=2*fc/fs;wp=2*fp/fs;>> [n,wn]=ellipord(wp,wc,Ap,As);>> [b,a]=ellip(n,Ap,As,wn,'high');>> freqz(b,a,512,fs);高通滤波:{>> X=fft(x,4096);>> subplot(211);plot(x);title('滤波后的信号波形'); >> subplot(211);plot(x);title('滤波后的信号波形'); >> subplot(212);plot(abs(X));title('滤波后的频谱');>> sound(x,ft);带通滤波器:>> fp1=1200;fp2=3000;fc1=1000;fc2=3200;As=100;Ap=1;fs=22050;(>> [n,wn]=ellipord([2*fp1/fs,2*fp2/fs],[2*fc1/fs,2*fc2/fs],1,100); >> [b,a]=ellip(n,Ap,As,wn,'bandpass');>> freqz(b,a,512,fs);滤波后:>> X=fft(x,4096);>> subplot(211);plot(x);title('滤波后的信号波形');>> subplot(211);plot(x);title('滤波后的信号波形');,>> subplot(212);plot(abs(X));title('滤波后的频谱');>> sound(x,ft);基于MATLAB的有噪声的语音信号处理的课程设计一、课程设计目的综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
二、;三、课程设计基本要求1、熟悉离散信号和系统的时域特性。
2、掌握序列快速傅里叶变换FFT方法。
3、学会MATLAB的使用,掌握MATLAB的程序设计方法。
4、利用MATLAB对语音信号进行频谱分析。
5、掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法。
四、课程设计实现产生噪声信号:-长度:[y,fs,bits]=wavread('I:\',[1024 5120]);Length(y)ans =4097>> y1=rand(4097,1)*+;>>> y2=y+y1;>> sound(y2,fs);>> subplot(211);plot(y);title('原始信号波形');>> subplot(212);plot(y2);title('被噪声污染的信号波形');五、语音信号频谱分析:;六、滤波器设计:IIR滤波器:fp=600;fc=950;As=100;Ap=1;fs=11025; wc=2*fc/fs;wp=2*fp/fs;[n,wn]=ellipord(wp,wc,Ap,As);[b,a]=ellip(n,Ap,As,wn);…freqz(b,a,512,fs);freqz(b,a,512,fs);切比雪夫滤波器:ft=8000;fp=1000;fs=1200;As=50;—Ap=1;wp1=2*pi*fp/ft;ws1=2*pi*fs/ft;wp=2*ft*tan(wp1/2);ws=2*ft*tan(ws1/2);[N,wc]=cheb1ord(wp,ws,Ap,As,'s'); [B,A]=cheby1(N,Ap,wc,'s');[b,a]=bilinear(B,A,ft);"[h,w]=freqz(b,a);h=(h(1:501))';w=(w(1:501))';plot(w/pi,abs(h));legend('Cheby');切比雪夫滤波器滤波:yCheby=filter(b,a,y2);fftCheby=fft(yCheby);!magCheby=abs(fftCheby);subplot(221),plot(y2);title('滤波前');subplot(222),plot(abs(Y2));title('滤波前频谱'); subplot(223),plot(yCheby);title('滤波后波形'); subplot(224),plot(magCheby);title('滤波后频谱图'); sound(yCheby,ft);Firl滤波器:(fp=600;fc=1000;As=100,Ap=1;fs=10025; wc=2*fc/fs;wp=2*fp/fs;N=ceil(/*(wc-wp)/2))+1;beta=*;Win=kaiser(N+1,beta);b=fir1(N,wc,Win);freqz(b,1,512,fs);As =100使用IIR滤波器进行滤波:x=filter(b,a,y2);X=fft(x,4096);subplot(211);plot(x);title('滤波后的波形'); subplot(212);plot(abs(X));title('滤波后的频谱'); sound(x,ft);。