目前在做16位芯片上的g729解码算法。我一个连语音编解码算法最基础的课程都没有学过的计算机白痴,在项目组长CL的帮助下,对g729,有了一个大概的了解。
g729将80bits参数重构成一帧语音,最重要的一个公式是:
1> u(n)是子帧的激励信号。每个子帧算一次。
2> ai是每隔10ms计算一次。lsf -> lsp -> ai,就是每一帧算一次,就是线性预测系数。滤波器系数。
3> gp、gc对应gain_pitch、gain_code。 自适应码书增益、固定码书增益。v(n)、c(n)是自适应码书、固定码书。
增益是什么?
就是给你数2.5、1.5、1如何变成5、3、2呢?
每个数乘以2,这个2就是增益。
我们再来看80bits的参数吧。这一帧的参数分为两个子帧,分别为40bits。
下面是对于第一个子帧subframe1的分析:
parm0(8bits实际有用的是7bits)、parm1(5bits+5bits) —> 用于计算滤波器系数ai
parm2(8bits) —> 用于计算自适应周期v(n) 就是延时
parm4(13bits) —> 用于计算固定码书,就是在那个位置上有一个白噪声脉冲。
parm5(4bits) —> 符号(+或-)就是这个脉冲是在时间轴的上面还是下面。
oarm6(3bits+4bits) —> 二维的,计算出增益gp、gc。
滤波器是A(z)。1/A(z)