论文网
首页 理科毕业计算机毕业正文

基于窗函数法的数字滤波器语音信号处理

  • 投稿
  • 更新时间2018-06-23
  • 阅读量180次
  • 评分0
  • 0
  • 0

  摘要:有限长冲激响应(FIR)数字滤波器具有描述方便、系统稳定、易于实现线性相位等特点,获得了广泛的应用。该文采用FIR数字滤波器的窗函数法设计滤波器,针对语音信号中出现的加性噪声进行消除,并在matlab软件中进行实现。


  关键词:FIR数字滤波器;窗函数法;matlab;语音信号处理


  中图分类号:TP311文献标识码:A文章编号:1009-3044(2018)03-0183-03


  数字滤波器是数字信号处理的一个重要技术分支,利用它可以在形形色色的信号中提取所需信号,抑制不需要的信号(干扰、噪声等)。有限长脉冲响应FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性,因此在高保真的信号处理领域得到了广泛应用。滤波器的设计过程分三步完成:①技术要求,在设计之前,根据具体用途确定技术指标;②近似,用选用的设计方法表述滤波器,它可以是一个差分方程的形式,或者是一个系统函数H(Z)的形式,或者是一个脉冲响应h(n)的形式,这种表述逼近于所给定的技术指标;③实现,依据上一步的滤波器表述,在计算机上通过MATLAB软件实现这个滤波器。本文旨在用FIR数字滤波器的窗函数法设计滤波器,针对语音信号中出现的加性噪声进行消除。并在matlab软件中实现。


  1FIR数字滤波器设计原理


  FIR数字滤波器的单位脉冲响应是有限长的,使得它在以下方面具有明显的优势:


  (1)有限长序列的Z变换在整个Z平面上收敛,因此,不存在稳定性问题;


  (2)只要经过一定的时延,任何非因果的有限长序列都可以变成因果的有限长序列,都可以用因果系统来实现;


  (3)由于单位脉冲响应是有限长的,可以用快速傅立叶变换算法实现信号的滤波,使运算效率大大提高。


  因此,FIR数字滤波器日益引起人们的注意,在各个领域广泛应用。


  如果FIR数字滤波器的单位脉冲响应h(n)为实数,且满足以下任何一个条件:


  偶对称:h(n)=h(N-1-n);


  奇对称:h(n)=-h(N-1-n)


  其对称中心在(N-1)/2处,则滤波器就具有准确的线性相位。


  将频率响应表示成,其中是幅度函数,是相位函数。


  2基于窗函数法的FIR数字滤波器设计


  理想的數字滤波器的频率响应可以用傅立叶级数展开为:


  其中傅立叶系数为:


  显然,就是理想滤波器的单位脉冲响应。但是直接用(2)式设计FIR滤波器是不可能的,因为是一个无限长非因果序列。根据线性相位FIR数字滤波器理论,单位脉冲响应应该是有限长的因果序列。因此,设计FIR滤波器就是解决向逼近的问题。可以直接用截断的方法逼近,使n取有限项,那么,(1)式就变为:


  截取后,我们要保证截取的一段对(N-1)/2对称,这样就构成一个长度为N的线性相位滤波器。


  但是,用直接截断的方法会使得频率响应的间断会出现吉布斯(Gibbs)效应,该效应会引起通带内和阻带内的波动性,尤其使阻带内的衰减减小,从而满足不了技术上的要求。这种吉布斯(Gibbs)效应是由于将直接截断引起的,也常称为截断效应。


  2.1设计原理


  获得FIR数字滤波器的一个有效的方法就是利用有限的“加权”序列w(n),也就是所谓的“窗函数”来修正(1)和(2)式。这种方法称为“窗函数法”。通常,是将h(n)看作理想单位脉冲响应hd(n)与窗函数w(n)的乘积。即


  利用复卷积定理可得:


  上式表明,是理想频率响应与窗函数频率响应的循环卷积。因此,对的逼近程度完全决于窗函数的频率特性。


  加窗函数后,对滤波器的理想特性影响有以下几点:


  (1)Hd(w)在截止频率的间断点变成了连续的曲线,使得Hd(w)出现了一个过渡带,它的宽度等于窗函数的主瓣宽度,由此可知,如果窗函数的主瓣越宽,过渡带就越宽。


  (2)由于窗函数旁瓣的影响,使得滤波器的幅度频率特性出现了波动,波动的幅度取决于旁瓣的相对幅度。旁瓣范围的面积越大,通带波动和阻带的波动就越大,也就是说阻带的衰减减小。而波动的多少,取决于旁瓣的多少。


  (3)增加窗函数的长度,只能减少窗函数的幅度频率特性W(w)的主瓣宽度,而不能减少主瓣和旁瓣的相对值,该值取决于窗函数的形状,即增加截取函数的长度N只能相应的减小过渡带,而不能改变滤波器的波动。


  因此,通过改变窗函数的形状来改善滤波器的幅度频率特性。窗函数的选择原则是:


  (1)具有较低的旁瓣幅度,尤其是第一旁瓣的幅度。


  (2)旁瓣的幅度下降的速率要快,以利于增加阻带的衰减。


  (3)主瓣的宽度要窄,这样可以得到比较窄的过渡带。


  通常上述的几点难以同时满足,实际上选用的窗函数往往是它们的折中。


  窗函数的种类繁多,而且还可以根据需要自己设计窗函数,在设计FIR数字滤波器时,选择窗函数的原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣窄的窗函数。


  2.2设计步骤


  FIR数字滤波器的窗函数法设计步骤:


  (1)依据给定的技术指标得出理想的频率响应;


  (2)选择窗函数,根据其过渡带宽△W,估计h(n)的长度N;


  (3)根据理想频率响应计算理想单位脉冲响应;


  (4)用选择的窗函数对进行加窗得出,;


  (5)计算数字滤波器的频率响应。


  2.3设计与MATLAB实现


  对采样频率为220v、50HZ的语音信号人工引入高频5KHZ余弦噪声后,对信号在频域进行滤波。滤波后显示的语音信号的波形与原始语音信号波形基本相同。


  2.3.1信号采集程序


  fs=22050;


  x1=wavread('C:\DocumentsandSettings\laurence\桌面\新建文件夹\数字.wav');sound(x1,22050);


  y1=fft(x1,1024);


  f=fs*(0:511)/1024;


  figure(1)


  plot(x1)


  title('原始語音信号');


  xlabel('timen');


  ylabel('fuzhin');


  figure(2)


  freqz(x1)


  title('频率响应图')


  figure(3)


  subplot(2,1,1);


  plot(abs(y1(1:512)))


  title('原始语音信号FFT频谱')


  subplot(2,1,2);


  plot(f,abs(y1(1:512)));


  title('原始语音信号频谱')


  xlabel('Hz');


  ylabel('fuzhi');


  2.3.2加上5kHz高频余弦噪声后的信号采集程序


  fs=22050;


  x1=wavread('C:\DocumentsandSettings\laurence\桌面\新建文件夹\数字.wav');


  f=fs*(0:511)/1024;


  t=0:1/22050:(size(x1)-1)/22050;


  Au=0.03;


  d=[Au*cos(2*pi*5000*t)]';


  x2=x1+d;


  sound(x2,22050);


  y2=fft(x2,1024);


  figure(1)


  plot(t,x2)


  title('加噪后的信号');


  xlabel('timen');


  ylabel('fuzhin');


  figure(2)


  subplot(2,1,1);


  plot(f,abs(y1(1:512)));


  title('原始语音信号频谱');


  xlabel('Hz');


  ylabel('fuzhi');


  subplot(2,1,2);


  plot(f,abs(y2(1:512)));


  title('加噪后的信号频谱');


  xlabel('Hz');


  ylabel('fuzhi');


  2.3.4窗函数法设计滤波器程序


  fs=22050;


  x1=wavread('C:\DocumentsandSettings\laurence\桌面\新建文件夹\数字.wav');


  t=0:1/22050:(size(x1)-1)/22050;


  Au=0.03;


  d=[Au*cos(2*pi*5000*t)]';


  x2=x1+d;


  wp=0.25*pi;


  ws=0.3*pi;


  wdelta=ws-wp;


  N=ceil(6.6*pi/wdelta);


  wn=(0.2+0.3)*pi/2;


  b=fir1(N,wn/pi,hamming(N+1));


  figure(1)


  freqz(b,1,512)


  f2=filter(bz,az,x2)


  figure(2)


  subplot(2,1,1)


  plot(t,x2)


  title('滤波前的时域波形');


  subplot(2,1,2)


  plot(t,f2);


  title('滤波后的时域波形');


  sound(f2,22050);


  F0=fft(f2,1024);


  f=fs*(0:511)/1024;


  figure(3)


  y2=fft(x2,1024);


  subplot(2,1,1);


  plot(f,abs(y2(1:512)));


  title('滤波前的频谱')


  xlabel('Hz');


  ylabel('fuzhi');


  subplot(2,1,2)


  F2=plot(f,abs(F0(1:512)));


  title('滤波后的频谱')


  xlabel('Hz');


  ylabel('fuzhi');


  3结束语


  语音信号是最能体现信号非线性的一个领域。本文运用MATLAB软件,设计出符合技术要求的数字滤波器,对加入单一频率语音信号进行消噪处理,结果显示还是非常有效的。FIR滤波器对语音信号滤波能够取得较好的效果。对于高斯噪声引入及消噪的方法需要用到现代滤波器的设计方法,传统滤波器只能削弱而不能消除噪声的影响。当然,对语音信号进行处理技术还有很多方面,如语音压缩和语音编码,语音识别等。结合语音语义理论的研究,循环平稳信号分析、多谱分析和时频尺度理论,关键特征的捕捉等多层次的语音信号研究,有很重要的应用前景。


  参考文献: 

  [1] 陈明军,毛樟梅.改进窗函数在FIR数字滤波器设计中的应用[J].继电器,2007,35(13):64-68. 

  [2] 孙强.运用MATLAB实现数字滤波器的设计[J].电脑学习,2005(2):32-34. 

  [3] 苏玉萍,郑琼琼,余冬菊.基于MATLAB的FIR滤波器设计[J].中国科技信息,2008(8):44-46. 

  [4] 周辉,董正宏.数字信号处理基础及MATLAB实现[M].北京:北京希望出版社,2006:230-260. 

  [5] 丁玉美,高西全.数字信号处理[M].2版.西安:西安电子科技大学出版社,2000:195-222. 

    作者:余会娟