本文最后更新于:2022年7月21日 下午
语音信号处理#3 线性预测分析(LPC)
LPC指Linear Predictive Coding,重要的是LP,线性预测。主要思想是由于语音样点之间存在相关性,所以可以用过去的样点值来预测现在的样点值,用数学公式表示就是:
x^(n)=k=1∑pwkx(n−k)
用过去p个点的加权和表示预测点x^(n)。
现在问题是求这个权重wk,因为比较熟悉机器学习,所以直接用那边的思想来解释:欲求参数的值,我们就定义一个损失函数,让损失函数达到最小时的参数值就是要求的值。所以我们定义MSE(mean square error),然后令导数等于0来求极值点。
\displaylines{
\epsilon(n)=x(n)-\hat{x}(n)\\\\
\boldsymbol{J}=MSE=\epsilon^2(n)\\\\
\frac{\partial \boldsymbol{J}}{\partial w_k}=0
}
嗯,就这么简单…………吗?下面公式推导看个乐子,不严谨。
展开公式如下:
定义Rn(j)=∑n=jN−1x(n)x(n−j),(5)中忽略了-2
J∂wk∂JR(k)=x2(n)−2x(n)x^(n)+x^2(n)=x2(n)−2x(n)k=1∑pwkx(n−k)+k=1∑pj=1∑pwkwjx(n−k)x(n−j)=−2x(n)x(n−k)+j=1∑pwjx(n−j)x(n−k)(k=1,2,…,p)=−2R(k)+j=1∑pwjR(∣j−k∣)=0(k=1,2,…,p)=j=1∑pwjR(∣j−k∣)(k=1,2,…,p)(1)(2)(3)(4)(5)
(5)写成矩阵(Yule-Walker方程,左边那个是Toeplitz矩阵,使用Levinson-Durbin算法可求解):
R(0)R(1)⋮R(p−1)R(1)R(0)⋮R(p−2)⋯⋯⋮⋯R(p−1)R(p−2)⋮R(0)w1w2⋮wp=R(1)R(2)⋮R(p)