长安大学数字信号处理综合设计专业_______电子信息工程_______班级__24030602___________姓名_______张舒_______学号2403060203指导教师陈玲日期_______2008-12-27________一、课程设计目的:1. 进一步理解数字信号处理的基本概念、基本理论和基本方法;2.熟悉在Windows环境下语音信号采集的方法;3.学会用MATLAB软件对信号进行分析和处理;4.综合运用数字信号处理理论知识,掌握用MATLAB软件设计FIR和IIR数字滤波器的方法;5. 提高依据所学知识及查阅的课外资料来分析问题解决问题的能力。
二、课程设计内容:1.语音信号的采集利用windows下的录音机录制一段自己的话音,时间控制在1秒左右;并对语音信号进行采样,理解采样频率、采样位数等概念。
2.语音信号的频谱分析利用函数fft对采样后语音信号进行快速傅里叶变换,得到信号的频谱特性。
3.设计数字滤波器采用窗函数法和双线性变换法设计下列要求的三种滤波器,根据语音信号的特点给出有关滤波器的性能指标:1)低通滤波器性能指标,fp=1000Hz,fc=1200Hz, As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=4800Hz,fp=5000Hz ,As=100dB,Ap=1dB;3)带通滤波器性能指标,fp1=1200Hz,fp2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。
4.对语音信号进行滤波比较用两种方法设计的各滤波器的性能,然后用性能好的滤波器分别对采集的语音信号进行滤波;并比较滤波前后语音信号的波形及频谱,分析信号的变化。
5.回放语音信号,感觉滤波前后的声音变化。
三、实验原理(一)基于双线性Z变换法的IIR数字滤波器设计由于的频率映射关系是根据推导的,所以使jΩ轴每隔2π/Ts便映射到单位圆上一周,利用冲激响应不变法设计数字滤波器时可能会导致上述的频域混叠现象。
为了克服这一问题,需要找到由s平面到z平面的另外的映射关系,这种关系应保证:1) s平面的整个jΩ轴仅映射为z平面单位圆上的一周;2) 若G(s)是稳定的,由G(s)映射得到的H(z)也应该是稳定的;3) 这种映射是可逆的,既能由G(s)得到H(z),也能由H(z)得到G(s);4) 如果G(j0)=1,那么。
双线性Z变换满足以上4个条件的映射关系,其变换公式为双线性Z变换的基本思路是:首先将整个s平面压缩到一条从–π/Ts到π/Ts的带宽为2π/Ts的横带里,然后通过标准的变换关系将横带变换成整个z平面上去,这样就得到s平面与z平面间的一一对应的单值关系。
在MATLAB中,双线性Z变换可以通过bilinear函数实现,其调用格式为:[Bz,Az]=bilinear(B,A,Fs);其中B,A为模拟滤波器传递函数G(s)的分子分母多项式的系数向量,而Bz,Az为数字滤波器的传递函数H(z)的分子分母多项式的系数向量。
(二)窗函数法设计FIR数字滤波器窗函数法就是设计FIR数字滤波器的最简单的方法。
它在设计FIR数字滤波器中有很重要的作用,正确地选择窗函数可以提高设计数字滤波器的性能,或者在满足设计要求的情况下,减小FIR数字滤波器的阶次。
常用的窗函数有以下几种:矩形窗(Rectangular window)、三角窗(Triangular window)、汉宁窗(Hanning window)、海明窗(Hamming window)、布拉克曼窗(Blackman window)、切比雪夫窗(Chebyshev window)、巴特里特窗(Bartlett window)及凯塞窗(Kaiser window)。
在MATLAB中,实现矩形窗的函数为boxcar和rectwin,其调用格式如下:w=boxcar(N)w=rectwin(N)其中N是窗函数的长度,返回值w是一个N阶的向量,它的元素由窗函数的值组成。
实际上,w=boxcar(N)等价于w=ones(N,1)。
在MATLAB中,实现三角窗的函数为triang,调用格式为:w=triang(N)在MATLAB中,实现汉宁窗的函数为hann,调用格式如下:w=hann(N)w=hann(N,’sflag’)Hann函数中的参数sflag为采样方式,其值可取symmetric(默认值)或periodic。
当sflag=symmetric时,为对称采样;当sflag=periodic时,为周期采样,此时hann函数计算N+1个点的窗,但是仅返回前N个点。
在MATLAB中,实现海明窗的函数为hamming,调用格式分别如下:w=hamming (N)w=hamming (N,'sflag')其中sflag的用法同上。
在MATLAB中,实现布拉克曼窗的函数为blackman,调用格式如下:w=blackman (N)w=blackman (N,'sflag')在MATLAB中,实现切比雪夫窗的函数为chebwin,调用格式为:w=chebwin (N,r)其中r 表示切比雪夫窗函数的傅里叶变换旁瓣幅度比主瓣低rdB(其默认值为100dB),且旁瓣是等纹波的。
在MATLAB中,实现巴特里特窗的函数为bartlett,调用格式为:w=bartlett (N)在MATLAB中,实现凯塞窗的函数为kaiser,调用格式为:w=kaiser (N,beta)其中beta为窗函数的参数β。
四、设计及仿真实现过程:(一)语音信号的采集在matlab平台下,利用函数wavread对语音信号进行采样。
程序如下:说明:(1)用电脑录音的过程及进行了数据的时域采集,故其中的设置已经决定了以下参数8000KHz,8位,单声道。
[y,fs,bits]=wavread中的采样频率fs是指单位时间内的采样次数。
采样位数bits是记录每次采样值数值大小的位数.(2)、fft函数用于计算矢量或矩阵的离散傅立叶变换。
格式:fft=(x,n)采用n点FFT。
plot是线性绘图函数;abs是求绝对值的函数。
24681012x 104-1-0.8-0.6-0.4-0.200.20.40.60.81原时域波形a m p l i t u d en050010001500200025003000350040000.511.522.53原频谱特性a m p l i t u d efrequency(hz)(二)双线性变换法设计滤波器(1)双向性变换法设计巴特沃斯低通滤波器,程序和频率响应如下(2)双向性变换法设计巴特沃斯高通滤波器,程序和频率响应如下(3)双向性变换法设计切比雪夫带通滤波器,程序和频率响应如下4Frequency (Hz)P h a s e (d e g r e e s )ω/π|H (z )|ω/π增益.d B(三)窗函数设计滤波器由于所给滤波器的模拟指标要求阻带的最小衰减As=100dB,所以只能选择kaiser窗,且kaiser 窗的参数a=10.056,过渡带宽w为10.8*pi,选取阶数N=49。
(1)窗函数法低通滤波器设计程序及频率响应如下:(2)窗函数法带通滤波器设计程序及频率响应如下: wn=kaiser(49);fc1=1000;fc2=3200;fs=8000; wc1=2*fc1/fs;wc2=2*fc2/fs; b=fir1(48,[wc1 wc2],wn); freqz(b,1)title('窗函数带通滤波器响应')00.10.20.30.40.50.60.70.80.91-3000-2000-100001000Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )00.10.20.30.40.50.60.70.80.91-100-5050Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )窗函数带通滤波器响应(3)窗函数法高通滤波器设计程序及频率响应如下:(四).用滤波器对信号滤波,比较滤波前后语音信号波形频谱(1)滤波程序1.巴特沃斯低通滤波器滤波程序(2)FIR 和IIR滤波效果的比较05001000150020002500300035004000123窗函数低通滤波后频谱05001000150020002500300035004000123窗函数低通滤波前频谱对比图1 低通滤波由上图窗函数滤波后频谱阻带的波纹较大一些,但基本不易看出两种滤波器的性能优劣。
5001000150020002500300035004000窗函数高通滤波后频谱05001000150020002500300035004000窗函数高通滤波前频谱对比图2 高通滤波由上图可以很明显看出窗函数在阻带的波纹较大,即滤波效果不如巴特沃斯滤波器。
500100015002000250030003500400000.511.52窗函数带通滤波后频谱05001000150020002500300035004000123窗函数带通滤波前频谱对比图3 带通滤波由以上图可以看出 ,切比雪夫滤波频谱比较尖锐,只能通过很小频段的波形,而窗函数能通过适当范围的频率波形,且滤波效果较为理想。
(五)两种滤波器比较及结论窗函数法中相位响应有严格的线性,不存在稳定性问题, 设计简单。
双线性变换不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,但会产生频率混碟现象,使数字滤波器的频响偏移模拟滤波器的频响。
在对语音信号进行滤波的时候,双线性低通滤波器的滤波效果最好,滤波后的语音信号失真比较小,高通和带通的失真都较大。
由此可知人的语音信号的能量主要集中在低频部分。
在用窗函数设计滤波器的时候,由于所给指标的阻带衰减比较大,对所选窗的要求比较苛刻,而且很难达到所给指标。
由公式N>=a*fc/|fp-fs|或公式N=1+(As-7.95)*fc/[14.36*|fp-fs|]可算得阶数N>=3。
但实际在仿真的过程中发现要想达到阻带的最小衰减为100,阶数N得选很大,约在800左右。
因为对如此大阶数的滤波器在实现的时候很困难,所以在本设计中选择N=49。
由滤波器的频谱图和滤波前后的语音信号的频谱图对比可知本设计选用双线性变换法设计的IIR滤波器比较好。
在同样的技术指标的要求下,IIR滤波器所要求的阶数N也比较小,实现起来比较容易。
事实上,IIR滤波器系统函数的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,且IIR数字滤波器能够保留一些模拟滤波器的优良特性。