语音信号滤波去噪使用双线性变换法设计的级联型椭圆滤波器要点文档格式.docx
《语音信号滤波去噪使用双线性变换法设计的级联型椭圆滤波器要点文档格式.docx》由会员分享,可在线阅读,更多相关《语音信号滤波去噪使用双线性变换法设计的级联型椭圆滤波器要点文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
随着人们对信号处理要求的日益提高,以及模拟信号处理中一些不可克服的缺点,对信号的许多处理而采用数字的方法进行。
数字信号处理系统无论在性能、可靠性、体积、耗电量、成本等诸多方面都比模拟信号处理系统优越的多,使得许多以往采用模拟信号处理的系统越来越多地被数字处理系统所代替,数字信号处理技术在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
滤波器是一种用来消除干扰杂讯的器件,凡是可以使信号中特定的频率成分通过,而极大地衰减或抑制其他频率成分的装置或系统称之为滤波器。
在数字信号处理中,数字滤波器设计在电子工程、应用数学和计算机科学领域都是非常重要的内容。
设计滤波器的方法有多种,在各种滤波器中,椭圆滤波器相比其他类型的滤波器,在阶数相同的条件下有着最小的通带和阻带波动,它在通带和阻带的波动相同。
本课程设计主要解决在含噪情况下对语音信号的滤波去噪处理,处理时采用的是利用双线性变换法设计的级联型的椭圆IIR滤波器。
1.1课程设计目的
本课程设计主要是用录音机采集一段语音信号,利用MATLAB,加入一个带外单频噪声,使用双线性变换法设计的级联型椭圆滤波器,对该含噪语音信号进行滤波去噪处理,画出级联型滤波器结构图。
比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论,从而加深对所学知识的理解,加强我们的动手操作能力。
另一方面也是对课堂所学的理论知识应用于实践中,熟悉和巩固滤波器的设计原理与方法,掌握双线性变换法级联型椭圆滤波器的设计方法和有关滤波器设计的相关经典算法,熟练地利用MATLAB语言进行设计滤波器。
通过本次课程设计,可以运用所学的东西解决一些实际的问题,提高自身对所学知识的综合运用能力以及分析和解决问题的能力。
1.2课程设计的要求
(1)滤波器指标必须符合工程实际。
(2)设计完后应检查其频率响应曲线是否满足指标。
(3)处理结果和分析结论应该一致,而且应符合理论。
(4)独立完成课程设计并按要求编写课程设计报告书。
1.3设计平台
本次课程设计中所用到的软件平台是是由美国mathworks公司发布的MATLAB软件。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,它和Mathematical、Maple并称为三大数学软件。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,可以解决这些应用领域内特定类型的问题。
现在MATLAB已经成为国际上最流行的科学与工程计算软件工具,它已不仅仅是一个“矩阵实验室”了,它已经成为一种最具有广泛应用前景的全新的计算机高级语言,在世界上很多国家,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;
成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能。
在设计研究单位和工业部门,MATLAB也被广泛用于科学研究和解决各种具体问题当中[1]。
2设计原理
2.1IIR滤波器
IIR滤波器,又名“无限脉冲响应滤波器”,或“递归滤波器”。
递归滤波器,也就是IIR数字滤波器,顾名思义,具有反馈性,一般认为具有无限的脉冲响应,因此IIR滤波器能够与模拟滤波器相匹敌[2]。
一个IIR滤波器的系统函数给出为
(2.1)
其中
和
是滤波器系数。
不失一般性已假定
。
如果
N就是这个IIR滤波器的阶。
一个IIR滤波器的差分方程表示是[1]
(2.2)
IIR滤波器具有系统的冲击响应
是无穷长的、系统函数
在有限z平面
上和结构上存在递归的特点。
一个IIR滤波器可以用三种结构实现,这三种结构包括直接型、级联型和并联型,其中直接型又可分为直接Ⅰ型和直接Ⅱ型两种。
级联型中,将系统函数H(z)写成具有实系数的二阶节的乘积
(2.3)
式中
,
都是代表实数的二阶节系数。
这些二阶节是
(2.4)
称为第k个双二阶节。
每个级联型结构的滤波器都可以由k个双二阶节用直接Ⅱ型实现,双二阶节结构图如图2-1所示。
图2-1双二阶节结构
一般说来,所有的模拟滤波器都有无限长的脉冲响应,因此IIR滤波器的设计基本方法是利用复值映射将模拟滤波器变换为数字滤波器。
目前,已有许多成熟的模拟滤波器应用于信号处理中,如巴特沃兹滤波器、切比雪夫(Ⅰ型和Ⅱ型)滤波器、椭圆滤波器等,我们将这些各有特色的模拟滤波器成为原型滤波器。
在设计IIR滤波器时,可以直接借用这些典型的模拟滤波器进行转换,这种方法称为A/D(模拟—数字)滤波器变换。
因为AFD表格仅对低通滤波器适用,但在实际应用中也会需要设计其他频率选择性滤波器(高通、带通、带阻滤波器等等)[3]。
为此需要对低通滤波器实行频带变换,基本方法存在两种途径,如图2-2所示。
途径1:
途径2:
图2-2IIR滤波器的两种设计途径
在MATLAB中采用第一种途径设计IIR滤波器。
2.2椭圆低通滤波器
椭圆滤波器又称考尔滤波器,是通带和阻带等波纹的一种滤波器。
在阶数相同的条件下,与巴特沃兹滤波器和切比雪夫滤波器相比,椭圆滤波器有着最小的通带和阻带波动。
就这点而言,椭圆滤波器是最优的。
从传递函数来看,椭圆函数滤波器在有限频率上既有零点又有极点。
极零点在通带内产生等波纹,阻带内的有限传输零点减少了过渡区,可获得极为陡峭的衰减曲线。
但它陡峭的过渡带特性是用通带和阻带的起伏为代价来换取的,并且在通带和阻带的波动相同,这一点区别于在通带和阻带都平坦的巴特沃斯滤波器,以及通带平坦、阻带等波纹或是阻带平坦、通带等波纹的切比雪夫滤波器。
椭圆滤波器的传输函数是一种较复杂的逼近函数,利用传统的设计方法进行电路网络综合要进行繁琐的计算,还要根据计算结果进行查表,整个设计,调整都十分困难和繁琐。
为此,常常需要用一些程序和表格来设计椭圆滤波器,用MATLAB设计它们可以大大简化设计过程。
椭圆滤波器的幅度平方响应给出为
(2.5)
是通带波纹(它与
有关),
是N阶雅可比(Jacobian)椭圆函数,N是阶次。
对于奇数和偶数N,可得到不同的椭圆滤波器的幅度响应特性图,具体如下图2-3所示。
图2-3椭圆滤波器的幅度特性
其中椭圆滤波器阶次N的计算公式给出为
(2.6)
当确定了阶次N,便可设计椭圆滤波器了。
MATLAB中提供了丰富的函数,我们可将MATLAB中一个afd_elip函数用于设计一个已知设计指标的模拟低通滤波器[3]。
2.3双线性变换法
双线性变换法保留的是从模拟到数字域的系统函数的表示,它是一种稳定的变换。
双线性变换的主要优点是S平面与Z平面是一种一一对应的单值关系,这种影射是最好的变换方法,具体变换公式为
(2.7)
这里T为采样间隔。
式(2.7)亦可转换为
(2.8)
从式(2.8)可以看出,只要其中一个变量固定,这在每个变量上都是线性的,也就是说在s和z上是双线性的。
在式(2.7)的制约下的复平面影射如图2-4所示。
从图中可以看出,
图2-4双线性变换法中的复平面影射
第一步先将整个S平面压缩影射到S1平面的
~
之间的一条横带里;
第二步再通过标准变换关系将此横带转换到整个Z平面上去[3]。
由图2-4可以看出,S1平面的整个左半平面影射到单位圆内,S1平面的虚轴(整个jΩ)对应于Z平面单位圆的一周,S1平面的Ω=0处对应于Z平面的ω=0处,所以双线性变换不存在混迭效应。
为了将S平面的jΩ轴压缩到S1平面jΩ1轴上的
到
段上,可以通过如下正切变换实现
(2.9)
由此可求得Ω1。
当Ω1由
经过0变化到
时,Ω由-∞经过0变化到+∞,也即影射了整个jΩ轴。
将式(2.9)写成
(2.10)
令s=jΩ,s1=jΩ1,则可得到
(2.11)
最后通过标准变换关系
将S1平面映射到Z平面上去,便可得到式(2.7)所示的S平面和Z平面的单值影射关系。
这便是双线性变换[4]。
3设计步骤
3.1设计流程图
语音信号滤波去噪——使用双线性变换法设计的椭圆滤波器的设计流程如图3-1所示。
图3-1设计流程图
3.2录制语音信号及加噪
利用Windows平台下的录音机,录制一段语音信号“大家好,我是***”,时间在1-2s左右。
录制时,单击如图3-2所示的录音机界面的圆圈,便可录制语音信号。
录音完毕,点击如图3-2所示的方形,录制结束。
图3-2录音机界面
通过点击录音界界面上的文件,选择下拉菜单中的属性,在弹出的对话框中点击立即转换,设置录音的格式为PCM编码,属性8kHz,8位,单声道7kB/s,这样的设置在相同的时间下数据最少,处理时间也就最短,如图3-3所示。
图3-3格式设置对话框
格式设置好后,点击文件,在下拉菜单中选择另存为su.wav,并将其放入到MATLAB安装盘下的work文件夹中。
然后在MATLAB软件平台下,利用函数wavread将语音信号读入workspace,并对其进行频谱分析,画出时域和频域波形图。
函数wavreadd的调用格式为
[x,fs,nbits]=wavread(file)
其中x为采样值;
fs为采样频率,单位为Hz;
bits表示采样位数;
file表示待读取的文件名和全路径。
采集完成后在信号中加入一频率为2200Hz的单频噪声,然后设计滤波器将信号中加入的单频噪声滤除,还原出原始信号。
下面是语音信号采集及加入单频噪声的部分程序。
[x,fs,bits]=wavread('
e:
\su.wav'
);
%输入参数为文件的全路径和文件名
N=length(x);
%计算信号x的长度
fn=2200;
%单频噪声频率
t=0:
1/fs:
(N-1)/fs;
%计算时间范围,样本数除以采样频率
x=x'
;
y=x+0.1*sin(fn*2*pi*t);
wavwrite(y,fs,bits,'
su1'
%将加噪后的语音信号写成wav文件,并命名为su1
在MATLAB平台上执行,可以通过sound(y,fs,bits)回放该语音信号,加入单频干扰后,在明显听出“大家好,我是***”的声音中伴随较尖锐的干