语音信号的数字滤波器Word文档格式.docx
《语音信号的数字滤波器Word文档格式.docx》由会员分享,可在线阅读,更多相关《语音信号的数字滤波器Word文档格式.docx(47页珍藏版)》请在冰豆网上搜索。
![语音信号的数字滤波器Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/3/36192030-0986-489d-9579-4af089e525cd/36192030-0986-489d-9579-4af089e525cd1.gif)
FIR数字滤波器的特性:
(1)FIR滤波器具有精确的的线性相位即:
FIR滤波器的系数具有奇对称或偶对称的规律,经过FIR滤波器滤波后的信号只是被简单地延迟了个时间步长,也就是没有相位失真。
因此,从要求计算精度的角度来看应选择FIR滤波器来进行数字滤波。
同时,在结构上看,FIR滤波器采用非递归结构,因此FIR系统具有稳定性。
(2)由于FIR滤波器传输函数的极点位于原点,要达到相同的选择性,必须采用更高的阶数,这就提高了系统的成本,同时也降低了运算的速度。
但是,由于FIR滤波器可以采用FFT,速度可以得到相应的提升。
3.2数字滤波器的的技术要求
我们通常用的数字滤波器一般属于选频滤波器。
假设数字滤波器的传输函数
用下式表示[4]:
3.2-1
式中,
称为幅频特性函数,
称为相频特性函数。
幅频特性表示信号通过该滤波器后各频率成分的衰减情况,而相频特性反映各频率通过滤波器后在时间上的延时情况。
一般来说,对于IIR滤波器,相频特性不作要求,而对于有线性相位要求的滤波器,一般用FIR滤波器来实现。
图3.2表示低通滤波器的幅度特性,
和
分别称为通带截止频率和阻带截止频率。
通带频率范围为
,在通带中要求
,阻带频率范围为
,在阻带中要求
,从
至
称为过渡带。
通带内所允许的最大衰减(dB)和阻带内允许的最小衰减(dB)分别为
图3-1低通滤波器的幅度特性
4设计步骤和过程
4.1IIR滤波器的设计
4.1.1典型的IIR数字滤波器的设计
模拟滤波器的理论和设计方法己发展得相当成熟,且有一些典型的模拟滤波器供我们选择,如巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等,这些典型的滤波器各有特点。
本设计只针对切比雪夫(Chebyshev)滤波器。
这种方法基于模拟滤波器的频率变换,即先设计模拟低通滤波器,再利用频率变换将模拟低通滤波器转换成所需类型的模拟滤波器,最后将模拟滤波器转换成所需类型的数字滤波器。
用MATLAB进行典型的数字滤波器的设计,具体步骤如下:
(1)按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标;
(2)根据转换后的技术指标使用滤波器阶数选择函数,确定最小阶数N和固有频率Wn,根据选用的模拟低通滤波器的类型可分别用函数:
buttord,cheb1ord,cheb2ord,ellipord等;
(3)运用最小阶数N产生模拟滤波器原型,模拟低通滤波器的创建函数有:
buttap,cheb1ap,cheb2ap,ellipap、besselap等;
(4)运用固有频率Wn把模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可分别用函数lp2lp、lp2hp,lp2bp,lp2bs;
(5〕运用冲激响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,分别用函数imoinvar和bilinear实现。
低通ChebyshevI型数字滤波器的设计:
设计中需要限定其通带上限临界频率wp,阻带临界滤波频率ws,在通带内的最大衰减rp,阻带内的最小衰减rs.
设计过程如下:
(例如设定各参数wp=30*2*pi;
ws=40*2*pi;
Fs=100;
rp=0.3;
rs=80;
)
选择滤波器的阶数:
[N,Wn]=cheb1ord(wp,ws,rp,rs,'
s'
);
创建ChebyshevI型滤波器原型:
[z,p,k]=cheblap(N,rp);
表达形式从零极点增益形式转换成状态方程形式:
[A,B,C,D)=zp2ss(z,p,k);
把模拟低通滤波器原型转换成模拟低通滤波器:
[At,Bt,Ct,Dt]=lp2lp(A,B,C,D,Wn);
表达形式从状态方程形式转换成传递函数形式:
[num1,den1]=ss2tf(At,Bt,Ct,Dt);
采用冲激响应不变法将模拟滤波器转换成数字滤波器:
[num2,den2]=impinvar(num1l,den1,100);
返回数字滤波器的频率响应
[H,W]=freqz(num2,den2,N)
[N,Wn]=cheb1ord(wp,ws,rp,rs,'
该函数返回模拟滤波器的最小阶数N和ChebyshevI型固有频率Wn.其中的wp,ws是以弧度为单位.如果rp=3dB,则固有频率Wn等于通带截止频率Wp。
[z,p,k]=cheb1ap(N,rp);
该函数返回一个N阶ChebyshevI型滤波器的零点,极点和增益。
这个滤波器有通带内的最大衰减为rp.ChebyshevI型滤波器的主要特点是在阻带内达到最大平滑。
[At,Bt,Ct;
Dt]=lp2lp(A,B,C,D,Wn)该函数把模拟低通滤波器原型转换成截止频率为Wn的低通滤波器。
[num2,den2]=impinvar(num1,den1,Fs)该函数模拟滤波器传递函数形式[num1,den1]转换为采样频率为Fs的数字滤波器的传递函数形式[num2,den2]。
Fs缺省时默认为1Hz。
[H,W]=freqz(num2,den2,N)该函数返回数字滤波器的频率响应。
当N是一个整数时,函数返回N点的频率向量H和N个点的复频响应向量W。
N最好选用2的整数次幂,这样使用FFT进行快速运算。
N个频率点均匀地分布在单位圆的上半圆上。
系统的N默认值为512。
4.1.2Matlab提供的其它设计IIR滤波器滤波器的函数
MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用就可以设计滤波器,这为设计通用滤波器提供了方便.
设计ChebyshevI型滤波器用函数cheby1().可以设计低通、高通、带通和带阻的数字和模拟ChebyshevI型滤波器,其通带内为等波纹,阻带内为单调。
Che-byshevI型滤波器的下降斜度比II型大,但其代价目是通带内波纹较大.
设计ChebyshevII型滤波器用函数cheby2().可以设计低通、高通、带通和带阻的数字和模拟ChebyshevII型滤波器,其通带内为单调,阻带内等波纹。
Che-byshevII型滤波器的下降斜度比I型小,但其阻带内波纹较大。
4.1.3IIR滤波器设计小结
IIR滤波器的设计有很多方法,典型设计法和直接设计法是较常见的两种方法。
在使用典型设计法设计IIR滤波器时,必须按照本文所列五个步骤有序地进行设计。
文中给出的数字低通滤波器是设计的基础,当需要设计其它滤波器时,应当选择使用lp2lp、lp2hp,lp2bp,lp2bs函数进行转换。
直接设计法设计IIR滤波器相对比较简单,需要注意的是,使用Yulewalk函数时,必须确定所需的频率响应,文中给出的是理想低通滤波器的频率响应,实际应用中,根据具体情况具体分析,给出正确的频率响应参数f和m。
4.2FIR滤波器的设计
4.2.1窗函数法设计FIR滤波器
IIR数字滤波器的设计方法是利用模拟滤波器成熟的理论及设计图表进行设计的,因而保留了一些典型模拟滤波器优良的幅度特性。
但设计中只考虑了幅度特性,没考虑相位特性,所设计的滤波器相位特性一般是非线性的,为了得到线性相位特性,对IIR滤波器必须另外增加相位校正网络,使滤波器设计变得复杂,成本较高。
FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。
设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数为[6]:
4.2.1-1
H(Z)是
的(N-1)次多项式,在Z平面上有(N-1)个零点,原点z=0是(N-1)阶重极点。
因此,H(z)永远稳定。
稳定和线性相位特性是FIR滤波器突出的优点。
Matlab中,函数fir1和fir2就是基于窗函数方法的。
firl函数实现了加窗线性相位FIR数字滤波器设计的经典方法。
主要用于常用的标准通带滤波器设计,包括:
低通、带通、高通和带阻数字滤波器。
b=fir1(n,Wn)可得到n阶低通FIR滤波器,滤波器系数包括在b中,这可表示为
。
这是一个截止频率为Wn的加汉明窗的线性相位FIR滤波器。
如果Wn是一个包含两个元素的向量,Wn=[W1W2],firl返回一个n阶的带通滤波器,其通带为W1<
W<
W2。
b=fir1(n,Wn,‘high’)设计一个高通滤波器。
b=fir1(n,Wn,‘stop’)设计一个带阻滤波器。
如果Wn是一个多元素的向量,W=[W1W2W3...Wn],函数将返回一个n阶的多通带的滤波器。
b=firl(n,Wn,‘DC-1’),使第一频带为通带;
b=fir1(n,Wn,‘DC-0’)使第一频带为阻带。
对于在Fs/2附近为通带的滤波器如高通或带阻滤波器,n必须是偶数。
缺省情况下,firl()使用Hamming窗。
可以在参数window中指定其它窗,包括矩形窗、Harming窗、Bartlett窗、Blackman窗、Kaise窗等。
缺省情况下,滤波器被归一化,以使经加窗后的第一个通带的中心幅值刚好是1。
使用参数’noscale’可以阻止这样做。
汉明窗函数具有较低的旁瓣幅度,尤其是第一旁瓣幅度;
而切比雪夫窗函数具有比较窄的主瓣,相比之下,过渡带也较窄。
从分析结果来看,汉明窗函数适用于对阻带衰减有要求的场合,而切比雪夫窗适用于要求较窄的过渡带的场合。
函数fir2()也设计加窗的FIR滤波器,但它针对任意形状的分段线性频率响应,这一点在fir1中是受到限制的。
B=fir2(n,F,M)设计一个n阶的FIR数字滤波器,其频率响应由F和M指定,滤波器的系数返回在向量B中,向量F和M指定滤波器的采样点的频率及其幅值,F的频率必须在0到1之间,1对应于采样频率的一半。
它们必须按递增的顺序从0至1结束。
缺省情况下,函数fir2()默认使用的是Hamming窗,可在后面参数中指定其它的窗函数。
以下是用fir2()设计的一个多带FIR滤波器,它的频率响应要求如下:
归一化频率范围
幅值
f=0.0-0.1
m=0
f=0.1–0.3
m=1
f=0.3–0.6
f=0.6–0.8
f=0.8–1.0
程序为:
f=[0,0.1,0.1,0.3,0.3,0.6,0.6,0.8,0.8,1];
m=[0,0,1,1,0,0,1,1,0,0];
b=fir2(40,f,m);
用fir2()设计的滤波器的特性和理想特性的比较如图4.2.2
图4-2用FIR2设计的滤波器
4.2.2窗函数法设计FIR滤波器设计小结
用窗函数法设计FIR滤波器时,选用不同形状的窗函数都是为了得到平坦的幅度响应和较小的阻带波纹,但加窗后会形成一个过渡带,过渡带宽度等于窗的频率响应的主瓣宽度4π/N,同时使H(w)在过渡带两边出现最大肩峰值等负面影响,因此一般希望窗函数满足两项要求:
(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带;
(2)尽量减少窗谱的最大旁瓣的相对幅度,即能量尽量集中于主瓣,使肩峰和波纹减小,从而增大阻带的衰减。
在设计中,往往需要对比各种窗函数,并且反复计算修改窗函数的参数,才能达到较好的选择性。
5设计程序的调试和运行结果
声音采集:
Fs=8000;
bits=16;
[x,Fs,bits]=wavread('
C:
\windows\Media\ding.wav'
%对windows中ding.wav抽样
x0=x(:
1);
%取抽样信号的左声道
l=1:
length(x0);
time=l/Fs;
y0=fft(x0,Fs);
%对原始信号进行傅立叶变换
subplot(2,1,1);
plot(time,x0);
title('
原始信号时域分析'
xlabel('
time(s)'
%绘制原始信号时域分析图
subplot(2,1,2);
plot((1:
Fs/2),y0(1:
Fs/2));
原始信号频域分析'
frequency(hz)'
%绘制原始信号频域分析图
sound(x0,Fs,bits);
噪声信号滤波:
noise1=0.01*sin(2*pi*l*3000/length(x));
x1=x0+noise1'
;
%在原始信号中加入3000HZ的噪声信号
figure;
y1=fft(x1,Fs);
%对加入噪音后信号进行傅立叶变换分析
subplot(3,2,1);
plot(time,x1);
低通滤波噪声信号时域分析'
%绘制加入3000HZ噪声信号后时域分析图
subplot(3,2,2);
Fs/2),y1(1:
信号频域分析'
wp1=2000*2/Fs;
%设定通带频率
b1=fir1(38,wp1);
%设定低通滤波器
[h1w1]=freqz(b1,1,512);
subplot(3,2,3);
plot(w1/pi,20*log10(abs(h1)));
%
低通滤波器幅频响应'
NomalizedFrequency(*pirad/sample)'
ylabel('
Magnitude(dB)'
%绘制滤波器幅频响应
subplot(3,2,4);
plot(w1/pi,unwrap(angle(h1)));
低通滤波器相频响应'
Phase(Degrees)'
x1get=filter(b1,1,x1);
y1get=fft(x1get,Fs);
%对噪声信号进行滤波
subplot(3,2,5);
plot(time,x1get);
低通滤波后时域分析'
%对滤波后信号进行时域分析
subplot(3,2,6);
Fs/2),y1get(1:
低通滤波后频域分析'
%对滤波后信号进行频域分析
sound(x1,Fs,bits);
sound(x1get,Fs,bits);
噪声信号频谱图:
Fs=8000
y1=fft(noise1,Fs);
5.1切比雪夫低通滤波器
%语音信号
Fs=22050;
bits=8;
%产生噪声信号并加到语音信号
noise1=0.06*sin(2*pi*l*6000/length(x0));
noise2=fft(noise1,1024);
%滤波
fp=1800;
fc=2600;
As=100;
Rp=1;
从电脑读取一段语音信号,加入设计的噪声信号,然后将合成信号通过切比雪夫低通滤波器,对得到的信号进行时频分析,如图5.1-1
图5.1-1
对切比雪夫低通滤波器进行相频、幅频特性分析,如图5.1-2:
图5.1-2
对噪声进行时频分析,如图5.1-3:
图5.1-3
5.2切比雪夫高通滤波器
noise1=0.02*sin(2*pi*l*100/length(x0));
fp=1000;
fc=600;
从电脑读取一段语音信号,加入设计的噪声信号,然后将合成信号通过切比雪夫高通滤波器,对得到的信号进行时频分析,如图5.2-1
图5.2-1
对切比雪夫高通滤波器进行相频、幅频特性分析,如图5.2-2:
图5.2-2
对噪声进行时频分析,如图5.2-3:
图5.2-3
5.3切比雪夫带通滤波器
fp1=1500;
fp2=2000;
fc1=1000;
fc2=2500;
原始信号加入噪声引号后,经过带通滤波器,将高频和低频部分滤去,实现滤波,如图5.3-1:
图5.3-1
滤波器的相频特性和幅频特性如图5.3-2:
图5.3-2
噪声信号的时域、频域特性分析如图5.3-3
图5.3-3
5.4Bartlett窗低通滤波器
fs=20000;
zs0=0.05*cos(2*pi*10000*t/1024);
fp=7500,fc=8500;
从电脑中读入一段语音信号,时频分析如图5.4-1
图5.4-1
设计一段噪声信号,对其进行时频分析,如图5.4-2:
图5.4-2
将读入的语音信号加入噪声信号,进行时频分析,如图5.4-3:
图5.4-3
对所设计的bartlett低通滤波器进行时频分析,如图5.4-4:
图5.4-4
将加入噪声后的语音信号通过设计好的bartlett低通滤波器,对所得信号进行时频分析,如图5.4-5:
图5.4-5
5.5Bartlett窗高通滤波器
fs=10000;
zs0=0.08*cos(2*pi*200*t/30000);
fp=800,fs=100;
从电脑中读入一段语音信号,时频分析如图5.5-1:
图5.5-1
设计一段噪声信号,对其进行时频分析,如图5.5-2:
将读入的语音信号加入噪声信号,进行时频分析,如图5.5-3:
图5.5-2
图5.5-3
对所设计的bartlett高通滤波器进行时频分析,如图5.5-4:
图5.5-4
将加入噪声后的语音信号通过设计好的bartlett高通滤波器,对所得信号进行时频分析,如图5.5-5:
图5.5-5
5.6Bartlett窗带通滤波器
zs0=0.02*cos(2*pi*200*t/30000)+0.02*cos(2*pi*5000*t/30000);
fp1=900,fs1=400;
fp2=1600,fs2=2100;
从电脑中读入一段语音信号,时频分析如图5.6-1:
图5.6-1
设计一段噪声信号,对其进行时频分析,如图5.6-2:
图5.6-2
将读入的语音信号加入噪声信号,进行时频分析,如图5.6-3:
图5.6-3
对所设计的bartlett带通滤波器进行时频分析,如图5.6-4:
图5.6-4
将加入噪声后的语音信号通过设计好的bartlett带通滤波器,对所得信号进行时频分析,如图5.6-5:
图5.6-5
6课程设计思考与体会
作为一名快升大四的学生,已经不是第一次做类似的课程设计了。
每做一次,我都能得到巨大的收获,而且对很多东西的认识都有了进一步提高。
或许是由于,经济危机,社会不安分,就业等种种问题,我对实践课程越来越看重,感觉到了一种紧迫感。
以前的课程设计我都是糊里糊涂做的,而这次我找了很多资料,学了不少东西,并和同学交流,大显了一把身手,完成了此次设计。
几乎每天都是奔波在寝室与实验室中,不知不觉两星期的课程设计就告一段落。
回顾这十几天的日子,既感慨,又兴奋。
至少下了功夫得到了回报,而且学到了非常多的有关数字信号处理的知识,对我们专业的了解更进了一步,信心也提高了一大截。
想起开始的不知所措,不免暗自发笑。
将自己所学的东西,充分的灵活运动起来,这是我们最应该做的事,也是完成设计的必要条件。
本次设计时完成语音信号数字滤波器的设计,首先我们应该先知道什么是数字滤波器,也就是它是用来做什么的。
知道了