课程设计任务书语音信号滤波去噪——使用脉冲响应不变法设计的巴特沃斯滤波器摘要本课程设计主要运用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。
关键词课程设计;滤波去噪;巴特沃斯滤波器;脉冲响应不变法;MATLAB1 引言本课程设计主要利用麦克风采集一段8000Hz,8k的单声道语音信号,并绘制波形观察其频谱,再用MATLAB利用脉冲响应不变法设计一个巴特沃斯滤波器,将该语音信号进行滤波去噪处理。
1.1 课程设计目的《数字信号处理》课程设计是在学生完成数字信号处理和MATLAB的结合后的基本实验以后开设的。
本课程设计的目的是为了让学生综合数字信号处理和MATLAB并实现一个较为完整的小型滤波系统。
这一点与验证性的基本实验有本质性的区别。
开设课程设计环节的主要目的是通过系统设计、软件仿真、程序安排与调试、写实习报告等步骤,使学生初步掌握工程设计的具体步骤和方法,提高分析问题和解决问题的能力,提高实际应用水平。
1.2课程设计的要求(1)滤波器指标必须符合工程设计。
(2)设计完后应检查其频率响应曲线是否满足指标。
(3)处理结果和分析结论应该一致,而且应符合理论。
(4)独立完成课程设计并按要求编写课程设计报告。
2 设计原理用麦克风采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。
2.1 IIR滤波器I IR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。
其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。
FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。
对于线性相位滤波器,经常采用FIR 滤波器。
对于数字高通、带通滤波器的设计,通用方法为双线性变换法。
可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。
具体设计步骤如下:(1)确定所需类型数字滤波器的技术指标。
(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω)(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。
(4)设计模拟低通滤波器。
(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。
(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。
我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。
为了克服之一缺点,可以采用双线性变换法。
下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤:(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。
(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。
(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。
(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。
设IIR滤波器的输入序列为,则IIR滤波器的输入序列和输出序列之间的关系可用下列方程式表示:(2-1)其中和是滤波器的系数,且中至少有一个非零。
与上述差分方程对应的传递函数为:(2-2) 由传递函数可以发现无限长单位冲激响应滤波器有如下特点:(1)单位冲激响应是无限长的。
(2)系统传递函数在有限z平面上有极点存在。
(3)结构上存在着输出到输入的反馈,也就是结构上是递归型的。
设是某个模拟滤波器的频率响应,那么低通滤波器在幅度平方响应上的技术指标给出为:(2-3)(2-4)式中是通带波纹参数,是通带截止频率以rad/s(弧度每秒)计,A是阻带衰减参数,以及是阻带截止频率以rad/s计。
(2-5)(2-6)参数和A是分别与以dB计的参数和有关的,这些关系是(2-7)(2-8)波纹和的绝对标尺是通过下式与和A有关的:利用幅度平方响应给出的模拟滤波器要求(2-1)和(2-2)式不包含任何相位信息。
现在,为了求s域的系统函数,考虑那么有(2-12)或者有(2-9)因此,幅度平方函数的零点和极点相对于轴是以镜像对称方式分布的【2】。
接下来,我们根据语音信号的特点给出有关滤波器的技术指标:低通滤波器的性能指标:fp=1200Hz,fs=1200Hz,ft=8000Hz, As=20db ,Ap=1dB2.2 巴特沃斯滤波器MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是[N,wc]=butter(N,wc,Rp,As,’s’),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。
函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。
下面我们设计的IIR数字滤波器的主要程序:wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Ft*tan(ws/2);[n,wn]=buttord(wp,ws,Ap,As,'s');[b,a]=butter(n,wn,'s');[num,den]=bilinear(b,a,1);[h,w]=freqz(num,den);3.设计步骤3.1设计流程图语音信号滤波去噪——使用脉冲不变响应法设计的巴特沃斯滤波器的设计流程如图2所示:图1 脉冲响应不变法巴特沃斯滤波器对语音信号去噪流程图3.2语言信号的采集图3是基于PC机的语音信号采集过程:通过计算机录音系统录制1秒:图2 语音采集过程图3 录音过程截图3.3语音信号的频谱分析3.4滤波器设计将数字滤波器的设计指标设为通带截止频率fb=1100HZ,阻带频率fc=1200HZ,通带波纹Ap=1dB,阻带波纹As=20dB,要求确定H(z)。
设计程序如下:Fp=1200;Ft=8000;As=20;Ap=1;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Ft*tan(ws/2);[n,wn]=buttord(wp,ws,Ap,As,'s');[b,a]=butter(n,wn,'s');[num,den]=bilinear(b,a,1);[h,w]=freqz(num,den);Buttor波形如下图5:图5 IIR低通滤波器3.5 信号滤波过程[y,fs,nbits]=wavread('3333.wav');%载入波形N=length(y)%计算输入波形长度Y=fft(y,N);%进行快速傅里叶变换sound(y);%播放声音figure(4);%时域图figure(5);plot(abs(Y));%滤波前频谱图Fp=1200;%阻带截止频率Fs=1100;%通带截止频率Ft=8000;%采集频率As=20;%通带波纹Ap=1Ap=1;%阻带波纹As=20wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Ft*tan(ws/2);[n,wn]=buttord(wp,ws,Ap,As,'s'); %求低通滤波器的阶数和截止频率[b,a]=butter(n,wn,'s'); %求S域的频率响应的参数[num,den]=bilinear(b,a,1); %双线性变换实现S域到Z域的变换[h,w]=freqz(num,den); %根据参数求出频率响应figure(3)plot(w*8000*0.5/pi,abs(h));z=filter(num,den,y);sound(z);m=z; %求滤波后的信号figure(1)subplot(2,2,3);plot(abs(m),'r');title('滤波后信号的频谱');grid;subplot(2,2,4);plot(z,'b');title('滤波后的信号波形');grid;subplot(2,2,2);plot(y,'b');title('滤波前信号的波形');grid;subplot(2,2,1);plot(abs(Y),'r');title('滤波前信号的频谱');grid;figure(2);p=angle(m);q=angle(Y);subplot(2,1,1);plot(q,'b');title('滤波前相位');grid;subplot(2,1,2);plot(p,'b');title('滤波后相位');grid;所得波形为:图6.1滤波前后的时域对比波形和滤波前后频域频谱图图6.2滤波前后相位比较图3.5结果分析由图6.1中滤波前后波形比较可看出,经过滤波后的波形比原波形的振幅有所减小,去除了很多由于噪声所产生的干扰;从滤波前后的频谱比较可以看出经过滤波后除了原本的声音外,中间由于噪声产生的频谱波形已经滤除;由图6.2滤波前后相位比较图可看出由于经过滤波,相位变得稀疏;经过MATLAB仿真,听滤波前后的声音,可以听出有明显的滤波效果。
因此利用脉冲响应不变法设计的巴特沃斯滤波器已经达到了设计的要求。
4.出现的问题及解决方法在这次的课程设计中我们设计的滤波器对语音信号的滤噪处理或多或少会因为我们的疏忽或者实践能力不够还是会遇到问题的,当遇到问题时我们不但运用自己学到的知识还得到同学和老师的帮助将其解决,不断完善和修改。
设计中出现的问题及解决方法如下:(1)设计的滤波器达不到要求,因为在采集语音信号时,录音机的音频格式应该是PCM 8000kHz,8位,单声道。
若由非人发出的声音可能会被滤波器滤去,且声音文件最好在一秒左右。
(2)在运用Matlab设计滤波器时,当编辑完前面两条程序时无法放出声音,后来发现我们应当把采集的语音信号wav文件放到Matlab的work文件夹中。
(3)还要在滤波器性能曲线的wc处画一根竖线,这样更方便看出结果,其中wc 处线的确定还需计算出wb/pi的值。