数字信号处理-语音处理系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级学号姓名实验组别
实验日期室温报告日期成绩
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:语音处理系统仿真(综合滤波器设计)
一、实验目的
通过本实验,使学生加深对数字信号处理系统结构的理解,通过不同采样频率对输出频谱和重构信号的影响,加深学生对采样定理的认识。通过不同类型滤波器的设计得到不同的输出频谱变化和语音处理效果,使学生进一步了解FIR 和IIR滤波器的特性,通过本实验,使学生掌握基本的时域、频域信号处理方法,同时提高学生综合应用所学理论知识分析问题解决问题的能力。
1.掌握采样定理、FFT、滤波器设计原理及数字信号处理系统的结果;
2.熟悉常用数字信号处理中的MATLAB函数;
3.设计系统框图,对各个模块的输出输入的时域和频域图形进行记录;
4.进行数据分析,完成实验报告。
二、实验内容
(1)信号预处理与采样:
通过MATLAB函数读取一段语音信号,通过不同模拟滤波器的设计完成抗混叠滤波,通过设置不同的采样频率来实现采样。
主程序:x=wavread('pp.wav');
n=0:1/22050:(size(x)-1)/22050;
subplot(2,2,1),plot(n,x);title('原语音信号');
[ya ba aa]=a_filter(x);
subplot(2,2,2),plot(n,ya);title('经模拟低通滤波器后的语音信号');
[H,Omg]=freqs(ba,aa);
subplot(2,2,3),plot(abs(H));title('滤波器的幅度谱');
subplot(2,2,4),plot(angle(H));title('滤波器的相位谱');
函数a_filter()程序:function [y b a]=a_filter(x)
fp=10000;wp=2*pi*fp;
fs=12000;ws=2*pi*fs;
Rp=1;As=30;
[n,wn]=buttord(wp,ws,Rp,As,'s');
[z0,p0,k0]=buttap(n);
b=k0*real(poly(z0));
a=real(poly(p0));
y=filter(b,a,x);
结果:
(2)均衡处理(综合滤波器设计):
通过设计FIR、IIR低通、带通、高通滤波器实现信号在低、中、高频段的
均衡。
经过FIR滤波器均衡主程序:x=wavread('pp.wav');
n=0:1/22050:(size(x)-1)/22050;
[yl_fir,b_low]=fir_lowpass(x);
subplot(3,3,1),plot(n,yl_fir);title('经FIR低通滤波器后的语音信号')
[db0,mag0,pha0,grd0,w0]=freqz_m(b_low,1);
subplot(3,3,2),plot(w0/pi,db0);title('FIR滤波器的幅度谱')
subplot(3,3,3),plot(w0/pi,pha0);title('FIR滤波器的相位谱')
[yb_fir,b_band]=fir_bandpass(x);
subplot(3,3,4),plot(n,yb_fir);title('经FIR带通滤波器后的语音信号')
[db1,mag1,pha1,grd1,w1]=freqz_m(b_band,1);
subplot(3,3,5),plot(w1/pi,db1);title(' FIR滤波器的幅度谱')
subplot(3,3,6),plot(w1/pi,pha1);title(' FIR滤波器的相位谱')
[yh_fir,b_high]=fir_highpass(x);
subplot(3,3,7),plot(n,yh_fir),title('经FIR高通滤波器后的语音信号')
[db2,mag2,pha2,grd2,w2]=freqz_m(b_high,1);
subplot(3,3,8),plot(w2/pi,db2);title(' FIR滤波器的幅度谱')
subplot(3,3,9),plot(w2/pi,pha2);title(' FIR滤波器的相位谱')
函数fir_lowpass()程序:function [y b]=fir_lowpass(x)
wp=0.22*pi; ws=0.46*pi;
w=ws-wp;
M=ceil(3.32*pi/w);
N=2*M+1;
wc=(ws+wp)/2;
window=hamming(N);
b=fir1(N-1,wc/pi,window);
y=filter(b,1,x);
函数fir_bandpass()程序:function [y b]=fir_bandpass(x)
w1=0.4*pi;w2=0.7*pi;
wn=[w1 w2];
w=w2-w1;
M=ceil(3.32*pi/w);
N=2*M+1;
window=hamming(N);
b=fir1(N-1,wn/pi,'bandpass',window);
y=filter(b,1,x);
函数fir_highpass()程序:function [y b]=fir_highpass(x)
wp=0.6*pi; ws=0.9*pi;
w=ws-wp;
M=ceil(3.32*pi/w);
N=2*M+1;
wc=(ws+wp)/2;
window=hamming(N);
b=fir1(N-1,wc/pi,'high',window);
y=filter(b,1,x);
结果: