基于MATLAB的小波在语音信号中的应用_第1页
基于MATLAB的小波在语音信号中的应用_第2页
基于MATLAB的小波在语音信号中的应用_第3页
基于MATLAB的小波在语音信号中的应用_第4页
基于MATLAB的小波在语音信号中的应用_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于MATLAB的小波在语音信号中的应用[摘要]MATLAB作为一种高性能和可靠性比较强的数值计算和可视化的软件,经过各个行业领域专家的共同努力和不断研究,MATLAB现已包含信号处理和图像处理以及通信和小波分析还有就是优化以及控制系统等不同应用领域的相关的工具箱。我在设计中将以MATLAB软件为参考和结合工程实际运用中的各应用领域,由浅入深地讲解应该如何应用MATLAB来实现小波在语音信号中的应用。[关键词]MATLAB;小波去噪;语音信号Abstract:MATLABasahighperformanceandreliability,strongnumericalcalculationandvisualizationsoftware,throughthevariousindustryexpertsinthefieldofjointeffortsandcontinuousresearch,MATLABnowincludessignalprocessingandimageprocessingandcommunicationandwaveletanalysisandoptimizationandcontrolsystemsindifferentapplicationareasrelatedtothetoolbox.I'mindesign,takingMATLABsoftwareforreferenceandcombiningwiththepracticalengineeringapplicationoftheapplicationfromtheshallowertothedeeper,toexplainhowtouseMATLABtoachievethewaveletapplicationinspeechsignal.Keywords:MATLAB,Waveletdenoising,Speechsignal目录TOC\o"1-3"\h\u1.引言 11.1研究意义 11.2研究背景 12.基于MATLAB的小波变换处理过程 12.1小波的定义 12.2小波变换处理的概述 23.基于MATLAB的小波变换的相关特点 33.1基于MATLAB的小波滤波器的镜像 33.2利用A×A的比例尺的矩阵来分析小波 34.基于MATLAB的小波在语音信号的去噪方法 44.1基于MATLAB语音信号小波变换阈值去噪法 44.2基于MATLAB的小波阈值处理方式的优化 54.3基于MATLAB的小波在语音信号去噪的仿真程序 64.4基于MATLAB的小波在语音信号去噪的仿真应用举例 105.结语 116.致谢 117.参考文献 12陕西理工学院毕业设计第1页共12页的有关的信号分析理论:短时傅立叶变换和Gabor变换以及时频分析与小波变换,还有分数阶傅立叶变换和线调频小波变换以及循环统计量理论和调幅-调频信号分析等。其中短时的傅立叶变换和小波变换也将是应传统的傅立叶变换不能够满足相关的信号处理的要求而彼此产生的。短时的傅立叶变换分析的基本思想将主要是:我们可以假定非平稳信号在分析窗函数g(t)的一个短时间间隔内将是平稳的,并可以移动分析窗函数,使将在不同的有限时间的宽度内是平稳的信号,从而可以计算出各个不同时刻的有关的功率谱。但我们将从本质上来讲的话短时傅立叶变换将会是一种比较单一分辨率的信号分析方法,因为短时傅立叶变换使用一个固定的短时窗函数。因而短时傅立叶变换在信号分析上还是存在着不可改变的一些缺陷。小波变换是一种信号的时间—尺度分析方法,它具有多分辨率分析的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可改变,时间窗和频率窗都可以改变的时频局部化分析方法。即在低频部分具有较高的频率分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很适合于探测正常信号中夹带的瞬态反常现象并展示其成分,所以被誉为分析信号的显微镜,利用连续小波变换进行动态系统故障检测与诊断具有良好的效果。小波变换是空间和时间以及频率的一些局部信号的变换,小波变换能有效地从语音信号中提取有用的信息。由于有些语音信号主要分布在低频区域而噪声则主要分布在高频区域部分,但在高频区域中也含有一小部分有用的语音信号信息,使用MATLAB的小波变换方法处理语音信号,可以分解只作用于低频部分而我们将高频部分保持不动。基于MATLAB的小波在语音信号中的应用方面还在化学领域有所应用,这会经常涉及到光谱信号和波谱信号以及电化学信号等各种化学信号的处理,在化学领域的这些方面小波分析已得到了非常成功的应用。目前MATLAB软件有很多方法可用于信号的降噪,如中值滤波和低通滤波以及傅立叶变换等,但它们都将会滤掉了语音信号细节中的有用部分,小波分析作为一种基于MATLAB新的数学工具,对很多领域特别是语音信号分析领域将会产生了重大影响。MATLAB的小波包变换是小波变换的推广和延续,我们可以视为普遍的一些小波函数的线性组合表示信号时,具有比小波变换更强的灵活性和便捷性。小波包变换在处理语音信号时,高频部分也和低频部分一样被分解。3.基于MATLAB的小波变换的相关特点3.1基于MATLAB的小波滤波器的镜像在基于MATLAB的小波在语音信号的应用分析中,小波的一些相关的函数以及小波的相关滤波器和相关的比例尺函数或者比例尺的相关滤波器主要是以成对的情况出现的,基于MATLAB的小波是有很多种类的。我们在对相关的离散的小波信号进行相关的特点分析时,它们均可以使用一个有限的相关数组来表示。在信息学中我们可以将有限的相关数组表示可以理解为主要是一种有限的脉冲响应的滤波器,这种有限的脉冲响应的滤波器实际效果将是对原信号没有任何的反馈作用的。基于MATLAB的小波的另一种对原信号的相关具有反馈作用的滤波器我们可以称为无限脉冲响应的滤波器。这在小波的相关分析中的这种有限的脉冲响应滤波器,我们必须满足的是比例尺的相关滤波器中的各个数值之和的平方将需要是恒等于2或1。基于MATLAB的小波滤波器中的各数值之和恒等于零;在基于MATLAB的小波滤波器中,各项数值相对于它们的相关比例尺的实际的滤波器中,各项的数值之间将具有反对称的一些相关的特点;正是由于这个特点的存在,小波滤波器有时我们也将称为相关比例尺滤波器的镜像。基于MATLAB的小波滤波器的第一项的相关数值,将会等于比例尺的滤波器中倒数第一项的实际的数值,而是在第二项中就会等于倒数第二项的实际数值,并且我们知道所有的奇数项的实际符号均会为负号。3.2利用A×A的比例尺的矩阵来分析小波基于MATLAB的小波中如果有一列长度为A的离散的的相关小波信号,那么我们在进行小波分析的时候就要考虑先形成一个A×A的比例尺的相关矩阵。我们要考虑在相关矩阵的每一行要除了滤波器的实际数值以外其他的数值要均为零的状态,同时我们要考虑每行的滤波器的实际数值将会依照相关的位移量逐渐地进行向右地平移。那么该矩阵和小波信号向量的相关乘积就是我们所考虑获得的实际的比例尺的系数,同理我们将可以考虑基于MATLAB的小波获得高通滤波器的相关小波系数。它们所获得的比例尺的相关系数又将我们可以进行下一级的相关分析。一般来说基于MATLAB的小波的低通滤波器的作用将主要是平滑数据,而高通滤波器的实际作用就是获取它们在这个细节上的相关的差别。4.基于MATLAB的小波在语音信号的去噪方法我们对于语音信号去噪方法的研究是语音信号处理领域一个不便的研究话题。我们知道比较经典的一些信号去噪方法主要包括如时域法和频域法,还有就是加窗傅立叶变换法和维纳分布法等各自都有其相关的局限性的同时也有其优势。但也限制了这些语音信号去噪方法的相关应用的范围。基于MATLAB的几种常用小波在语音信号的去噪方法以及变换是一种新的去噪方法,基于MATLAB的阈值去噪法在时频两域都具有非常良好的局部化特性。并且基于MATLAB阈值去噪法的在语音信号的去噪领域获得了非常广泛的应用。我的论文将主要研究了基于MATLAB的几种常用小波在语音信号的去噪方法的变换理论,论文着重分析了小波在语音信号在非平稳语音信号去噪中的相关的应用方法。我也比较了几种常用小波阈值去噪法的应用分析,并针对基于MATLAB的几种常用小波阈值去噪法中常会遇到的小波语音信号的相关的分解层数的选取和阈值的合理选取。利用MATLAB的小波分析工具箱详细地分析研究了实际的语音信号,并可以根据相关语音信号的噪音模式,我主要在论文中提出了一种改进的小波域的相关语音去噪的实际方法。4.1基于MATLAB语音信号小波变换阈值去噪法对于基于MATLAB信号去噪方法的研究是信号处理领域一个永恒的经典话题。我们研究如何利用MATLAB软件去除语音中的噪声,以及改进相关的语音质量和对于提高相关语音的可懂度是语音信号处理的关键所在。传统的语音去噪的相关算法是主要对语音信号进行时域或频域的相关滤波的方法,这些语音去噪的方法往往只是对某种特定的语音噪声的去噪的效果明显。当语音信号中的噪声与相关语音的一些频谱相似时,传统的单纯时域或频域处理往往将无法达到很好的去噪效果。基于MATLAB的小波在语音信号中的变换是在上世纪的80年代末发展起来的一种时频局部化的分析方法,这种方法特别适用于分析非平稳的小波时变的相关语音信号。克服了短时傅立叶变换固定分辨率的弱点,既可以分析信号的概貌,又可以分析信号的细节,利用小波变换实现信号的去噪,具有较好的效果。基于MATLAB的小波在语音信号中的应用理论已在语音信号的去噪方面已经在语音信号的相关科研的处理方面得到越来越广泛的应用。基于MATLAB的小波具有相关的多分辨率的分析的方法,我们将使基于MATLAB的小波具有带通滤波的一些相关的特性,因而我们就可以利用小波分解与小波重构的相关方法来对相关的滤波进行降噪处理。基于MATLAB的小波在语音信号中的奇异性检测的相关理论将会使得我们也可利用小波变换模的极大值的相关方法去噪。非线性小波语音信号变换的相关阈值去噪法将使小波阈值去噪得到了非常广泛的应用。基于MATLAB语音信号小波变换阈值去噪法对传统的相关去噪方法进行了改进,把传统的相关去噪方法和阈值去噪的相关方法结合在了一起,这将得到了一种新的组合方法。该方法特点是在滤波之后得到的相关小波系数不仅连续性好的同时准确率也高,而且易于和方便我们重构信号。基于MATLAB语音信号的仿真结果表明,消噪的效果有了比较明显的改观。基于MATLAB的小波在语音信号中的应用的小波域的相关滤波是根据信号和相关噪声在不同尺度上的小波变换的不同形态来表现和构造出相应的消噪规则,这样就会对信号和相关噪声的小波变换系数进行相关的处理,这样处理的实质就在于不断地减少以至于完全剔除小波在语音信号中由噪声产生的相关系数,这样就可以同时最大限度地保留有效语音信号对应的一些小波系数,再由MATLAB对处理过的相关小波系数进行信号重构,从而可以得到原始信号的最优估计。基于MATLAB的小波变换的滤波作用,我们知道就主要包含在对小波变换系数的相关处理中。我们对于小波语音信号的正常边缘和相关的Lipschitz的指数将是大于或等于0的,这时小波语音信号变换的相关幅值将主要随着尺度的不断增加而增加和保持不变;而对于基于MATLAB的小波语音信号的噪声,其Lipschitz指数将主要是小于0的状况,这时小波变换的相关幅值将会随着尺度的不断增加而进入迅速衰减的状况。我们当将相关的尺度增大到一定程度的时候基于MATLAB的小波的噪声控制点将随着小波变换的模极值点将会不断地消失。基于MATLAB的小波语音信号经过小波变换之后,其小波变换的相关系数将在各尺度的相应的位置上往往有较强一些的实际相关性,尤其是在小波语音信号的边缘附近,其相关性将会更加明显而噪声对应的小波语音信号的小波系数在相关的尺度间将是不相关或弱相关的状态。因此我们可以考虑利用小波系数在不同尺度上对应点处的相关性来区分系数的不同类别从而进行相关取舍。通过这样的方法滤波之后的小波语音信号的系数基本上对应着信号的边缘而达到了去噪的实际效果。4.2基于MATLAB的小波阈值处理方式的优化传统的硬和软阈值处理方式方法虽然在实际应用中得到了广泛的应用,也取得了较好的理想效果,但是这些方法本身还存在一些应有的缺陷。在基于MATLAB的相关的硬阈值处理过程中,主要得到的相关的一些小波系数值的连续性比较差,也就是由于分解系数在相关的±λ处是不连续的,因此我们知道重构所得的小波语音信号可能会产生一些振荡的效应;而软阈值的相关方法中估计的相关小波系数虽然整体上的连续性较好一些,但是由于当小波系数较大时它们的分解系数之间总存在一些恒定的偏差值,我们知道这将会直接影响相关的重构信号与真实信号的彼此逼近程度,给重构信号带来不可避免的一些误差。如果我们对相关噪声用分解的实际系数用C(J,k)来表示的话,其中j代表的就是小波语音信号的尺度,k代表相关的时间,我们则可以得出如下的相关结论:如果我们所分解的语音信号是一个平稳的零均值的白噪声的信号的话,则其小波分解系数将会是不相关的;如果我们所分解的语音信号是一个高斯噪声,那么则其小波分解系数将会是相对独立的,并且也是高斯分布的状态;如果我们所分析的信号是一个有色和平稳以及零均值的相关的高斯噪声序列,那么其小波语音的分解系数也是高斯序列。系统对每一个分解尺度j,其系数将主要是一个有色和平稳的序列。

