1基于Matlab的语音信号分析与处理[摘要]语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。课题基于MATLAB有噪音语音信号处理与设计与实现,本人综合运用数字信号处理的理论知识对加噪声清浊语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,用MATLAB平台对语音信号加入了不同的噪声,进一步用双线性变换法设计了一个的巴特沃思低通IIR滤波器和用窗函数法设计了FIR低通滤波器,然后对加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性。[关键词]清浊语音信号采集;傅里叶变换;滤波器设计;信号处理2目录引言.............................................-1-1基本原理.......................................-1-1.1语音信号概述...................................-1-1.2数字滤波器原理.................................-1-2总体设计思想...................................-2-2.1语音信号的采集................................-2-2.2语音信号处理工具的选择........................-2-2.3数字滤波器的设计..............................-2-3语音信号分析和滤波处理.........................-4-3.1语音信号的采集................................-4-3.2语音信号的频谱分析............................-4-3.3语言信号处理...................................-6-4滤波器的设计[4].................................-10-4.1巴特沃斯低通滤波器............................-10-4.2频率响应S域到Z域的变换:....................-13-4.3设计数字带通滤波器............................-16-4.4窗函数法的FIR滤器波..........................-20-5结果及分析....................................-23-6总结..........................................-23-参考文献........................................-24-附录原程序....................................-25--1-引言语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。本设计先完成语音信号的采集,然后设计低通,高通,带通等滤波器对采集到的语音信号进行滤波处理,分析语音信号各频率段的特性。并对所采集的语音信号加入不同的干扰噪声,对加入噪声的信号进行频谱分析,针对受干扰语音信号的特点设计不同的滤波器,对加噪信号进行滤波,恢复原信号。把原始语音信号、加噪语音信号和滤波后的信号进行时域变换和频域变换,画出它们的时域波形和频域波形图,从视觉角度比较分析滤波的效果。也可将这3类信号进行播放从听觉角度感受滤波的效果。1基本原理1.1语音信号概述语言是人类创造的,是人类区别于其他地球生命的本质特征之一。人类用语言交流的过程可以看成是一个复杂的通信过程,为了获取便于分析和处理的语音信源,必须将在空气中传播的声波转变为包含语音信息并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音信号就成为语音的表现形式或载体。语音学和数字信号处理的交叉结合便形成了语音信号处理。语音信号处理是建立在语音学和数字信号处理基础之上的,对语音信号模型进行分析、存储、传输、识别和合成等方面的一门综合性学科。1.2数字滤波器原理数字滤波器的概念:若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。数字滤波器实质上是一种运算过程——用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。数字滤波器的分类:数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。(1)根据单位冲激响应h(n)的时间特性分类无限冲激响应(IIR)数字滤波器-2-有限冲激响应(FIR)数字滤波器(2)根据实现方法和形式分类递归型数字滤波器非递归型数字滤波器快速卷积型(3)根据频率特性分类低通数字滤波器、高通数字滤波器、带通数字波器、带阻数字滤波器[1]2总体设计思想2.1语音信号的采集Windows自带了一个录音机程序(简称录音机),通过它可以驱动声卡采集、播放和简单处理语音信号。语音信号的采集可以用麦克风直接录制人的语音,也可以通过音频线或者MIDI线将收音机、电视机或磁带录机中的语音信号采集到计算机中。在录音机中可以进行简单的声音处理,如加大或降低音量,加速或减速,声音的反转或添加回音效果等。加速或减速的改变可以完成变音功能,反转可以达到对声音文件保密的功能。本设计用是收音机接到电脑上用录音机录的,保存起来以备处理。[2]2.2语音信号处理工具的选择语音信号的进一步处理分析工作选用了matlab平台。MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善MATLAB产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。在编程效率、程序可读性、可移植性和可扩充性上matlab远远优于其它的高级编程语言,而且编程易学、直观,代码非常符合人们的思维习惯。另外matlab为用户提供了丰富的windows图形界面设计方法,使用户能够在利用其强大的数值计算功能的同时可设计出友好的图形界面,它受到了越来越多的用户的欢迎Matlab几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上,matlab远优越于其他的高级编程语言。Matlab语言具有强大的数值计算能力和视图能力,其偏微分方程工具箱提供了有限元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。但是,和其他的高级语言相比,matlab程序的执行速度较慢。在目前电脑处理速度不断提升的情况下,如果实时性要求不是非常高的情况下,使用matlab开发就不存在此类问题了。2.3数字滤波器的设计本设计在matlab平台上,设计了IIR和FIR滤波器各种类型的滤波器。用以对语-3-音原始信号及加噪的语音信号进行滤波,重点对加噪信号进行了滤波。对于IIR滤波器,它的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次可以较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。设计IIR数字滤波器的常用方法是从模拟滤波器来设计数字IIR滤波器。模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便。再将模拟滤波器转换为数字滤波器,其转换方法有冲激响应不变法和双线性Z变换法。一般,当着眼于滤波器的时域瞬态响应时,采用脉冲响应不变法较好,而其它情况下,对于IIR的设计,大多采用双线性变换法。对于FIR滤波器,它有精确、严格的线性相位特性,并且可以做成既是因果的又是稳定的系统。所以FIR滤波器的应用越来越广泛。[3]IIRDFFIRDF(1)相位一般是非线性的(1)相位可以做到严格线性(2)不一定稳定(2)一定是稳定的(3)不能用FFT作快速卷积(3)信号通过系统可采用快速卷积(4)一定是递归结构(4)主要是非递归结构,也可含递归环节(5)对频率分量的选择性好(零极点可同时起作用)(5)选择性差(6)相同性能下阶次较低(6)相同性能下阶次高(7)有噪声反馈,噪声大(7)噪声小(8)运算误差大,有可能出现极限环振荡(8)运算误差小,不会出现极限环振荡(9)设计有封闭形式的公式,一次完成(9)没有封闭形式的设计公式,须靠经验与反复调试(10)对计算手段的要求较低(10)一般需用计算机计算-4-(11)主要用于设计分段常数的标准低通、高通、带通、带阻和全通滤波器(11)还可设计正交变换器、微分器、线性预测器、回波抵消器、均衡器、线性调频器等各种网络,适用范围广表2.1IIR滤波器与FIR滤波器的性能比较从上面的简单比较我们可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。例如,从使用要求上来看,在对相位要求不敏感的场合,如语言通讯等,选用IIR较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的条件等多方面的因素。整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。而不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:(1)按照实际任务的要求,确定滤波器的性能指标。(2)用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。根据系统的不同的要求可以考虑用IIR系统函数或FIR系统函数去逼近。(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。3语音信号分析和滤波处理3.1语音信号的采集把语音信号并保存为.wav文件,长度小于30秒,并对语言信号进行采样;录制的软件可以使用Windows自带的录音机,或者也可以使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为了方便比较,需要在安静、无噪音、干扰小的环境下录。3.2语音信号的频谱分析首先画出语音信号的时域波形,然后对话音信号进行频谱分析。在MATLAB中,可以采用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。其程序如下:[y,Fs,bits]=wavread('d:\声音片段01.wav');%读出信号,采样率和采样位数Sound(y);Y=fft(y,4096);figure(1);subplot(2,2,1);plot(y);-5-title('原时域波形');ylabel('amplitude');xlabel('n');subplot(2,2,2);plot(abs(Y));%对频域取模axis([0,4096,0,3]);%横纵坐标确定title('原频谱特性');%标题ylabel('a