语音信号滤波去噪——使用TUKEYWIN窗设计的FIR滤波器摘要本课程设计主要使用TUKEYWIN窗设计的FIR滤波器对语音信号进行滤波去噪。
课程设计的的平台为MATLAB。
采集一段语音信号,绘制波形并观察其频谱,给定相应技术指标,用窗函数法设计一个满足指标的FIR滤波器,对该语音信号进行滤波去噪处理。
根据滤波后的时域图和原始语音信号时域图的比较,以及滤波后信号的频谱图和原始音乐信号频谱图的比较,最后回放滤波后音乐信号,滤波后的音乐信号与原始音乐信号一样清晰,成功地实现了滤波,达到了设计的要求。
关键词课程设计;滤波去噪;FIR滤波器;TUKEYWIN窗;MATLAB1 引言本课程设计是采用TUKEYWIN窗设计的FIR滤波器对语音信号进行滤波去噪。
通过课程设计了解FIR滤波器设计的原理和步骤,掌握用Matlab语言设计滤波器的方法,了解DSP对FIR滤波器的设计及编程方法。
通过观察音乐信号滤波前后的时域波形的比较,加深对滤波器作用的理解。
通过对比滤波前后波形图的比较和放滤波前后音乐信号的对比,可以看出滤波器对有用信号无失真放大具有重大意义。
1.1 课程设计目的熟悉Matlab语言环境,掌握Matlab语言的编程规则,利用TUKEYWIN窗函数设计法来设计符合要求的FIR滤波器来实现语音信号的滤波去噪。
并绘制滤波前后的时域波形和频谱图。
根据图形分析判断滤波器设计的正确性。
通过本次课程设计熟悉利用TUKEYWIN窗函数法设计FIR滤波器的过程。
增强自己独立解决问题的能力,提高自己的动手能力。
加深对理论知识联系实际问题的理解。
为以后的工作奠定坚实的基础。
1.2 课程设计要求录制一段语音信号,绘制观察波形及频谱图。
根据TUKEYWIN的性能指标合理设计FIR滤波器,对语音信号加入干扰,再用滤波器对干扰语音信号进行滤波去噪,比较滤波前后的频谱图并进行分析。
再回放语音信号对比原语音信号。
看滤波器是否对语音信号进行了滤波去噪。
1.3课程设计平台MATLAB名字由MATrix和LABoratory两词的前3个字母组合而成。
20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB[1]。
MATLAB软件包括五大通用功能:数值计算功能(Nemeric);符号运算功能(Symbolic);数据可视化功能(Graphic);数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。
其中,符号运算功能的实现是通过请求MAPLE 内核计算并将结果返回到MATLAB命令窗口。
该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。
目前,Mathworks公司已推出30多个应用工具箱。
MATLAB在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。
由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能能基本满足信号与系统课程的需求。
例如,解微分方程、傅里叶正反变换、拉普拉斯正反变换、z正反变换等。
MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲激响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析、零极点图绘制等内容。
数值计算仿真分析可以帮助学生更深入理解信号与系统的理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础[2]。
2 基本理论2.1 FIR滤波器FIR滤波器:有限长单位冲激响应滤波器,是数字信号系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
FIR数字滤波器设计的基本步骤如下:(1)确定指标在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。
在很多实际应用中,数字滤波器常常被用来实现选频操作。
因此,指标的形式一般在频域中给出幅度和相位响应。
幅度指标主要以两种方式给出。
第一种是绝对指标。
它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。
第二种指标是相对指标。
它以分贝值的形式给出要求。
(2)逼近确定了技术指标后,就可以建立一个目标的数字滤波器模型。
通常用理想的数字滤波器模型。
之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真上两步的结果是得到以差分或冲激响应描述的滤波器。
根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
FIR滤波器的设计问题实际上是确定能满足所要求的转移序列或脉冲响应的常数的问题,设计方法主要有窗函数、频率响应法和等波纹最佳逼近法等。
2.2 窗口设计法窗口设计法是一种通过截断和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。
通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。
在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频域中以分贝值给出的相对幅度响应和相位响应。
窗口设计法步骤如下:(1)根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N 。
窗函数的类型可根据最小阻带衰减AS 独立选择。
(2)根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n)。
(3)由性能指标确定窗函数W(n)和长度N 。
(4)求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR 滤波器系数向量b(n)。
()().()d h n h n W n (2.1)常见的窗函数性能表如下图1所示:图1 常见窗函数性能表2.3 TUKEYWIN 窗W=tukeywin(M)在数组w中产生M点的Tukeywin窗函数。
由上表可知:Tukeywin窗的滤波器的过滤带宽为2.4π/M,最小阻带衰减22db。
利用wvtool可绘制出Tukeywin窗函数波形如图2:N=128;t=tukeywin(N);Wvtool(t);图2 Tukeywin 窗函数波形3 设计步骤3.1 设计流程图根据设计的要求,首先自己录制一段语音信号,对语音信号加入噪声干扰,再利用TUKEYWIN窗设计合理的FIR滤波器。
最后用滤波器对干扰后的语音信号进行滤波去噪。
具体设计流程图如下图3所示:开始录制段语音信号,命名为“speech_dft.wav”,绘制出其时域波形和频谱图。
加入噪声干扰,绘制干扰后的利用TUKEYWIN窗设计合理的FIR滤波器。
将干扰后的语音信号通过自己设计的滤波器,进行滤波去噪。
比较滤波前后的时域波形和频谱图,并回放语音信号,验证是否达到去噪效果。
NO是否达到去噪效果?YES结束3.2 录制音乐信号从电脑上录制一段语音信号,并命名为“speech_dft.wav”。
在Matlab平台下调用wavread函数可采集到语音信号。
运行程序后得到的波形图如图4所示:图4原始音乐信号时域波形图画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,并将原始音乐信号的波形图与加干扰后的波形图进行比较运行程序后我们所得的波形图如图5所示:图5干扰前后信号时域图与频谱图的比较3.3 滤波器设计滤波器的设计就是要找到一组能满足特定滤波要求的系数向量a和b,其中b为系统函数的分子系数,a为系统函数分母系数。
在本次的课程设计中我所采用的就是利用TUKEYWIN窗函数来设计FIR滤波器如图6所示。
图6设计的滤波器图形3.4 信号滤波处理滤波器设计完成后,在MATLAB平台上用函数filter实现滤波,得到的滤波前后音乐信号的时域波形图和频谱图对比图如图7所示:图7 滤波前后语音信号的时域波形图和频谱图对比图3.5 结果分析在MATLAB中,经过sound(x,fs,bits)函数,对经过TUKEYWIN窗设计的FIR滤波器之后的音乐信号进行回放,可以听出滤波之后的信号跟原始信号一样清晰,完全滤除掉了噪声的干扰,通过下面语句来进行语音信号回放比较:>> sound (y_fil,fs,bits); 播放滤波后的音乐信号>> sound(x,fs,bits);所得结果证明了用TUKEYWIN窗设计的FIR滤波器和音乐信号去噪设计是成功的。
4出现的问题及解决方法在本次课程设计中我遇到的问题如下:1、不知道如何将音乐信号截断成自己所需的长度。
2、对利用TUKEYWIN窗函数设计FIR滤波器的设计步骤很生疏。
3、在采用TUKEYWIN窗函数设计的FIR滤波器时得不到理想的滤波器,因而信号的恢复不是特别理想。
针对以上问题,相应的解决方案如下:1、向同学学习如何截取音乐。
2、自己上网查阅资料,或向图书馆借阅资料,掌握利用TUKEYWIN窗函数设计FIR滤波器的方法和步骤。
3、通过不断设置参数的值,最终达到最理想的值,设计出理想的滤波器,使信号得到理想恢复。
5 结束语本次的课程设计,我的任务是利用TUKEYWIN窗函数设计FIR滤波器对音乐信号滤波去噪。
在本次课程设计之前,我对TUKEYWIN窗函数完全没有了解,因此在看到这个题目时,我是一头雾水。
但是通过自己翻阅资料和询问同学,我掌握了用TUKEYWIN窗函数设计FIR滤波器的方法步骤,了解了窗函数的基本设计流程。
经过这两周的课程设计,我学会了很多东西。
我们通信工程专业是个实践性很强的专业,而我们在校大部分的学习时间都是花在理论学习上面,实践的机会很少。
因而我对很多所学的理论知识如何跟实践联系的概念很模糊,这次的课程设计给了我这个机会,加深了我对理论联系实际的理解,增强了自己独立分析问题和解决问题的能力,开阔了自己的思维。
还有让我看到了自己的不足,自己对本专业的相关知识掌握的还很少,还有很多知识都没掌握,还让我认识到解决问题的方法、途径很多,做事要开阔自己的思维,看待问题要从多个角度看。
在此我要感谢学校为我们提供这次课程设计的机会,感谢老师对我的悉心指导,也感谢同学对我的帮助。
这次的课程设计让我理论联系实际,不仅巩固了我们的理论知识,还提高了我的动手能力,在这次课程设计中我所学到的知识是我的财富,让我终身受益。