线性预测中的自相关系数.doc_第1页
线性预测中的自相关系数.doc_第2页
线性预测中的自相关系数.doc_第3页
线性预测中的自相关系数.doc_第4页
线性预测中的自相关系数.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

线性预测中的自相关系数1原理线性预测是语音编码中的基本算法,其基本原理如下:设语音信号的样值序列,第k时刻的取样值xk可以用之前的P个样值的线性组合来预测。实际样值与预测值之间的误差为:因此预测系统的传递函数为:其中H(Z)是一个全极点滤波器,称为综合滤波器。A(Z)是H(Z)的逆滤波器,称为分析滤波器。在语音线性预测编码中,A(Z)的系数反映了声道特性。为了使预测误差最小,采用最小均方误差准则,即使误差的均方值最小。在预测阶数P给定后,就是所有预测系数的函数,因此:可见,要使的预测误差最小,则必须与所有数据正交,称为正交性原理。将上式展开,可得:其中,即信号的自相关系数。对平稳信号(语音信号一般不是平稳信号,但对单独处理的每帧来说,可以近似认为是短时平稳信号)来说,因此,可以得到:解此线性方程组,即可得到各预测系数。一般采用Levison-Durbin算法递推求解。在已知输入信号的情况下,必须先求各阶自相关系数。2G.729中的线性预测ITU-T G.729语音编码标准采用CS-ACELP混合编码方法,输出码率为8kbps,每帧语音长度10ms,在8kHz采样条件下,具有80个样点。在线性预测时一般采用连续3帧进行加窗处理后进行,因此计算自相关系数的数组具有240个样点值。下面是G.729参考代码中的相关程序部分,并附加说明。void Autocorr( Word16 x, /* (i) : Input signal */ Word16 m, /* (i) : LPC order */ Word16 r_h, /* (o) : Autocorrelations (msb) */ Word16 r_l /* (o) : Autocorrelations (lsb) */) Word16 i, j, norm; Word16 yL_WINDOW; Word32 sum; extern Flag Overflow; /* Windowing of signal */ for(i=0; iL_WINDOW; i+) yi = mult_r(xi, hamwindowi); /* Compute r0 and test for overflow */ do Overflow = 0; sum = 1; /* Avoid case of all zeros */ for(i=0; iL_WINDOW; i+) sum = L_mac(sum, yi, yi); /* If overflow divide y by 4 */ if(Overflow != 0) for(i=0; iL_WINDOW; i+) yi = shr(yi, 2); while (Overflow != 0); /* Normalization of r0 */ norm = norm_l(sum); sum = L_shl(sum, norm); L_Extract(sum, &r_h0, &r_l0); /* Put in DPF format (see oper_32b) */ /* r1 to rm */ for (i = 1; i = m; i+) sum = 0; for(j=0; jL_WINDOW-i; j+) sum = L_mac(sum, yj, yj+i); sum = L_shl(sum, norm); L_Extract(sum, &r_hi, &r_li); return;/*_ | | | Function Name : mult_r | | | | Purpose : | | | | Same as mult with rounding, i.e.: | | mult_r(var1,var2) = shr(var1*var2) + 16384),15) and | | mult_r(-32768,-32768) = 32767. | | | | Complexity weight : 2 | | | | Inputs : | | | | var1 | | 16 bit short signed integer (Word16) whose value falls in the | | range : 0xffff 8000 = var1 = 0x0000 7fff. | | | | var2 | | 16 bit short signed integer (Word16) whose value falls in the | | range : 0xffff 8000 = var1 = 0x0000 7fff. | | | | Outputs : | | | | none | | | | Return Value : | | | | var_out | | 16 bit short signed integer (Word16) whose value falls in the | | range : 0xffff 8000 = var_out = 15; /* shift */ if (L_produit_arr & (Word32) 0x00010000L) /* sign extend when necessary */ L_produit_arr |= (Word32) 0xffff0000L; var_out = sature(L_produit_arr); return(var_out);/*_ | | | Function Name : norm_l | | | | Purpose : | | | | Produces the number of left shift needed to normalize the 32 bit varia- | | ble l_var1 for positive values on the interval with minimum of | | 1073741824 and maximum of 2147483647, and for negative values on the in-| | terval with minimum of -2147483648 and maximum of -1073741824; in order | | to normalize the result, the following operation must be done : | | norm_L_var1 = L_shl(L_var1,norm_l(L_var1). | | | | Complexity weight : 30 | | | | Inputs : | | | | L_var1 | | 32 bit long signed integer (Word32) whose value falls in the | | range : 0x8000 0000 = var1 = 0x7fff ffff. | | | | Outputs : | | | | none | | | | Return Value : | | | | var_out | | 16 bit short signed integer (Word16) whose value falls in the | | range : 0x0000 0000 = var_out = 0x0000 001f. | |_|*/Word16 norm_l(Word32 L_var1) Word16 var_out; if (L_var1 = 0) var_out = 0; else if (L_var1 = (Word32)0xffffffffL) var_out = 31; else if (L_var1 0) L_var1 = L_var1; for(var_out = 0;L_var1 (Word32)0x40000000L;var_out+) L_var1 = 1; return(var_out); /*_ | | | Function Name : L_mac | | | | Purpose : | | | | Multiply var1 by var2 and shift the result left by 1. Add the 32 bit | | result to L_var3 with saturation, return a 32 bit result: | | L_mac(L_var3,var1,var2) = L_add(L_var3,(L_mult(var1,var2). | | | | Complexity weight : 1 | | | | Inputs : | | | | L_var3 32 bit long signed integer (Word32) whose value falls in the | | range : 0x8000 0000 = L_var3 = 0x7fff ffff. | | | | var1 | | 16 bit short signed integer (Word16) whose value falls in the | | range : 0xffff 8000 = var1 = 0x0000 7fff. | | | | var2 | | 16 bit short signed integer (Word16) whose value falls in the | | range : 0xffff 8000 = var1 = 0x0000 7fff. | | | | Outputs : | | | | none | | | | Return Value : | | | | L_var_out | | 32 bit long signed integer (Word32) whose value falls in the | | range : 0x8000 0000 = L_var_out = 0x7fff ffff. | |_|*/Word32 L_mac(Word32 L_var3, Word16 var1, Word16 var2) Word32 L_var_out; Word32 L_produit; L_produit = L_mult(var1,var2); L_var_out = L_add(L_var3,L_produit); return(L_var_out); /* Hamming_cos window for LPC analysis. */* Create with function ham_cos(window,200,40) */Word16 hamwindowL_WINDOW = 2621, 2623, 2629, 2638, 2651, 2668, 2689, 2713, 2741, 2772, 2808, 2847, 2890, 2936, 2986, 3040, 3097, 3158, 3223, 3291, 3363, 3438, 3517, 3599, 3685, 3774, 3867, 3963, 4063, 4166, 4272, 4382, 4495, 4611, 4731, 4853, 4979, 5108, 5240, 5376, 5514, 5655, 5800, 5947, 6097, 6250, 6406, 6565, 6726, 6890, 7057, 7227, 7399, 7573, 7750, 7930, 8112, 8296, 8483, 8672, 8863, 9057, 9252, 9450, 9650, 9852, 10055, 10261, 10468, 10677, 10888, 11101, 11315, 11531, 11748, 11967, 12187, 12409, 12632, 12856, 13082, 13308, 13536, 13764, 13994, 14225, 14456, 14688, 14921, 15155, 15389, 15624, 15859, 16095, 16331, 16568, 16805, 17042, 17279, 17516, 17754, 17991, 18228, 18465, 18702, 18939, 19175, 19411, 19647, 19882, 20117, 20350, 20584, 20816, 21048, 21279, 21509, 21738, 21967, 22194, 22420, 22644, 22868, 23090, 23311, 23531, 23749, 23965, 24181, 24394, 24606, 24816, 25024, 25231, 25435, 25638, 25839, 26037, 26234, 26428, 26621, 26811, 26999, 27184, 27368, 27548, 27727, 27903, 28076, 28247, 28415, 28581, 28743, 28903, 29061, 29215, 29367, 29515, 29661, 29804, 29944, 30081, 30214, 30345, 30472, 30597, 30718, 30836, 30950, 31062, 31170,

温馨提示

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

评论

0/150

提交评论