当前位置:文档之家› 基于数字滤波器的语音信号处理系统的设计

基于数字滤波器的语音信号处理系统的设计

基于数字滤波器的语音信号处理系统的设计前言:语音信号的数字滤波就是利用快速傅里叶变换fft对语音信号进行频谱分析,利用分析得到的指标设计数字滤波器,将不需要的部分通过设计好的数字滤波器滤除掉,以达到优化语音的目的。

数字滤波器是一种对数字信号进行处理的系统,数字滤波器完成数字信号滤波处理功能,其输入是一组数字量,其输出是经过变换的另一组数字量。

它通过一定的运算关系或电路形式来改变输入信号所包含的频率成分的相对比例或滤出某些频率成分,数字滤波器具有稳定性高、精度高、灵活性大等优点。

随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。

摘要:本文介绍了两种数字滤波器的基本设计原理及步骤1、利用双线性变换法以及脉冲响应不变法设计IIR数字滤波器2、用窗函数法实现FIR数字滤波器的设计。

并且把理论与实践结合,通过一段语音,利用MATLAB软件分析语音信号频谱,确定指标设计滤波器,编写程序设计滤波器,对语音信号进行滤波处理,分析滤波后的时域和频域特征,回放语音信号分析其经过信号处理后的效果。

正文1、总体设计1.1 总体设计内容1)利用脉冲响应不变法和双线性变换法设计IIR数字滤波器,实现数字低通、数字高通、数字带通、数字带阻。

2)利用窗函数实现FIR数字滤波器的设计3)设计完整的语音信号处理系统,可实现语音信号的读入、语音信号的频域分析、滤波器选择、语音信号的时/频域滤波操作、语音信号的短时频域分析等功能。

1.2 课设流程图设计2、模块设计2.1 语音信号的采集用windows工具中的录音机录一段(语音信号),将语音信号的文件命名为test.wav.将语音文件保存后,在MATLAB软件平台下,首先调用wavread函数可采集到录制的音乐信号,并得到其采样率fs和比特数bits。

具体调用如下:>> [y,fs,bits]=wavread('d:\test.wav')%读取语音信号。

运行后得出fs,bit。

其中参数y是每个样本的值,fs是生成该波形文件时的采样率,bits 是波形文件每样的编码位数。

sound(y); 用于对声音的回放。

向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。

2.2 语音信号的时域及频域分析语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理。

而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分桥的准确性和精确性。

因此语音信号分析在语音信号处理应用中具有举足轻重的地位。

2.2.1语音信号的时域分析语音信号的时域分析就是分析和提取语音信号的时域参数。

进行语音分析时,最先接触到并且也是最直观的是它的时域波形。

语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。

运用matlab软件,调用plot函数,在读取语音信号的基础上画出语音信号的时域波形图。

理想状态下,语音信号的时域波形应该是关于时间轴对称的,但是实际情况下,由于存在着一些噪音,使得波形看上去不是那么完美。

2.2.2语音信号的频域分析对语音信号进行频谱分析。

MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,调用格式如下:Xk=fft(xn,N)参数xn为被变换的时域序列向量,N是DFT变换区间的长度,当N大于xn时,fft函数自动在xn后面补零,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。

在本次设计中,调用fft函数得到语音信号的快速傅里叶变换序列,再用plot函数画出信号的频谱图。

2.3 IIR数字滤波器的设计IIR滤波器系统函数的极点可以再单位圆内的任何位置,实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。

设计IIR数字滤波器的方法主要有基于脉冲响应不变法和双线性Z变换法设计,数字高通、带通及带阻IIR 滤波器设计,基于MATLAB 函数直接设计IIR 数字滤波器。

IIR 数字滤波器的特点如下:1)系统的单位冲激响应h(n)为无限长的;2)系统函数H(z)在有限z 平面上有极点存在;3)结构上存在着输出到输入的反馈,也就是结构上是递归型的。

IIR 滤波器的设计就是在给定的技术指标下去确定滤波器的阶数N 和系数{ia ,ib }。

在已满足给定的技术指标下,应选用阶数尽可能低的滤波器,因为滤波器的阶数越低,在实现时成本就越低。

在设计IIR 滤波器时,最常用的方法是利用模拟滤波器来设计数字滤波器。

2.3.1 IIR 数字滤波器的设计步骤1) 按一定规则将给出的数字滤波器的技术指标通带边界频率pω、通带最大最大衰减pα、阻带截止频率s ω、阻带最小衰减s α,转化为模拟低通滤波器的技术指标,主要是边界频率pω、s ω的转换,p α、s α指标不变。

如果采用脉冲响应不变法,边界频率的转换关系为:,,psps TTωωΩ=Ω=如果采用双线性变换法,边界频率的转换关系为:22tan ,tan 22p s p sT T ωωΩ=Ω=2)根据归一化频率,确定最小阶数N 和频率参数Wn 。

归一化频率可以由以下公式得到:3)根据转换后的技术指标,运用最小阶数设计模拟低通滤波器G(s)。

4)再按一定规则将G (s )转换成H (z )。

若设计的数字滤波器是低通的,那么上述设计工作可以结束,若设计的是高通,带通或带阻滤波器,那么还需进行一下步骤。

5)将高通、带通、或带阻数字滤波器的技术指标先转化为低通模拟滤波器的技术指标,然后按上述步骤再进行设计。