我们可以用ω(j,k)表示对语音的含噪信号进行相关小波分解后得到的相关的小波系数,我们知道由于小波变换将主要是一种线形的变换,因此小波变换主要由2部分组成,也就是语音信号对应的小波系数和相关的噪声对应的小波系数。我们知道由于可以利用软阈值方法估计出来相关的小波系数ω(j,k)的相关绝对值总比ω(j,k)要小λ而影响了重构的相关精度,这样我们应设法想办法减小此偏差。我们只要使ω(j,k)与由语音信号对应的相关小波系数之间的差值尽量小一些,这样则ω(j,k)更接近于信号对应的一些小波系数,这样理解重构精度就会越高的构造函数:

我们由函数式可知,当a=O时上式将会等效为Donoho的相关硬阈值;当a一1时,上式将会等效为Donoho软阈值;当a在0到1之间不断地变化时,z将为±cx3,我们可以知道有|f(x)一x|一>aλ。也就是说,随着ω(j,k)模值的不断增大,ω(j,k)与ω(j,k)偏差的绝对值的范围将会逐渐减小为αλ,这样将会大大地减小了软阈值方法中产生的相关恒定的一些偏差的同时将提高了重构精度和改善了实际的去噪效果。可见相对于硬和软阈值函数而言,新阈值函数将是一个更灵活的基于MATLAB的小波在语音信号中的应用选择。我们只要在0和1之间适当的调整α的大小,就可以获得更好的小波在语音信号中的去噪效果。图1是我用Matlab画出的Donoho软和硬阈值图及新阈值的相关函数图,主要是当α=O.1的情况下。4.3基于MATLAB的小波在语音信号去噪的仿真程序其源程序如下:clear

