文档详情

实验4基于MATLAB的语音信号LPC分析

大米
实名认证
店铺
PPT
407KB
约21页
文档ID:579552174
实验4基于MATLAB的语音信号LPC分析_第1页
1/21

实验四实验四 基于基于MATLAB的语音信号的语音信号LPC分析分析 寐隶敬祭姜合孺栗喻厌典踏窒董卉荫供林蹈澈庆考甫荐其肝宅堕善打辈扁实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 一、实验目的一、实验目的¨掌握掌握LPC原理,会利用已学的知识,编写程序原理,会利用已学的知识,编写程序估计线性预测系数以及估计线性预测系数以及LPC的推演参数的推演参数 ¨能利用所求的相关参数估计语音的端点、清浊能利用所求的相关参数估计语音的端点、清浊音判断、基因周期、共振峰等音判断、基因周期、共振峰等 蛊阂火限颜忱缴阳饭浦聊斋赃斟捣骨吾察嘘蠕照誓憋链拼碎韧厚庐熔豫呢实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 二、实验原理二、实验原理LPC分析基本原理分析基本原理LPC分析为线性时不变因果稳定系统V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号s(n)进行模型参数估计如果利用P个取样值来进行预测,则称为P阶线性预测假设用过去P个取样值 的加权之和来预测信号当前取样值 ,则预测信号 为:(1)其中加权系数用 表示,称为预测系数,则预测误差为: (2)要使预测最佳,则要使短时平均预测误差最小有: (3)坚戚兢称蜀闰驮敞瑰儿铺霞来竭洱恤拨擦红岩椿磋移调惨坎诱瘪踊赴松惯实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 (4)令 (5) 最小的 可表示成:(6) 显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。

通过LPC分析,由若干帧语音可以得到若干组LPC参数,每组参数形成一个描绘该帧语音特征的矢量,即LPC特征矢量由LPC特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等不同的特征矢量具有不同的特点,它们在语音编码和识别领域有着不同的应用价值级寸锋她黄国咀苛够鼠掣疲修态礁翘椅完扔祭辉镶掷捌朋脑对播狮找闭桑实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 自相关法自相关法 在最佳线性预测中,若用下式定义的时间平均最小均方准则代替(3)式的集合平均最小均方准则,即令(7)事实上就是短时自相关函数,因而(8)(9)根据平稳随机信号的自相关性质,可得(10)由(6)式,可得:(11)综上所述,可以得到如下矩阵形式:(12)卞羞面猩榆泻饯粒城擒芹靶按慢青砚碧态翘量帖还烷酿殉郴奄踩徒珊猴掖实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 协方差法协方差法 如果在最佳线性预测中,用下式定义的时间平均最小均方准则代替(3)式的集合平均最小均方准则,则可得到类似的方程:(13) ¨可以看出,这里的数据段两端不需要添加零取样值。

在理论上,协方差法计算出来的预测系数有可能造成预测误差滤波器的不稳定,但在实际上当每帧信号取样足够多时,其计算结果将与自相关法的结果很接近,因而稳定性一般是能够保证的 (当然这种方法也有量化效应可能引起不稳定的缺点)¨协方差解法的最大优点在于不存在自相关法中两端出现很大预测误差的情况,在N和P相差不大时,其参数估值比自相关法要精确的多但是在语音信号处理时,往往取N在200左右此时,自相关法具有较大误差的段落在整个语音段中所占的比例很小,参数估值也是比较准确的在这种情况下,协方差法误差较小的优点就不再突出,其缺乏高效递推算法的缺点成为了制约因素所以,在语音信号处理中往往使用高效的自相关法铸娩汁熬汤铜咬晓飞巫犬购揭惜窜涉碰厄凹煮乓夕丧贞查伊纺办痛渴菌抚实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 全极点声道模型全极点声道模型 能量分析是基于语音信号能量随时间有相当大的变化,将线性预测分析应用于语音信号处理,不仅是为了利用其预测功能,更因为它提供了一个非常好的声道模型 将式(2)所示的方程看成是滤波器在语音信号激励下的输入输出方程,则该滤波器称为预测误差滤波器,其e(n)是输出误差。

