LPC-10

来源:互联网 发布:linux授权命令 编辑:程序博客网 时间:2024/05/08 19:15

 

LPC-10阶预测编码

利用前n个(10阶则为10个)信号值,来预测当前信号值,将声道抽象成一个全极点的传递函数

P(z)=1/{(Ap*Power(Z,-p)+(A(p-1)*Power(Z,-(p-1))) + .... + A0*Power(Z,-1)}; 其中Ap为1;

系统输出为Y[n] = ApY[n-p] + Ap-1Y[n-(p-1)] + .... + A0Y[n] + GX[n];

而预测值容易求出 _Y[n] = ApY[n-p] + Ap-1Y[n-(p-1)] + .... + A0Y[n] ;

平方差值和  e = 两值相减,取平方,当e为最小值时,即最佳预测,对Ai(i=0~p)分别求偏导

就可以得到一个线性方程组,利用莱文森德宾递推,即可求出Ai(i=0~p)。

将得到的LPC线程预测系数转换成LSF,这一步没有很好的算法,因为LSF的解一定在单位圆

上,实际处理中(如G723算法)采取沿着单位圆搜索每个过零值。

LSF不会直接被打进rtp包,而是会被映射到一个被量化的码本。这里有一个VQ转换过程,实际

rtp传输的是LSF在码本中的索引,接收端根据索引,从码本里找出对应的码字,合成语音(这里

还涉及清浊音判断,如果是浊音还必需要搜索出基音周期,利它们去激励P(z),最终实现语音解码)。

 

为什么建立码本?

人类语言发声时,声道会固定为几种形状,如元音(a e i o u)各个辅音(b p 等),线性预测得出的LPC

参数有着相对固定的取值组合,利用索引可以进一步地增加有效传输率。

但是又不能将LPC系数直接进行量化,因为量化时必然引入误差,而LPC系数对误差较为敏感,于是

人们采用LSF进行量化(LSF系数对误差不敏感)。

 

VQ训练,以及量化