2.3.2 双线性变换法的基本原理双线性变换法的S 域与Z 域间的变换关系为:[1()]/[1()]22T TZ s s =+- (1) 由式(1)可以看出,z 和s 之间可以直接代换,由于这是一非线性变换,需考察一下是否能把j Ω映射成单位圆,以及是否能将s 域左半平面映射到单位圆内部。

2/)(实际模拟频率实际数字频率)/(实际模拟角频率归一化频率Fs Hz Fs s rad ==⨯=ππ对于s 平面上的虚轴j Ω,用s=j Ω代入式(1)得:2()2[1()]/[1()]22Tj arctg j T T Z j j e e ωΩ=+Ω-Ω==可见:1,2arctan()2TZ ωΩ==上面表示S 平面与Z 平面一一单位对应,S 平面的虚轴经映射后确已成为Z 平面的单位圆,但是Ω与ω为非线性关系,因此,通过双线性变换后两个滤波器的频率特性形状不能保持相同,双线性变换不存在混叠效应。

对于s 域的左半平面,用s j σ=+Ω代入式(1),得到: [1()()]/[1()()]22T T Z j j σσ=++Ω--Ω由此得:|Z|=2222[(1)()]/[(1)()]2222T T T Tσσ++Ω-+Ω此式表明,当σ<0,有|z|<1,因而s 平面的左半平面被映射在单位圆内部,这意味着稳定的模拟滤波器经双线性变换可以映射成稳定的数字滤波器。

2.3.3脉冲响应不变法法的基本原理 设模拟滤波器的系统函数为()s H a ,相应的单位冲激响应是()t h a ,()s H a =LT [()t h a ]。

LT [·]代表拉氏变换,对()t h a 进行等间隔采样,采样间隔为T ,得到()nt h a ,将()()nT h n h a =作为数字滤波器的单位脉冲响应,那么数字滤波器的系统函数H(z)便是h(n)的Z 变换。

因此脉冲响应不变法是一种时域逼近方法,它使h(n)在采样点上等于h a (t)。

但是,模拟滤波的设计结果是H a (s),所以下面基于脉冲响应不变法的思想,导出直接从H a (s)到()z H 的转换公式。

设模拟滤波器H a (s)只有单阶极点,且分母多项式的阶次高于分子多项式的阶次,将H a (s)用部分分式表示:式中si 为H a (s)的单阶极点。

将Ha(s)进行逆拉氏变换, 得到:式中, u(t)是单位阶跃函数。

对ha(t)进行等间隔采样,采样间隔为T ,得到:对上式进行Z 变换,得到数字滤波器的系统函数H(z),即H a (s)的极点is 映射到z 平面的极点为Ts i e,系数A i 不变,通过模拟滤波器的系统传递函数可以直接求得数字滤波器的系统传递函数。

2.3.4基于MATLAB 函数直接设计IIR 数字滤波器 1)基于巴特沃斯法直接设计IIR 数字滤波器尽管巴特沃斯滤波器的幅度特性是通带平坦,阻带单调下降,但是在满足相同的设计要求下,巴特沃斯滤波器的阶次一般都比切比雪夫滤波器和椭圆滤波器高。

在MATLAB 中,可以利用butter 函数直接设计各种形式的滤波器,它的语法为 [b,a]=butter(N,Wn)[b,a]=butter(N,Wn,’ftype ’) [b,a]=butter(N,Wn,’s ’)[b,a]=butter(N,Wn, ’ftype ’ ,’s ’)[z,p,k]=butter(…) [A,B,C,D]=butter(…)N 为滤波器阶数,Wn 为滤波器的截止频率,取值为0~1;‘ftype ’为滤波器类型参数:‘high ’为高通滤波器,截止频率为Wn; ‘stop ’为带阻滤波器,截止频率Wn =[W1,W2],默认为低通和带通滤波器;低通滤波器时,Wn 为截止频率;带通滤波器时,Wn=[W1,W2].b,a 分别为滤波器传递函数分子和分母系数向量;z ,p ,k ,分别为滤波器的零点,极点和增益。

巴特沃斯滤波器的阶数可由MATLAB 中的buttord 函数确定,该函数的调用格式为[N,Wn]=buttord(wp,ws,Rp,Rs),其中wp 表示通带截止频率,ws 表示阻带截止频率,Rp 表示通带纹波系数,Rs 表示阻带纹波系数,N 表示巴特沃斯滤波器的最小阶次,Wn 为其截止频率。

2)基于切比雪夫法直接设计IIR 数字滤波器切比雪夫1型滤波器在通带是等波纹的,而在阻带是单调下降的。

在MATLAB 中,可以利用cheby1函数直接设计各种形式的数字滤波器,该函数的调用格式为[b,a]=cheby1(N,Rp,Wn)[b,a]=cheby1(N,Rp,Wn,’ftype ’) [b,a]=cheby1(N,Rp,Wn,’s ’)[b,a]=cheby1(N,Rp,Wn, ’ftype ’ ,’s ’) [z,p,k]=cheby1(…) [A,B,C,D]=cheby1(…)格式中,Rp 为通带波纹(dB );Wn 为截止频率,取值为0~1;在该频率处滤波器的幅值相应为-Rp ,其余参数和函数butter 的一样。

相关主题