变换到z域,P阶预测误差滤波器的系统函数为(14) 可以看出,如果将预测误差e(n)作为激励信号,使其通过预测误差滤波器的逆滤波器H(Z),即(15) 则H(Z)的输出为语音信号s(n),也就是说,H(Z)在预测误差e(n)的激励下可以合成语音因此,H(Z)被称为语音信号的全极点模型,也称为语音合成器该模型的参数就是P阶线性预测的预测系数 因为预测误差含有语音信号的基音信息,所以对于浊音,模型的激励信号源是以基音周期重复的单位脉冲;对于清音,激励信号源e(n)是自噪声 塔塞曾遵麦暴颈然渠傲谓漂恿措砸抛间巨慢噎宵咏谨林签衣镇寂潦仓谐左实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 LPC 如果声道特性H(Z)用式(14)所示的全极点模型表示,有(16) 式中,S(z)和I(z)分别为语音信号和激励源的Z变换对人的听觉来说,浊音是最重要的语音信号对于浊音,模型的激励信号源e(n)是以基音周期重复的单位脉冲,此时有 可得的Z变换S(z)为(17) 式中, 为P阶线性预测系数。

根据倒谱的定义,对具有最小相位特征的语音信号,有式中, 为语音信号的倒谱将式(16)代入式(17),并对两边求导,得(18)(19) 根据上式即可由线性预测系数通过递推得到倒谱系数,将这样得到的倒谱称为线性预测倒谱系数驶佛悯萎奸虞励措阉酵较倾登篷侩兰棘氏拐蒜驱赡黄夜彬破缩帛滔台决鸵实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 结合语音帧能量构成结合语音帧能量构成LPC组合参组合参数数¨实验证明,组合参数可以提高系统的识别性能实验证明,组合参数可以提高系统的识别性能¨组合参数虽然可以提高系统的性能,但很显然,无论是在特征参组合参数虽然可以提高系统的性能,但很显然,无论是在特征参数提取环节,还是在模型训练和模型匹配环节都使运算量有所增数提取环节,还是在模型训练和模型匹配环节都使运算量有所增加在特征参数提取环节,要计算一种以上的特征参数在模型加在特征参数提取环节,要计算一种以上的特征参数在模型训练和模型匹配环节,由于组合参数特征矢量的维数较多,使运训练和模型匹配环节,由于组合参数特征矢量的维数较多,使运算复杂度有所增加运算量的增加会使系统的识别速度受到影响。

算复杂度有所增加运算量的增加会使系统的识别速度受到影响¨为使运算量问题得到较好的解决,所以可以由为使运算量问题得到较好的解决,所以可以由LPC参数与语音帧参数与语音帧能量构成组合参数,能够在运算量增加不明显的情况下改进系统能量构成组合参数,能够在运算量增加不明显的情况下改进系统的性能¨语音帧能量是指一帧语音信号的能量,它等于该帧语音样值的平语音帧能量是指一帧语音信号的能量,它等于该帧语音样值的平方和选取与语音帧能量构成组合参数主要有以下考虑:方和选取与语音帧能量构成组合参数主要有以下考虑:1)语音)语音帧能量是语音信号最基本的短时参数之一,它表征一帧语音信号帧能量是语音信号最基本的短时参数之一,它表征一帧语音信号能量的大小,是语音信号一个重要的时域特征;能量的大小,是语音信号一个重要的时域特征;2)由一帧语音求)由一帧语音求出的语音帧能量是一个标量值,与其它参量构成组合参数不会使出的语音帧能量是一个标量值,与其它参量构成组合参数不会使原特征矢量的维数明显增加,特征矢量的维数越少,则需要的运原特征矢量的维数明显增加,特征矢量的维数越少,则需要的运算复杂度越小,另外,获取语音帧能量的运算并不复杂;算复杂度越小,另外,获取语音帧能量的运算并不复杂;3)语音)语音帧能量与帧能量与LPC参数之间的相关性不大,它们反映的是语音信号的参数之间的相关性不大,它们反映的是语音信号的不同特征,应该有较好的效果。

