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

2018-03-21 09:27余会娟
电脑知识与技术 2018年3期

余会娟

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

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

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

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

1 FIR数字滤波器设计原理

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:\Documents and Settings\laurence\桌面\新建文件夹\数字.wav'); sound(x1,22050);

y1=fft(x1,1024);

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

figure(1)

plot(x1)

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

xlabel('time n');

ylabel('fuzhi n');

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:\Documents and Settings\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('time n');

ylabel('fuzhi n');

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:\Documents and Settings\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.