1、题目 2:基于 Matlab 的数字滤波器设计及其对语音信号的应用一 课程设计的目的:1掌握数字信号处理的基本概念、基本理论和基本方法; 2掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法; 3掌握在 Windows 环境下语音信号采集以及时域、频域分析;4学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法;5学会用 MATLAB 对信号进行分析和处理。二 课程设计内容:1录制一段自己的语音信号 ,对录制的信号进行采样 ;2画出采样后语音信号的时域波形和频谱图;3给定滤波器的性能指标,采 matlab 设计数字滤波器,并画出滤波器的频率响应;4用自己设计的滤波器对采集
2、的信号进行滤波,画出滤波后信号的时域波形和频谱 ,并对滤波前后的信号进行对比,分析信号的变化;5回放语音信号。三.滤波器设计方法综述:(1)直接设计数字滤波器(2)脉冲相应不变法(3)双线性变换(4)使用 matlab6 下的 Filter Designed Tool3利用 Matlab 设计数字滤波器的方法:设计思路:首先将数字高通滤波器的技术指标转化为模拟滤波器的技术指标,再采用 Buttetworth逼近的方法求得其系统函数 H(S),再利用冲激响应不变法将模拟滤波器的系统函数 H(s)变为相应的数字滤波器的系统函数 H(Z),然后用 MATALB 进行仿真,然后确定数字滤波器的结构。四
3、.设计任务及步骤:1.语音信号的采集方法一:通过开始程序附件娱乐录音机,录制一段自己的话音。方法二:或利用老师给的语音,在 Matlab 软件平台下,利用函数 wavread 对语音信号进行采样,记住采样频率和采样点数。函数:wavrecord(2*fs,fs)程序如下:y,fs,bite=wavread(1.wav);sound(y)wavrecord(2*fs,fs);fft(y);Y=fft(y);fp=1000;fr=1200;as=40;ap=1;N, Wn = BUTTORD(2*fp/fs, 2*fr/fs, ap, as);B,A = BUTTER(N,Wn);2语音信号的频谱
4、分析要求画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。fft程序如下:y,fs,bite=wavread(1.wav);sound(y);Y=fft(y);mag=abs(Y); phase=angle(Y);phase=phase*180/pi;dB=20*log10(abs(Y)+eps);t=(0:length(y)-1)/fs;figure(1)subplot(221);plot(t,y);title(波形图);xlabel(时间(s);ylabel( 幅度);f=(1:length(Y)*fs/length(Y);subplot(222);plot(f,
5、mag);title(幅度谱);xlabel(频率(Hz);ylabel( 频谱幅度);subplot(223);plot(f,phase);title(相位谱);xlabel(频率(Hz);ylabel(频谱相位);subplot(224);plot(f,dB);title(对数幅度谱);xlabel(频率(Hz);ylabel( 频谱幅度(dB);x1=wavread(f:s1.wav); %读取语音信号的数据,赋给变量 x13设计数字滤波器,画出其频率响应曲线各滤波器的性能指标:(1)低通滤波器性能指标 fp1000Hz, fs1200Hz, As40dB, Ap1dB。(2)高通滤波器
6、性能指标 fs4000Hz, fp4300Hz, As40dB, Ap1dB(3)带通滤波器性能指标 fp1 1200 Hz, fp23 000 Hz, fs11000 Hz, fs23200 Hz, As40dB, Ap1dB 。要求:(1)频率变换法设计 IIR 滤波器: 可以利用函数 butter、cheby1、cheby2 和 ellip 等设计。(2)(选做)设计 IIR 滤波器:用双线性变换法设计上面要求的 3 种滤波器。bilinear(3)(选做)设计 FIR 滤波器:用窗函数法设计上面要求的 3 种滤波器。可以利用函数 fir1 设计 FIR 滤波器。(4)函数 freqz
7、画出各滤波器的频率响应。低通滤波器:1(频率变换法设计 IIR 滤波器)butter 函数y,fs,bit=wavread(1);fp=1000;fr=1200;ap=1;as=40;n,fn= buttord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=butter(n,fn);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(butter 低通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号
8、 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);sound(y1,fs,bit);2(频率变换法设计 IIR 滤波器)cheby1 函数y,fs,bit=wavread(1);fp=1000;fr=1200;ap=1;as=40;n,fn=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=cheby1(n,ap,fn);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h
9、);title(cheby1 低通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);sound(y1,fs,bit);3(频率变换法设计 IIR 滤波器)cheby2 函数y,fs,bit=wavread(1);fp=1000;fr=1200;ap=1;as=40;n,fn=cheb2ord(fp/(fs/2),fr/(fs/2),ap,
10、as,z);b,a=cheby2(n,ap,fn);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(cheby2 低通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);sound(y1,fs,bit);得出来的信号波形如下:4(频率变换法设计 IIR
11、 滤波器)ellip 函数y,fs,bit=wavread(1);fp=1000;fr=1200;ap=1;as=40;n,fn=ellipord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=ellip(n,ap,as,fn);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(ellip 低通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);tit
12、le(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);sound(y1,fs,bit);高通滤波器:1(频率变换法设计 IIR 滤波器)butter 函数y,fs,bit=wavread(1);fp=4300;fr=4000;ap=1;as=40;n,fn= buttord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=butter(n,fn,high);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(butter 高通滤波)
13、;y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);2(频率变换法设计 IIR 滤波器)cheby1 函数y,fs,bit=wavread(1);fp=4300;fr=4000;ap=1;as=40;n,fn=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=cheby1(n,ap,fn,high);freqz(
14、b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(cheby1 高通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);3(频率变换法设计 IIR 滤波器)cheby2 函数y,fs,bit=wavread(1);fp=4300;fr=4000;ap=1;as=40
15、;n,fn=cheb2ord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=cheby2(n,ap,fn,high);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(cheby2 高通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号
16、);4(频率变换法设计 IIR 滤波器)ellip 函数y,fs,bit=wavread(1);fp=4300;fr=4000;ap=1;as=40;n,fn=ellipord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=ellip(n,ap,as,fn,high);freqz(b,a);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(ellip 高通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subpl
17、ot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);带通滤波器:1y,fs,bit=wavread(1);fp1=1200;fr1=1000;fp2=3000;fr2=3200;ap=1;as=40;fp=fp1,fp2;fr=fr1,fr2;n,fn=buttord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=butter(n,fn);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(butter 带通滤
18、波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);2y,fs,bit=wavread(1);fp1=1200;fr1=1000;fp2=3000;fr2=3200;ap=1;as=40;fp=fp1,fp2;fr=fr1,fr2;n,fn=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=cheby1(n,
19、ap,fn);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(cheby1 带通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);3y,fs,bit=wavread(1);fp1=1200;fr1=1000;fp2=3000;fr2=3200;ap=1;as=40;fp=
20、fp1,fp2;fr=fr1,fr2;n,fn=cheb2ord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=cheby2(n,ap,fn);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(cheby2 带通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音
21、信号);4y,fs,bit=wavread(1);fp1=1200;fr1=1000;fp2=3000;fr2=3200;ap=1;as=40;fp=fp1,fp2;fr=fr1,fr2;n,fn=ellipord(fp/(fs/2),fr/(fs/2),ap,as,z);b,a=ellip(n,ap,as,fn);h,w=freqz(b,a);subplot(221);plot(w*fs/(2*pi),abs(h);title(ellip 带通滤波);y1=filter(b,a,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );su
22、bplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);窗函数1.低通y,fs,bit=wavread(1);fr=1000;wr=2*pi*fr;Window=boxcar(8);b=fir1(7,fr/(fs/2),Window);h,w=freqz(b,1);subplot(221);plot(w*fs/(2*pi),abs(h);title(低通滤波);y1=filter(b,1,y);y2=fftfilt(b,y);subplot(222);plot(y);title(原始语音信号 );subplot(223);plot(y1);title(IIR 滤波后语音信号);subplot(224);plot(y2);title(FIR 滤波后语音信号);sound(y1,fs,bit);