不同特征,应该有较好的效果犀隔浇鳞趾咱兼胃疼的窃宜考考斜搀穿论袍脑翁颊耸待排妻颂雀宏盲原须实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 模型增益模型增益G模型的激励信号 表示为:(20) 预测误差e(n)如式(2),这样当实际的预测系数与模型系数相等时,有(21) 这说明激励信号正比于误差信号,其比例常数等于模型增益G通常假设误差信号的能量等于输入激励信号的能量,因此可以得到:(22) 对于式中的激励信号额e(n),主要分为浊音和清音两种情况其中为浊音时,考虑到此时实际的激励信号为声门脉冲,因此可以将激励信号表示为n=0时的单位抽样为了保证这个假设成立,要求分析的区间应该大致和语音基因周期的长度相等当语音为清音时,我们假定激励信号e(n)为一个零均值、单位方差的平稳白噪声过程袱亩画台簇拳咕晰非腿惹忿麓鹃低绍恃杰镇糖宋奴椅谤霸蚁颗讽荫围矽周实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 采用自相关解法时,浊音的模型增益为(23)清音计算模型增益的公式和浊音相同矩交痕坪诬恿页梨苹杏埂惹惭湘亿竭公搬仓着换嗓般恍颤浓炒幻左规扬蜡实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 实验结果实验结果(参考参考)¨我们使用的原始语音为“kdt_070”,采样频率为11000Hz,运行程序见附录。

¨在这里我们取第30帧进行观察,线性预测阶数为12,看到图3.1所示的原始语音帧的波形,预测语音帧波形和它们之间预测误差的波形图3.2为原始语音帧和预测语音帧的短时谱和LPC谱的波形图3.1 原始语音帧、预测语音帧和预测误差的波形毗兴见雪献粕罩鄂驻匡搔秋惕别器疑魄偶桃愚鹤们琼焊悼雁榴肺利陀正尿实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 图3.2 原始语音帧和预测语音帧的短时谱和LPC谱的波形嘘瞅掩外掷怯买参删翘停痪泪囱请兼蚤映弓器奠穷钟请彼愉直浑瞄掳枚幢实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 这里我们可以改变线性误差的阶数来观察语音帧的短时谱和LP谱的变化情况,如图3.3图3.3 预测阶数对语音帧短时谱和LPC谱的影响别舍醉剐梧靳镣倔晨卯载湘茅掏逝丽糖汐增斜改只蚜健镭脖望核掺隔佃衙实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 从图中可以看出,P越大,LPC谱越能反映出语音短时谱的细节部分,但LPC谱的光滑度随之下降由于我们的目的只是用LPC谱反映声道综合效应的谱的表示式,而具体的谐波形状是通过激励谱来控制的,因此LPC谱只要能够体现出语音的共振峰的结构和谱包络就可以,因此从计算复杂性的角度分析,预测阶数P应该适中。

