1、实践3 对语音信号做时域波形分析和频谱分析,1、滤波器参数的设计,接下来的问题就是滤波,即将有用的信号保留下来,无用的信号去除。 滤波器的设计是基于前面信号的频谱分析为基础的。,从加噪信号的频谱图看到,两个语言信号的频谱区别还是很大的,msg1的能量主要集中在4000HZ附近,而system1的能量主要集中在1000HZ以内。 因此,我们可以选择低通滤波器来滤除msg1语言信号,或者选择高通滤波器来滤除system1语言信号。 参数提取(以低通滤波器为例): 1.通带截至频率WP=1000HZ,阻带截至频率WS=2000HZ,通带最大衰减RP=1db,阻带最小衰减RS=40db,设计低通巴特沃
2、斯滤波器。,补充:,2.数字频率与模拟频率之间的关系: 概念: 模拟频率f:每秒经历多少个周期,单位Hz,即1/s; 模拟角频率:每秒经历多少弧度,单位rad/s; 数字频率w:每个采样点间隔之间的弧度,单位rad。 数字频率W0=0*T,单位是rad(注意:不是rad/s)。 可见数字频率不是频率,而是一个弧度值,介于-, 。 W0=0*T=2*f0*T=2*f0/fs 由采样定理知|f0/fs|0.5, |W0| 其中f0是信号的频率,fs是采样频率。 模拟频率f: cos(2pi*f*t) 模拟角频率: cos( *t); 数字频率w: cos(w*n)=cos(*n*T) T为采样间隔
3、时间。cos(2pi*f*t) = cos( *t) = cos(*n*T) = cos(*T*n) = cos(w*n)。,IIR数字滤波器的设计,%步骤1 参数的设置参考li8.m clear all; close all;clc f_p=1000;f_s=2000;rp=1;rs=40;%设置指标 n=7001;fs=11025;Ts=1/fs;%采样频率 omgp1=2*pi*f_p omgs1=2*pi*f_s%模拟频率 wp=omgp1/fs ws=omgs1/fs%数字频率%步骤2 利用脉冲响应不变法设计巴特沃斯低通滤波器N1,wn1=buttord(omgp1,omgs1,rp
4、,rs,s);%计算巴特沃斯低通滤波器的阶数和3dB截止频率 N1 wn1 B1,A1=butter(N1,wn1,s);%代入N和Wn设计巴特沃斯模拟低通滤波器 bz1,az1=impinvar(B1,A1,fs);%冲激响应不变法设计数字滤波器 hz1,wz1=freqz(bz1,az1);%滤波器的幅频响应 figure(1); subplot(2,1,1); plot(wz1*fs/(2*pi),20*log10(abs(hz1)/hz1(1) axis(0 6000 -80 10); title(冲激响应不变法数字频率响应) xlabel(频率Hz) ylabel(幅值 A) gri
5、d on;,%步骤3 利用双线性变换法设计巴特沃斯低通滤波器 omgp2=2/Ts*tan(wp/2) omgs2=2/Ts*tan(ws/2) N2,wn2=buttord(omgp2,omgs2,rp,rs,s);%计算巴特沃斯低通滤波器的阶数和3dB截止频率 N2 wn2 B2,A2=butter(N2,wn2,s);%代入N和Wn设计巴特沃斯模拟低通滤波器 bz2,az2=bilinear(B2,A2,fs);%双线性变换法设计数字滤波器 hz2,wz2=freqz(bz2,az2);%滤波器的幅频响应 subplot(2,1,2); plot(wz2*fs/(2*pi),20*log
6、10(abs(hz2)/hz2(1) axis(0 6000 -80 10); title(双线性变换法数字频率响应) xlabel(频率Hz) ylabel(幅值 A) grid on;,FIR数字滤波器的设计,参数提取(以低通滤波器为例): 1.通带截至频率WP=1000HZ,阻带截至频率WS=2000HZ,通带最大衰减RP=0.3db,阻带最小衰减RS=40db,设计FIR低通滤波器。 衰减要求,查P145表,hann窗可以达到衰减要求。 Wn取1500HZ,%步骤4 窗函数法设计FIR滤波器 %根据hann窗公式6.2*pi/N=ws-wp wn=(wp+ws)/2 N=ceil(6.
7、2*pi/abs(ws-wp) h=fir1(N-1,wn/pi,hanning(N); hz3,wz3=freqz(h,1,n);%滤波器n点幅频响应 subplot(3,1,3); plot(wz3*fs/(2*pi),20*log10(abs(hz3)/hz3(1) axis(0 6000 -80 10); title(hanning窗函数FIR滤波器频率响应) xlabel(频率Hz) ylabel(幅值 A) grid on;,IIR滤波,%接下来滤波,参考li9.m y1=filter(bz1,az1,y);%滤波函数,y为被滤波信号 length(y1) subplot(3,1,
8、2); sound(y1,fs) plot(y1);%滤波后的语音信号的时域波形图 title(滤波后语音信号时域波形); xlabel(时间轴) ylabel(幅值 A) y_zp1=fft(y1,n);%对n点进行傅里叶变换到频域 f=fs*(0:(n-1)/2)/n;% 对应点的频率 subplot(3,1,3); plot(f,abs(y_zp1(1:length(f);%加噪语音信号的频谱图 title(滤波后语音信号频谱图); xlabel(频率Hz); ylabel(频率幅值);,FIR滤波,%接下来滤波,参考li10.m y1=filter(h,1,y);%滤波函数,y为被滤波
9、信号 %y1=fftfilt(h,y);%也可以采用这句话,都是利用差分方式来计算 length(y1) subplot(3,1,2); sound(y1,fs) plot(y1);%滤波后的语音信号的时域波形图 title(滤波后语音信号时域波形); xlabel(时间轴) ylabel(幅值 A) y_zp1=fft(y1,n);%对n点进行傅里叶变换到频域 f=fs*(0:(n-1)/2)/n;% 对应点的频率 subplot(3,1,3); plot(f,abs(y_zp1(1:length(f);%加噪语音信号的频谱图 title(滤波后语音信号频谱图); xlabel(频率Hz); ylabel(频率幅值);,设计任务: 将msg1.wav加入随机噪声,用贷通滤波器将msg1.wav提取出来。,