matlab音频信号处理实验报告,基于MATLAB的LPC分析_语音信号处理实验报告.doc

253b171540df25e1b84436cbe50dfc72.gif基于MATLAB的LPC分析_语音信号处理实验报告.doc

南京信息工程大学 实验(实习)报告实验(实习)名称 基于 MATLAB 的 LPC 分析 实验(实习)日期 2013.5.2 得分 _指导教师 院电子与信息工程专业电子信息工程年级 班次 姓名 学号 一、实验目的线性预测分析是最有效的语音分析技术之一,在语音编码、语音合成、语音识别和说话人识别等语音处理领域中得到了广泛的应用。语音线性预测的基本思想是一个语音信号的抽样值可以用过去若干个取样值的线性组合来逼近。通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。采用线性预测分析不仅能够得到语音信号的预测波形,而且能够提供一个非常好的声道模型。如果将语音模型看作激励源通过一个线性时不变系统产生的输出,那么可以利用LP 分析对声道参数进行估值,以少量低信息率的时变参数精确地描述语音波形及其频谱的性质。此外,LP 分析还能够对共振峰、功率谱等语音参数进行精确估计,LP 分析得到的参数可以作为语音识别的重要参数之一。由于语音是一种短时平稳信号,因此只能利用一段语音来估计模型参数。此时有两种方案一种是将长的语音序列加窗,然后对加窗语音进行 LP 分析,只要限定窗的长度就可以保证分析的短时性,这种方案称为自相关法;另一种方案不对语音加窗,而是在计算均方预测误差时限制其取和区间,这样可以导出 LP 分析的自协方差法。本实验要求掌握 LPC 原理,会利用已学的知识,编写程序估计线性预测系数以及 LPC的推演参数,并能利用所求的相关参数估计语音的端点、清浊音判断、基因周期、共振峰等。二、实验原理1 LP 分析基本原理LP 分析为线性时不变因果稳定系统 V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号 sn进行模型参数估计。如果利用 P 个取样值来进行预测,则称为 P 阶线性预测。 假设用过去 P 个取样值的加权之和来预测信号当前取样值 ,则预测信号 为1,2,SnSnp SnSn11pka其中加权系数用 表示,称为预测系数,则预测误差为k21pkensSnsan要使预测最佳,则要使短时平均预测误差最小有32minEe40,1kkpa令 5 iEsniSk最小的 可表示成6min10,0,pka显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。通过 LPC 分析,由若干帧语音可以得到若干组 LPC 参数,每组参数形成一个描绘该帧语音特征的矢量,即 LPC 特征矢量。由 LPC 特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等。不同的特征矢量具有不同的特点,它们在语音编码和识别领域有着不同的应用价值。2 自相关法在最佳线性预测中,若用下式定义的时间平均最小均方准则代替3式的集合平均最小均方准则,即令7 120minNpne事实上就是短时自相关函数,因而8,Riki(9),ESnk根据平稳随机信号的自相关性质,可得10 12;0,1ikRipk 由6式,可得11 min10pkaA综上所述,可以得到如下矩阵形式12值得注意的是,自相关法在计算预测误差时,数据段的两端都需要0,1SSn加 P 个零取样值,因而可造成谱估计失真。特别是在短数据段的情况下,这一现实更为严重。另外,当预测系数量化时,有可能造成实际系统的不稳定。自相关解法主要有杜宾算法、格型算法和舒尔算法等几种高效递推算法。3 协方差法如果在最佳线性预测中,用下式定义的时间平均最小均方准则代替3式的集合平均最小均方准则,则可得到类似的方程(13) 12minNnpe可以看出,这里的数据段两端不需要添加零取样值。在理论上,协方差法计算出来的预测系数有可能造成预测误差滤波器的不稳定,但在实际上当每帧信号取样足够多时,其计算结果将与自相关法的结果很接近,因而稳定性一般是能够保证的 当然这种方法也有量化效应可能引起不稳定的缺点。协方差解法的最大优点在于不存在自相关法中两端出现很大预测误差的情况,在 N 和P 相差不大时,其参数估值比自相关法要精确的多。但是在语音信号处理时,往往取 N 在200 左右。此时,自相关法具有较大误差的段落在整个语音段中所占的比例很小,参数估值也是比较准确的。在这种情况下,协方差法误差较小的优点就不再突出,其缺乏高效递推算法的缺点成为了制约因素。所以,在语音信号处理中往往使用高效的自相关法。4 全极点声道模型将线性预测分析应用于语音信号处理,不仅是为了利用其预测功能,更因为它提供了一个非常好的声道模型。将式2所示的方程看成是滤波器在语音信号激励下的输入输出方程,则该滤波器称为预测误差滤波器,其 en是输出误差。变换到 z 域,P 阶预测误差滤波器的系统函数为(14) 1piiHzaz可以看出,如果将预测误差 en作为激励信号,使其通过预测误差滤波器的逆滤波器HZ,即011220RRPP 312nRaaRp(15) 1piiHzAZaz则 HZ的输出为语音信号 sn,也就是说,HZ在预测误差 en的激励下可以合成语音。因此,HZ被称为语音信号的全极点模型,也称为语音合成器。该模型的参数就是 P阶线性预测的预测系数 。1,2iap因为预测误差含有语音信号的基音信息,所以对于浊音,模型的激励信号源是以基音周期重复的单位脉冲;对于清音,激励信号源 en是自噪声。语音信号的全极点模型是一种很重要的声道模型,是许多应用和研究的基础。5 LPCC如果声道特性 HZ用式14所示的全极点模型表示,有(16)1pnSzHIaz式中,Sz和 Iz分别为语音信号 和激励源 的 Z 变换。对人的听觉来说,浊音是最重要nsni的语音信号。对于浊音,模型的激励信号源 en是以基音周期重复的单位脉冲,此时有。可得 的 Z 变换 Sz为1Izns(17)1pnSzaz式中, 为 P 阶线性预测系数。根据倒谱的定义,对具有最小相位特征的语,2ia音信号 ,有ns(18)1l nSzCcz式中, 为语音信号的倒谱。将式16代入式17,并对两边 求导,得nc 1z(19)11,1nnknkacacp根据上式即可由线性预测系数通过递推得到倒谱系数,将这样得到的倒谱称为线性预测倒谱系数。6 结合语音帧能量构成LPC组合参数由于人能从声音的音色、频高等各种信息中感知说话人的个性,因此可以想象,利用特征的有效组合可以得到比较稳定的识别性能。一般来说,如果组合的各参量之间相关性不大,则会更有效一些,因为它们分别反映了语音信号中的不同特征。多年来,人们对组合参数在说话人识别中的应用进行了大量研究 。实验证明,组合参数可以提高系统的识别性能。组合参数虽然可以提高系统的性能,但很显然,无论是在特征参数提取环节,还是在模型训练和模型匹配环节都使运算量有所增加。在特征参数提取环节,要计算一种以上的特征参数。在模型训练和模型匹配环节,由于组合参数特征矢量的维数较多,使运算复杂度有所增加。运算量的增加会使系统的识别速度受到影响。为使运算量问题得到较好的解决,所以可以由 LPC 参数与语音帧能量构成组合参数,能够在运算量增加不明显的情况下改进系统的性能。语音帧能量是指一帧语音信号的能量,它等于该帧语音样值的平方和。选取与语音帧能量构成组合参数主要有以下考虑1)语音帧能量是语音信号最基本的短时参数之一,它表征一帧语音信号能量的大小,是语音信号一个重要的时域特征;2)由一帧语音求出的语音帧能量是一个标量值,与其它参量构成组合参数不会使原特征矢量的维数明显增加,特征矢量的维数越少,则需要的运算复杂度越小,另外,获取语音帧能量的运算并不复杂;3)语音帧能量与 LPC 参数之间的相关性不大,它们反映的是语音信号的不同特征,应该有较好的效果。7 模型增益G模型的激励信号 表示为Gen(20) 1piensa预测误差 en如式(2) ,这样当实际的预测系数与模型系数相等时,有(21) Ge这说明激励信号正比于误差信号,其比例常数等于模型增益 G。通常假设误差信号的能量等于输入激励信号的能量,因此可以得到(22) 112200NNnmmGeE对于式中的激励信号 ,主要分为浊音和清音两种情况。其中为浊音时,考虑到此时实n际的激励信号为声门脉冲,因此可以将激励信号表示为 时的单位抽样。为了保证这个0n假设成立,要求分析的区间应该大致和语音基因周期的长度相等。当语音为清音时,我们假定激励信号 为一个零均值、单位方差的平稳白噪声过程。en采用自相关解法时,浊音的模型增益为23210pninERaG清音计算模型增益的公式和浊音相同。三、实验结果参考我们使用的原始语音为“北风”,采样频率为 11000Hz,运行程序见附录。在这里我们取第 30 帧进行观察,线性预测阶数为 12,看到图 3.1 所示的原始语音帧的波形,预测语音帧波形和它们之间预测误差的波形。图 3.2 为原始语音帧和预测语音帧的短时谱和 LPC 谱的波形0 2 4 6 8 10 12x 104-101 倒倒倒倒倒倒0 50 100 150 200 250 300-0.500.5 倒倒倒倒倒倒倒倒倒倒倒0 50 100 150 200 250 300-0.200.2 倒倒倒倒图3.1 原始语音帧、预测语音帧和预测误差的波形0 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒倒倒倒0 10 20 30 40 50 60 70050100150200倒倒/dB倒倒LPC倒图3.2 原始语音帧和预测语音帧的短时谱和LPC谱的波形这里我们可以改变线性误差的阶数来观察语音帧的短时谱和LP谱的变化情况,如图3.3。0 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒P1 50 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒P1 100 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒P1 20图3.3 预测阶数对语音帧短时谱和LPC谱的影响从图中可以看出,P 越大,LPC 谱越能反映出语音短时谱的细节部分,但 LPC 谱的光滑度随之下降。由于我们的目的只是用 LPC 谱反映声道综合效应的谱的表示式,而具体的谐波形状是通过激励谱来控制的,因此 LPC 谱只要能够体现出语音的共振峰的结构和谱包络就可以,因此从计算复杂性的角度分析,预测阶数 P 应该适中。图 3.4 是原始语音和预测误差的倒谱波形,我们可以从中计算出原始语音的基音周期。从图中看出两峰值之间的间隔为 40 点左右,基音周期为 40/110003.6ms,频率为 278Hz左右。0 50 100 150 200 250 300-2-101倒倒倒/dB倒倒倒倒倒倒倒0 50 100 150 200 250 300-2-101倒倒倒/dB倒倒倒倒倒倒图3.4 原始语音和预测误差的倒谱波形图 3.5 给出了原始语音的语谱图和预测语音的语谱图,通过比较发现,预测语音的预测效果还可以,基音频率相差无几。TimeFrequency倒倒倒倒倒倒倒0 100 200 300 400 500 600 700 800 9000204060TimeFrequency倒倒倒倒倒倒倒0 100 200 300 400 500 600 700 800 9000204060图3.5 原始语音的语谱图和预测语音的语谱图三、LPC 分析程序及实验结果MusicSource wavreadbeifeng.wav;读取 WAV 音频文件“beifeng.wav”Music_source MusicSource;N 256;Hamm hammingN; 形成一个汉明窗,长度为 256frame 请键入想要处理的帧位置 ;提示用户输入数据,提示内容为“请键入想要处理的帧位置 ” origin 是当前帧origin Music_sourceframe - 1 * N / 2 1frame - 1 * N / 2 N;Frame origin .* Hamm;短时傅里叶变换s1,f1,t1 specgramMusicSource,N,N/2,N;生成语谱图Xs1,Ys1 sizes1;用 Xs1 和 Ys1 两个变量表示语谱图向量的大小for i 1Xs1FTframe1i s1i,frame;endN1 请键入预测器阶数 ; 提示用户输入数据,提示内容为“请键入预测器阶数 ”coef,gain lpcFrame,N1; 采用莱文森 - 德宾递推进行 LPC 分析est_Frame filter0 -coef2end,1,Frame; 估计帧LPFFT_est fftest_Frame;err Frame - est_Frame; 误差 FFT_err ffterr;subplot2,1,1,plot1N,Frame,1N,est_Frame,-r;grid;title原始语音帧 vs.预测后语音帧在第 1 行生成 2*1 的坐标轴,在 1 到 256 上画出原始语音帧和预测后语音帧,显示网格,并添加标题“原始语音帧 vs.预测后语音帧”subplot2,1,2,ploterr;grid;title误差;在第 2 行生成 2*1 的坐标轴,画出 err 的图形,显示网格,并添加标题“误差”pausesubplot2,1,2,plotf,20*logabsFTframe2;grid;title短时谱 Gain solution using G2 Rn0 - sumai*Rni,i 1,2,.,PfLength1 2 * N origin,zeros1,N;Xm fftfLength,2 * N;离散傅里叶变换X Xm .* conjXm;计算 X 的模Y fftX , 2 * N;离散傅里叶变换Rk Y1 N;截取 Y 的 1 到 256 段送给 RkPART sumcoef2 N1 1 .* Rk1 N1;G sqrtsumFrame.2 - PART;A FTframe1 - FFT_est1 lengthf1 ./ FTframe1 ; 逆滤波器 AZsubplot2,1,1,plotf1,20*logabsFTframe1,f1,20*logabs1 ./ A,-r;grid;title短时谱;在第一行作出短时谱函数subplot2,1,2,plotf1,20*logabsG ./ A;grid;titleLPC 谱 ;在第二行作出 LPC 谱函数pauseplotabsifftFTframe1 ./ G ./ A;grid;titleexcitedplotf1,20*logabsFFT_est1 lengthf1 .* A / G ;grid;pause find_pitchtemp FTframe1 - FFT_est1 lengthf1; not move higher frequncepitch1 logabstemp;pLength lengthpitch1;result1 ifftpitch1,N; move higher frequncepitch1pLength - 32 pLength 0;result2 ifftpitch1,N; direct do real cepstrum with errpitch fftshiftrcepserr;预测误差倒谱origin_pitch fftshiftrcepsFrame;原始语音帧倒谱subplot2,1,1,plotorigin_pitch;grid;title原始语音帧倒谱直接调用函数;在第一行作出原始语音帧倒谱直接调用函数 subplot2,1,2,plotpitch;grid;title预测误差倒谱 直接调用函数; 在第二行作出预测误差倒谱直接调用函数pausesubplot2,1,1,plot1lengthresult1,fftshiftrealresult1;grid;title预测误差倒谱根据定义编写,没有去除高频分量; 在第一行作出预测误差倒谱 根据定义编写 ,没有去除高频分量subplot2,1,2,plot1lengthresult2,fftshiftrealresult2;grid;title预测误差倒谱根据定义编写,去除高频分量; 在第二行作出预测误差倒谱 根据定义编写 ,去除高频分量运行结果 这里取第 30 帧进行观察 预测器阶数取 12 阶按回车键按回车键按回车键按回车键

你可能感兴趣的:(matlab音频信号处理实验报告,基于MATLAB的LPC分析_语音信号处理实验报告.doc)