clc

/*此程序表示在噪声环境下语音信号的相关增强功能和语音信号将主要为读入的相关声音文件以及噪声主要为正态的一些随机噪声*/

sound=wavread('c12345.wav');

count1=length(sound);

noise=0.05*randn(1,count1);

fori=1:count1

signal(i)=sound(i);

end

fori=1:count1

y(i)=signal(i)+noise(i);

end

/*此程序表示在在小波基“db3”的状态下进行一维的离散相关小波变换*/

[coefs1,coefs2]=dwt(y,'db3');/*此程序表示低频和高频*/

count2=length(coefs1);

count3=length(coefs2);

energy1=sum((abs(coefs1)).^2);

energy2=sum((abs(coefs2)).^2);

energy3=energy1+energy2;

fori=1:count2

recoefs1(i)=coefs1(i)/energy3;

end

fori=1:count3

recoefs2(i)=coefs2(i)/energy3;

end

/*此程序主要是表示低频系数进行相关的语音信号清浊音的判别*/

zhen=160;

count4=fix(count2/zhen);

fori=1:count4

n=160*(i-1)+1:160+160*(i-1);

s=sound(n);

w=hamming(160);

sw=s.*w;

a=aryule(sw,10);

sw=filter(a,1,sw);

sw=sw/sum(sw);

