lpc10是语音信号分析的一个基础算法, g723 g729等都是在其基础构造的,区别是对激励源的编码不同
而莱文森-德宾是lpc10算法中求预测系数的重要一环,本文就对其的递推公式进行证明
首先从lpc系数的求解开始说吧
我们假定 s[n]是输入的语音信号
s`[n]是10阶预测信号
s`[n] = a10 * s[n - 10] + a9 * s[n - 9] + ... + a1 * s[n - 1]
我们取s`[n] 与 s[n] 方差最小值
(s[n] - s`[n])^2 ^2表示平方
然后对每个 a[i]求偏导,自然就得到了一个10元一次方程组,表示
10
Σa[i] * R(|k-i|) = R(k) k = 1,2,...,10 R(k)表示输入信号的自相关 --- 方程组1
i=1
即莱文森-德宾递推公式就是一种适合于计算机实现的解这个10一次方程组的算法
下面提到内积和正交的概念
A(z) B(z)分别表示前向预测与后向预测的逆滤波器的系统函数
则它们关于输入s[n]的内积这么定义
10 11
Σ Σ a[i]*b[k] R(|i-k|) R(n)同样表示输入信号s[n]的自相关函数
i=1 k=1
记作 <A(z),B(z)>
如果内积为零,则被称之为正交
这里可以立即得出这么一个结论
<A(z), z^(-l)>一定为零,这个参见方程组1
也就是说A(z)与z^(-l) l=1,2,...10正交时,A(z)是该阶次下最优估计的逆滤波器
开始递推,首先从零开始,零阶时,啥都没有
最优的逆滤波器自然就是
A0(z)=1
B0(z)=z^-1
构造出递推公式
A[i](z) = A[i-1](z) + ki * B[i - 1](z)
B[i](z) = z^-1{ B[i - 1](z) + ki * A[i-1](z) } ----- 等式2
其中 ki = -{ <A[i-1](z),B[i - 1](z)> } / { B[i - 1](z), B[i - 1](z) } ---- 等式1
现在只需要证 A[i](z) 与 z^-i正交即可 (当然B[i](z)也要与z^-i,两个证明的过程差不多)
将A[i](z) = A[i-1](z) + ki * B[i - 1](z)代入 <A[i](z), z^-i>
我们立该得到
<A[i-i](z), z^-i> + ki<B[i - 1](z), z^-i> = 0;
求出满足这个条件的ki就是了
<A[i-i](z), z^-i> 实际上与 <A[i-i](z), B[i-1](z)>是相等的,为什么呢?
因为A[i-1](z)是最优估计,那它一定与 z^-l (l=1,2,...,i-i)正交,而 B[i-i](z)的最高阶系数是1...
同理<B[i - 1](z), z^-i> 与<B[i-i](z), B[i-1](z)>也是相等的...
自然ki就是等式1的那种形式,
莱文森-德宾递推公式至此证明完毕
ki递推公式化简
i-1
分母可以化简为 R[i] + Σ a(m-1)[n] * R(|l-i|) 这个可以用<A[i-i](z), z^-i> 直接推导出
l=1
分子可以化简为 (1-k(l)^2)*(1-k(l-1)^2) ... (1-k(1)^2)*R(0)
这是由于 <z^-1 * F(z), z^-1 * G(z)> = <F(z), G(z)> = <F(1/z), G(1/z)> 由内积的定理可以直接证出
用 <B[i](z), B[i](z)> 等式2进行代换,再进行相应的合并同类项处理,就可以得到化简后的分子
笔者证了好几遍,但是每次证完,每次又都忘了。。。
妈了个逼的,好记性不如烂笔头啊。