1、华南理工大学语音信号处理实验报告实验名称:LPC特征提取姓名:学号:班级:10级电信5班日期:2013年5月24日1. 实验目的1、 熟练运用MATLAB软件进行语音信号实验;2、 熟悉短时分析原理、LPC的原理;3、 学习运用MATLAB编程进行LPC的提取;4、 学会利用短时分析原理提取LPC特征序列。2. 实验原理1、LPC分析基本原理LPC分析为线性时不变因果稳定系统V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号s(n)进行模型参数估计。如果利用P个取样值来进行预测,则称为P阶线性预测。假设用过去P个取样值的加权之和来预测信号当前取样值,则预测信号为: (1)其中加权
2、系数用表示,称为预测系数,则预测误差为: (2)要使预测最佳,则要使短时平均预测误差最小有: (3) (4)令 (5) 最小的可表示成: (6)显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。通过LPC分析,由若干帧语音可以得到若干组LPC参数,每组参数形成一个描绘该帧语音特征的矢量,即LPC特征矢量。由LPC特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等。不同的特征矢量具有不同的特点,它们在语音编码和识别领域有着不同的应用价值。2 、自相关法在最佳线性预测中,若用下式定义的时间平均最小均方准
3、则代替(3)式的集合平均最小均方准则,即令 (7) 事实上就是短时自相关函数,因而 (8) (9)根据平稳随机信号的自相关性质,可得 (10) 由(6)式,可得: (11) 综上所述,可以得到如下矩阵形式: (12)值得注意的是,自相关法在计算预测误差时,数据段的两端都需要加P个零取样值,因而可造成谱估计失真。特别是在短数据段的情况下,这一现实更为严重。另外,当预测系数量化时,有可能造成实际系统的不稳定。自相关解法主要有杜宾算法、格型算法和舒尔算法等几种高效递推算法。3、 协方差法如果在最佳线性预测中,用下式定义的时间平均最小均方准则代替(3)式的集合平均最小均方准则,则可得到类似的方程: (
4、13) 可以看出,这里的数据段两端不需要添加零取样值。在理论上,协方差法计算出来的预测系数有可能造成预测误差滤波器的不稳定,但在实际上当每帧信号取样足够多时,其计算结果将与自相关法的结果很接近,因而稳定性一般是能够保证的 (当然这种方法也有量化效应可能引起不稳定的缺点)。协方差解法的最大优点在于不存在自相关法中两端出现很大预测误差的情况,在N和P相差不大时,其参数估值比自相关法要精确的多。但是在语音信号处理时,往往取N在200左右。此时,自相关法具有较大误差的段落在整个语音段中所占的比例很小,参数估值也是比较准确的。在这种情况下,协方差法误差较小的优点就不再突出,其缺乏高效递推算法的缺点成为了
5、制约因素。所以,在语音信号处理中往往使用高效的自相关法。5、 LPC由于频率响应反映声道的频率响应和被分析信号的谱包络,因此用做反傅里叶变换求出的LPC倒谱系数。通过线性预测分析得到的合成滤波器的系统函数为,其冲激响应为h(n)。h(n)的倒谱为,就是说的逆变换是存在的。设,将式两边同时对求导,得得到,于是有令其左右两边z的各次幂前系数分别相等,得到和间的递推关系 ,按其可直接从预测系数求得倒谱。这个倒谱是根据线性预测模型得到的,又称为LPC倒谱。LPC倒谱由于利用线性预测中声道系统函数H(z)的最小相位特性,因此避免了一般同态处理中求复对数的麻烦。3. 实验数据及平台本实验所采用的数据是语音
6、文件phrase.WAV和monologue speech_female,平台是MATLAB。4. 实验过程(步骤)(1)、实验步骤1、输入原始语音2、对样本语音进行加窗处理3、计算LPC系数4、建立语音正则方程5、输出原始样本语音、预测语音波形和预测误差6、输出LPC谱7、求出预测误差的倒谱8、输出原始语音和预测语音的语谱图(2)实验流程输出图像建立语音正则方程计算LPC系数加窗处理输入原始语音图1 LPC系数实验流程图5. 实验结果及讨论我们使用的原始语音为“monologue speech_female”,运行程序,得到原始语音语谱图和原始语音波形:图2 原始语音语谱图和原始语音波形 在
7、这里我们选取线性预测阶数为15,下图是实验的结果,图3上半部分中蓝色的线是原始语音帧波形,红色的线是预测语音帧的波形;下半部分为预测误差;图4为原始语音帧和预测语音帧的短时谱和LPC谱的波形:图3图4 短时谱和LPC谱图5 原始语音和预测误差的倒谱波形图6 原始语音语谱图和预测语音语谱图LPC系数:ai = Columns 1 through 8 1.0000 -0.5313 -0.1624 -0.2005 -0.0726 0.1481 0.0192 -0.1592 Columns 9 through 16 -0.1248 0.1857 0.0636 0.0848 -0.1475 -0.056
8、2 0.0129 -0.0196通过计算LPC系数可以很好的利用先行预测中声道系统函数的最小相位特性来提取特征函数6. 实验总结这次实验利用MATLAB对信号进行分析和处理,主要就是进行语音线性预测,语音线性预测的基本思想是:一个语音信号的抽样值可以用过去若干个取样值的线性组合来逼近。通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。通过这个实验,我对语音线性预测进行了探究和验证,巩固了课内所学的知识。7. 实验代码I = wavread(E:yuuyinmonologue speech_female.wav);%读入原始语音%subplot(3,1,1)
9、,plot(I);title(原始语音波形)%对指定帧位置进行加窗处理Q = I;N = 256; % 窗长Hamm = hamming(N); % 加窗frame = 60;%需要处理的帧位置M = Q(frame - 1) * (N / 2) + 1):(frame - 1) * (N / 2) + N);Frame = M .* Hamm;%加窗后的语音帧 B,F,T = specgram(I,N,N/2,N); m,n = size(B);for i = 1:m FTframe1(i) = B(i,frame);end P =input(请输入预测器阶数 = ); ai = lpc(F
10、rame,P); % 计算lpc系数LP = filter(0 -ai(2:end),1,Frame); % 建立语音帧的正则方程FFTlp = fft(LP);E = Frame - LP; % 预测误差subplot(2,1,1),plot(1:N,Frame,1:N,LP,-r);grid;title(原始语音和预测语音波形)subplot(2,1,2),plot(E);grid;title(预测误差);pause fLength(1 : 2 * N) = M,zeros(1,N); Xm = fft(fLength,2 * N);X = Xm .* conj(Xm);Y = fft(X
11、 , 2 * N);Rk = Y(1 : N);PART = sum(ai(2 : P + 1) .* Rk(1 : P);G = sqrt(sum(Frame.2) - PART); A = (FTframe1 - FFTlp(1 : length(F) ./ FTframe1 ; subplot(2,1,1),plot(F,20*log(abs(FTframe1),F,(20*log(abs(1 ./ A),-r);grid;xlabel(频率/dB);ylabel(幅度);title(短时谱);subplot(2,1,2),plot(F,(20*log(abs(G ./ A);grid;
12、xlabel(频率/dB);ylabel(幅度);title(LPC谱);pause %求出预测误差的倒谱pitch = fftshift(rceps(E);M_pitch = fftshift(rceps(Frame);subplot(2,1,1),plot(M_pitch);grid;xlabel(语音帧);ylabel(/dB);title(原始语音帧倒谱);subplot(2,1,2),plot(pitch);grid;xlabel(语音帧);ylabel(/dB);title(预测误差倒谱);pause %画出语谱图ai1 = lpc(I,P); % 计算原始语音lpc系数LP1 = filter(0 -ai(2:end),1,I); % 建立原始语音的正则方程subplot(2,1,1); specgram(I,N,N/2,N); title(原始语音语谱图);subplot(2,1,2);specgram(LP1,N,N/2,N); title(预测语音语谱图);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2