r=xcorr(sw,'biased');

corr=max(r);/*此程序主要是表示系统为清音(unvoice)时,输出将为1;系统为浊音(voice)时,输出结果将为0*/

ifcorr>=0.8

output1(i)=0;

elseifcorr<=0.1

output1(i)=1;

end

end

fori=1:count4

n=160*(i-1)+1:160+160*(i-1);

ifoutput1(i)==1

switchabs(recoefs1(i))

caseabs(recoefs1(i))<=0.002

recoefs1(i)=0;

caseabs(recoefs1(i))>0.002&abs(recoefs1(i))<=0.003

recoefs1(i)=sgn(recoefs1(i))*(0.003*abs(recoefs1(i))-0.000003)/0.002;

otherwiserecoefs1(i)=recoefs1(i);

end

elseifoutput1(i)==0

recoefs1(i)=recoefs1(i);

end

end

/*此程序主要是表示对相关的高频系数进行语音信号清浊音的判别*/

count5=fix(count3/zhen);

fori=1:count5

n=160*(i-1)+1:160+160*(i-1);

s=sound(n);

w=hamming(160);

sw=s.*w;

a=aryule(sw,10);

sw=filter(a,1,sw);

sw=sw/sum(sw);

r=xcorr(sw,'biased');

corr=max(r);