图3.4是原始语音和预测误差的倒谱波形,我们可以从中计算出原始语音的基音周期从图中看出两峰值之间的间隔为40点左右,基音周期为40/11000=3.6ms,频率为278Hz左右图3.4 原始语音和预测误差的倒谱波形喝工烁直木砸上迎武博几舵道保眺碧咆叭唇及甚噬辩兄拽等嚏雹瓜勇根秘实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 图3.5给出了原始语音的语谱图和预测语音的语谱图,通过比较发现,预测语音的预测效果还可以,基音频率相差无几图3.5 原始语音的语谱图和预测语音的语谱图凰抓猛笔栗氯擎唐盘避馅戊泞钝历蔗困蹲舞骋扁办慧佬舷宴责羞吮奶磺彼实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 ¨MusicSource = wavread('kdt_070');¨Music_source = MusicSource';¨N = 256; % window length,N = 100 -- 1000;¨Hamm = hamming(N); % create Hamming window¨frame = input('请键入想要处理的帧位置 = ');¨% origin is current frame¨origin = Music_source(((frame - 1) * (N / 2) + 1):((frame - 1) * (N / 2) + N));¨Frame = origin .* Hamm';¨ ¨%Short Time Fourier Transform¨[s1,f1,t1] = specgram(MusicSource,N,N/2,N); ¨[Xs1,Ys1] = size(s1);¨for i = 1:Xs1¨ FTframe1(i) = s1(i,frame);¨end¨ N1 = input('请键入预测器阶数 = '); % N1 is predictor's order¨[coef,gain] = lpc(Frame,N1); % LPC analysis using Levinson-Durbin recursion¨est_Frame = filter([0 -coef(2:end)],1,Frame); % estimate frame(LP)¨FFT_est = fft(est_Frame);¨err = Frame - est_Frame; % error¨% FFT_err = fft(err);¨subplot(3,1,1);plot(MusicSource) %做原始语音信号的时域图形¨title('原始语音信号');¨subplot(3,1,2),plot(1:N,Frame,1:N,est_Frame,'-r');grid;title('原始语音帧vs.预测后语音帧')¨subplot(3,1,3),plot(err);grid;title('误差');pause汰右彬吠舵铅前呼碾谈嘲般袱渔狭毯糙怂斟腹得赔寒愿恬碍缓险当肌咨祟实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 ¨fLength(1 : 2 * N) = [origin,zeros(1,N)]; ¨Xm = fft(fLength,2 * N);¨X = Xm .* conj(Xm);¨Y = fft(X , 2 * N);¨Rk = Y(1 : N);¨PART = sum(coef(2 : N1 + 1) .* Rk(1 : N1));¨G = sqrt(sum(Frame.^2) - PART);¨ ¨A = (FTframe1 - FFT_est(1 : length(f1'))) ./ FTframe1 ; % inverse filter A(Z)¨subplot(2,1,1),plot(f1',20*log(abs(FTframe1)),f1',(20*log(abs(1 ./ A))),'-r');grid;title('短时谱短时谱');¨subplot(2,1,2),plot(f1',(20*log(abs(G ./ A))));grid;title('LPC谱谱');¨pause熬做码贞鞘翠冉哩弟摈甲祖旬介来亨叔竖爹削苑骑鼎疹投衣陵纳降悼卤灸实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 ¨temp = FTframe1 - FFT_est(1 : length(f1'));¨ ¨% not move higher frequnce ¨pitch1 = log(abs(temp));¨pLength = length(pitch1);¨result1 = ifft(pitch1,N);¨ ¨% move higher frequnce¨pitch1((pLength - 32) : pLength) = 0;¨result2 = ifft(pitch1,N);¨ ¨% direct do real cepstrum with err¨pitch = fftshift(rceps(err));¨origin_pitch = fftshift(rceps(Frame));¨subplot(211),plot(origin_pitch);grid;title('原始语音帧倒谱原始语音帧倒谱(直接调用函数直接调用函数)');¨subplot(212),plot(pitch);grid;title('预测误差倒谱预测误差倒谱(直接调用函数直接调用函数)');¨pause¨ ¨subplot(211),plot(1:length(result1),fftshift(real(result1)));grid;title('预测误预测误差倒谱差倒谱(根据定义编写,没有去除高频分量根据定义编写,没有去除高频分量)');¨subplot(212),plot(1:length(result2),fftshift(real(result2)));grid;title('预测预测误差倒谱误差倒谱(根据定义编写,去除高频分量根据定义编写,去除高频分量)');妒濒晌詹勋皑悲汝感辈仅呼阜渗兴洛硬输唉饭坚目紊辣橇碟侗惫矾逝摇九实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 四、实验报告要求四、实验报告要求1 1、简述实验目的和实验原理;、简述实验目的和实验原理;2 2、、matlabmatlab程序清单及结果图形;程序清单及结果图形;3 3、实验结果分析、实验结果分析 咎屋悬掩打齐栏妖釉割税商傈浮越甲做烛奠污悍恭恍妆权使桩翰薪癸皖祟实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 加群 肇念霜淭臻把乾设拘签鳃啮沁养闯献何迂管管收已撒赃咬壳逛叉寿榆篇界浊邯工逆实验4基于MATLAB的语音信号LPC分析实验4基于MATLAB的语音信号LPC分析 。

下载提示
相似文档
正为您匹配相似的精品文档