/*此程序主要是表示在清音(unvoice)时,输出结果将为1;为浊音(voice)时,输出结果将0*/

ifcorr>=0.8

output2(i)=0;

elseifcorr<=0.1

output2(i)=1;

end

end

fori=1:count5

n=160*(i-1)+1:160+160*(i-1);

ifoutput2(i)==1

switchabs(recoefs2(i))

caseabs(recoefs2(i))<=0.002

recoefs2(i)=0;

caseabs(recoefs2(i))>0.002&abs(recoefs2(i))<=0.003

recoefs2(i)=sgn(recoefs2(i))*(0.003*abs(recoefs2(i))-0.000003)/0.002;

otherwiserecoefs2(i)=recoefs2(i);

end

elseifoutput2(i)==0

recoefs2(i)=recoefs2(i);

end

end

/*下面的程序主要是表示在小波基“db3”时的状态下进行一维离散小波反变换*/

output3=idwt(recoefs1,recoefs2,'db3');/*下面的程序主要是表示读出带噪语音信号,我们将结果存为“101.wav”*/

wavwrite(y,5500,16,'c101');

/*下面的程序主要是表示读出相关处理后的语音信号,将结果存为“102.wav”*/

wavwrite(output4,5500,16,'c102');

/*下面的程序主要是表示对相关输出信号的抽样点值进行归一化的相关处理*/

maxdata=max(output3);

output4=output3/maxdata;4.4基于MATLAB的小波在语音信号去噪的仿真应用举例如下程序,将一段格式为“voice.wav”语音信号进行去噪处理:clearclc%在噪声环境下语音信号的增强%语音信号为读入的声音文件%%噪声为正态随机噪声sound=wavread('Voice.wav');count=length(sound);noise=0.05*randn(1,count);y=sound'+noise;%获取消噪的阈值[thr,sorh,keepapp]=ddencmp('den','wv',y);%对信号进行消噪yd=wdencmp('gbl',y,'db4',2,thr,sorh,keepapp);subplot(121);plot(sound);title('原始语音信号');subplot(122);plot(yd);title('去噪后的语音信号');经过去噪处理后期运行结果如图2:图2语音去噪处理仿真结果5.结语基于MATLAB的小波在语音信号中的应用方面主要包括语音识别与合成,基于MATLAB的小波在语音信号中的应用方法是用计算机智能接口技术来主要体现计算机对听觉信号的处理。小波的语音信号会在传输过程中将会不可避免地受到自然的和人为的各种环境的相互干扰,我们可以利用MATLAB将从受扰动观测的相关信号中获得去噪的相关的信息,这不仅与干扰的性质和信号的各种形式有关,也与信号的相关处理的方式有关。在我们的实际应用中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论