概念:一个语音的抽样能够用过去若干个语音抽样(模板)的线性组合来逼近。通过使实际语音抽样和线性预测抽样之间差值的平方和达到最小,能够决定唯一的一组预测系数。用于语音分析与合成,可估计许多语音基本参数:基音、共振峰、频谱、声道截面积等。
语音信号是由一个激励信号e(k)经过一个时变的全极点滤波器产生的。生成语音信号s(k)表示为:
s
(
n
)
=
∑
i
=
1
p
a
i
s
(
n
?
i
)
+
e
(
n
)
s(n)=\sum_{i=1}^pa_is(n-i)+e(n)
s(n)=i=1∑p?ai?s(n?i)+e(n) 其中,激励信号e(n)要么是浊音语音的脉冲序列,要么是无声声音的随机噪声。P是滤波器的阶数,
a
i
a_i
ai?是滤波器的系数。LPC就是在已知s(n)的情况下获取
a
i
a_i
ai?。
s
~
(
n
)
=
∑
i
=
1
p
a
i
s
(
n
?
i
)
\widetilde{s}(n)=\sum_{i=1}^pa_is(n-i)
s
(n)=i=1∑p?ai?s(n?i)
e
(
n
)
=
s
(
n
)
?
s
~
(
n
)
=
s
(
n
)
?
∑
i
=
1
p
a
i
s
(
n
?
i
)
e(n)=s(n)-\widetilde{s}(n)=s(n)-\sum_{i=1}^pa_is(n-i)
e(n)=s(n)?s
(n)=s(n)?i=1∑p?ai?s(n?i)
求取
a
i
a_i
ai?最常用的一个方法就是最小化真实信号与预测信号之间的均方误差(MSE):
E
=
∑
n
e
2
(
n
)
=
∑
n
[
s
(
n
)
?
s
~
(
n
)
]
2
=
∑
n
[
s
(
n
)
?
∑
i
=
1
p
a
i
s
(
n
?
i
)
]
2
E=\sum_ne^2(n)=\sum_n[s(n)-\widetilde{s}(n)]^2=\sum_n[s(n)-\sum_{i=1}^pa_is(n-i)]^2
E=n∑?e2(n)=n∑?[s(n)?s
(n)]2=n∑?[s(n)?i=1∑p?ai?s(n?i)]2 求
a
i
a_i
ai?为多少的情况下,E可取最小值,对
a
i
a_i
ai?求偏导:
?
E
?
a
j
=
0
,
j
=
1
,
2
,
.
.
.
,
p
\frac{\partial E}{\partial a_j}=0,\quad j=1,2,...,p
?aj??E?=0,j=1,2,...,p 可得出:
∑
n
s
(
n
)
s
(
n
?
j
)
=
∑
i
=
1
p
a
i
∑
n
s
(
n
?
i
)
s
(
n
?
j
)
\sum_ns(n)s(n-j)=\sum_{i=1}^pa_i\sum_n s(n-i)s(n-j)
n∑?s(n)s(n?j)=i=1∑p?ai?n∑?s(n?i)s(n?j) 根据自相关函数定义Φ:
?
n
(
i
,
j
)
=
∑
m
s
(
n
?
i
)
s
(
n
?
j
)
\phi_n(i,j)=\sum_ms(n-i)s(n-j)
?n?(i,j)=m∑?s(n?i)s(n?j) 所以式子可写成:
?
(
0
,
j
)
=
∑
i
=
1
p
a
i
?
(
i
,
j
)
j
=
1
,
2
,
.
.
.
,
p
\phi(0,j)=\sum_{i=1}^pa_i\phi(i,j)\quad\quad j=1,2,...,p
?(0,j)=i=1∑p?ai??(i,j)j=1,2,...,p 该式表示p个方程构成的方程组,未知数为p个。求解该方程组,就可以得到系统的线性预测系数。
系统的最小均方误差就可以表示为:(sjb,求大佬教这步是怎么推出来的)
E
=
∑
n
[
s
(
n
)
]
2
?
∑
i
=
1
p
a
i
∑
n
s
(
n
)
s
(
n
?
i
)
=
?
n
(
0
,
0
)
?
∑
i
=
1
p
a
i
?
n
(
0
,
i
)
E=\sum_n[s(n)]^2-\sum_{i=1}^pa_i\sum_n s(n)s(n-i)=\phi_n(0,0)-\sum_{i=1}^pa_i\phi_n(0,i)
E=n∑?[s(n)]2?i=1∑p?ai?n∑?s(n)s(n?i)=?n?(0,0)?i=1∑p?ai??n?(0,i)
线性预测之Levinson-Durbin算法
求解这个方程组则用durbin算法进行求解。
拓普利兹矩阵
把Φ变成拓普利兹矩阵R,即第(i,j)个元素为R[i-j]:
∑
i
=
1
p
a
i
R
[
∣
i
?
j
∣
]
=
R
[
j
]
,
1
≤
j
≤
p
\sum_{i=1}^pa_iR[|i-j|]=R[j],\quad 1\leq j\leq p
i=1∑p?ai?R[∣i?j∣]=R[j],1≤j≤p 方程的矩阵形式为:
R
a
=
r
Ra=r
Ra=r a和r分别是元素为
a
i
a_i
ai?和r[i]=R[i]的列向量。
上式中方程组可做如下变换:
R
[
j
]
?
∑
i
=
1
p
a
i
R
[
∣
i
?
j
∣
]
=
0
,
j
=
1
,
2
,
.
.
.
,
p
R[j]-\sum_{i=1}^p a_i R[|i-j|]=0,j=1,2,...,p
R[j]?i=1∑p?ai?R[∣i?j∣]=0,j=1,2,...,p
写成矩阵形式为:
[
R
[
1
]
R
[
0
]
R
[
1
]
?
R
[
p
?
1
]
R
[
2
]
R
[
1
]
R
[
0
]
?
R
[
p
?
2
]
?
?
?
?
?
R
[
p
]
R
[
p
?
1
]
R
[
p
?
2
]
?
R
[
0
]
]
[
1
?
α
1
(
p
)
?
α
2
(
p
)
?
?
α
p
(
p
)
]
=
[
0
0
?
0
]
\begin{bmatrix} R[1] & R[0] & R[1] & \cdots & R[p-1]\\ R[2] & R[1] & R[0] & \cdots & R[p-2]\\ \vdots & \vdots & \vdots & \cdots & \vdots\\ R[p] & R[p-1] & R[p-2] &\cdots & R[0] \end{bmatrix} \begin{bmatrix} 1\\ -\alpha_1^{(p)}\\ -\alpha_2^{(p)}\\ \vdots\\ -\alpha_p^{(p)}\\ \end{bmatrix}= \begin{bmatrix} 0\\ 0\\ \vdots\\ 0 \end{bmatrix}
??????R[1]R[2]?R[p]?R[0]R[1]?R[p?1]?R[1]R[0]?R[p?2]??????R[p?1]R[p?2]?R[0]????????????????1?α1(p)??α2(p)???αp(p)???????????=??????00?0???????
而根据最小均方误差公式,对于一个p阶最佳预测器,其最小均方预测误差为:
R
[
0
]
?
∑
i
=
1
p
a
i
R
[
i
]
=
ε
(
p
)
R[0]-\sum_{i=1}^pa_iR[i]=\varepsilon^{(p)}
R[0]?i=1∑p?ai?R[i]=ε(p)
写成矩阵的形式为:
[
R
[
0
]
R
[
1
]
R
[
2
]
?
R
[
p
]
]
[
1
?
α
1
(
p
)
?
α
2
(
p
)
?
?
α
p
(
p
)
]
=
[
ε
(
p
)
]
\begin{bmatrix} R[0] & R[1] & R[2] & \cdots & R[p]\\ \end{bmatrix} \begin{bmatrix} 1\\ -\alpha_1^{(p)}\\ -\alpha_2^{(p)}\\ \vdots\\ -\alpha_p^{(p)}\\ \end{bmatrix}= \begin{bmatrix} \varepsilon^{(p)}\\ \end{bmatrix}
[R[0]?R[1]?R[2]???R[p]?]?????????1?α1(p)??α2(p)???αp(p)???????????=[ε(p)?]
再把上面两个矩阵合在一起,写成一个p+1个方程方程组满足p各未知预测器系数和对应的未知均方预测误差
ε
p
ε^p
εp,新的矩阵方程为
[
R
[
0
]
R
[
1
]
R
[
2
]
?
R
[
p
]
R
[
1
]
R
[
0
]
R
[
1
]
?
R
[
p
?
1
]
R
[
2
]
R
[
1
]
R
[
0
]
?
R
[
p
?
2
]
?
?
?
?
?
R
[
p
]
R
[
p
?
1
]
R
[
p
?
2
]
?
R
[
0
]
]
[
1
?
α
1
(
p
)
?
α
2
(
p
)
?
?
α
p
(
p
)
]
=
[
ε
(
p
)
0
0
?
0
]
\begin{bmatrix} R[0] & R[1] & R[2] & \cdots & R[p] \\ R[1] & R[0] & R[1] & \cdots & R[p-1]\\ R[2] & R[1] & R[0] & \cdots & R[p-2]\\ \vdots & \vdots & \vdots & \cdots & \vdots\\ R[p] & R[p-1] & R[p-2] &\cdots & R[0] \end{bmatrix} \begin{bmatrix} 1\\ -\alpha_1^{(p)}\\ -\alpha_2^{(p)}\\ \vdots\\ -\alpha_p^{(p)}\\ \end{bmatrix}= \begin{bmatrix} \varepsilon^{(p)}\\ 0\\ 0\\ \vdots\\ 0 \end{bmatrix}
????????R[0]R[1]R[2]?R[p]?R[1]R[0]R[1]?R[p?1]?R[2]R[1]R[0]?R[p?2]???????R[p]R[p?1]R[p?2]?R[0]??????????????????1?α1(p)??α2(p)???αp(p)???????????=????????ε(p)00?0?????????
上式中构造出的(p+1)x(p+1)阶矩阵也是拓普利兹矩阵。该方程组用Levinson-Durbin算法递归求解。该算法通过在每次迭代中顺序地结合一个新的相关值来实现,并且根据新的相关值和已获得的预测器就能解出下一个高一阶的预测器。
对于任意阶数i,上式中的方程组都可以以矩阵形式表示:
R
i
α
i
=
e
i
R^i\alpha^i=e^i
Riαi=ei 我们希望第i阶的解是如何由第i-1阶的解导出的。换而言之是给定
α
(
i
?
1
)
α^{(i-1)}
α(i?1),即
R
(
i
?
1
)
α
(
i
?
1
)
=
e
(
i
?
1
)
R^{(i-1)}α^{(i-1)}=e^{(i-1)}
R(i?1)α(i?1)=e(i?1)的解,求出
R
(
i
)
α
(
i
)
=
e
(
i
)
R^{(i)}α^{(i)}=e^{(i)}
R(i)α(i)=e(i)的解。
durbin算法
步骤:
1、先将矩阵方程
R
(
i
?
1
)
α
(
i
?
1
)
=
e
(
i
?
1
)
R^{(i-1)}α^{(i-1)}=e^{(i-1)}
R(i?1)α(i?1)=e(i?1)的扩展形式写为:
[
R
[
0
]
R
[
1
]
R
[
2
]
?
R
[
i
?
1
]
R
[
1
]
R
[
0
]
R
[
1
]
?
R
[
i
?
2
]
R
[
2
]
R
[
1
]
R
[
0
]
?
R
[
i
?
3
]
?
?
?
?
?
R
[
i
?
1
]
R
[
i
?
2
]
R
[
i
?
3
]
?
R
[
0
]
]
[
1
?
α
1
(
i
?
1
)
?
α
2
(
i
?
1
)
?
?
α
i
?
1
(
i
?
1
)
]
=
[
ε
(
i
?
1
)
0
0
?
0
]
\begin{bmatrix} R[0] & R[1] & R[2] & \cdots & R[i-1] \\ R[1] & R[0] & R[1] & \cdots & R[i-2]\\ R[2] & R[1] & R[0] & \cdots & R[i-3]\\ \vdots & \vdots & \vdots & \cdots & \vdots\\ R[i-1] & R[i-2] & R[i-3] &\cdots & R[0] \end{bmatrix} \begin{bmatrix} 1\\ -\alpha_1^{(i-1)}\\ -\alpha_2^{(i-1)}\\ \vdots\\ -\alpha_{i-1}^{(i-1)}\\ \end{bmatrix}= \begin{bmatrix} \varepsilon^{(i-1)}\\ 0\\ 0\\ \vdots\\ 0\\ \end{bmatrix}
????????R[0]R[1]R[2]?R[i?1]?R[1]R[0]R[1]?R[i?2]?R[2]R[1]R[0]?R[i?3]???????R[i?1]R[i?2]R[i?3]?R[0]??????????????????1?α1(i?1)??α2(i?1)???αi?1(i?1)???????????=????????ε(i?1)00?0????????? 2、将数0附加到向量
a
(
i
?
1
)
a^{(i-1)}
a(i?1)中,并与矩阵
R
(
i
)
R^{(i)}
R(i)相乘,这时得到新的一组i+1个方程:
[
R
[
0
]
R
[
1
]
R
[
2
]
?
R
[
i
]
R
[
1
]
R
[
0
]
R
[
1
]
?
R
[
i
?
1
]
R
[
2
]
R
[
1
]
R
[
0
]
?
R
[
i
?
2
]
?
?
?
?
?
R
[
i
?
1
]
R
[
i
?
2
]
R
[
i
?
3
]
?
R
[
1
]
R
[
i
]
R
[
i
?
1
]
R
[
i
?
2
]
?
R
[
0
]
]
[
1
?
α
1
(
i
?
1
)
?
α
2
(
i
?
1
)
?
?
α
i
?
1
(
i
?
1
)
0
]
=
[
ε
(
i
?
1
)
0
0
?
0
γ
(
i
?
1
)
]
\begin{bmatrix} R[0] & R[1] & R[2] & \cdots & R[i] \\ R[1] & R[0] & R[1] & \cdots & R[i-1]\\ R[2] & R[1] & R[0] & \cdots & R[i-2]\\ \vdots & \vdots & \vdots & \cdots & \vdots\\ R[i-1] & R[i-2] & R[i-3] &\cdots & R[1]\\ R[i] & R[i-1] & R[i-2] &\cdots & R[0] \end{bmatrix} \begin{bmatrix} 1\\ -\alpha_1^{(i-1)}\\ -\alpha_2^{(i-1)}\\ \vdots\\ -\alpha_{i-1}^{(i-1)}\\ 0 \end{bmatrix}= \begin{bmatrix} \varepsilon^{(i-1)}\\ 0\\ 0\\ \vdots\\ 0\\ \gamma^{(i-1)} \end{bmatrix}
??????????R[0]R[1]R[2]?R[i?1]R[i]?R[1]R[0]R[1]?R[i?2]R[i?1]?R[2]R[1]R[0]?R[i?3]R[i?2]????????R[i]R[i?1]R[i?2]?R[1]R[0]??????????????????????1?α1(i?1)??α2(i?1)???αi?1(i?1)?0????????????=??????????ε(i?1)00?0γ(i?1)??????????? 上式成立的条件是:
γ
(
i
?
1
)
=
R
[
i
]
?
∑
j
=
1
i
?
1
α
j
(
i
?
1
)
R
[
i
?
j
]
\gamma^{(i-1)}=R[i]-\sum_{j=1}^{i-1}\alpha_j^{(i-1)}R[i-j]
γ(i?1)=R[i]?j=1∑i?1?αj(i?1)?R[i?j] 3、根据拓普利兹矩阵
R
(
i
)
R^{(i)}
R(i)的对称性,方程组可以以相反顺序写出(第一个方程写在最后面,最后一个方程写在最前面,以此类推),可得:
[
R
[
0
]
R
[
1
]
R
[
2
]
?
R
[
i
]
R
[
1
]
R
[
0
]
R
[
1
]
?
R
[
i
?
1
]
R
[
2
]
R
[
1
]
R
[
0
]
?
R
[
i
?
2
]
?
?
?
?
?
R
[
i
?
1
]
R
[
i
?
2
]
R
[
i
?
3
]
?
R
[
1
]
R
[
i
]
R
[
i
?
1
]
R
[
i
?
2
]
?
R
[
0
]
]
[
0
?
α
i
?
1
(
i
?
1
)
?
α
i
?
2
(
i
?
1
)
?
?
α
1
(
i
?
1
)
1
]
=
[
γ
(
i
?
1
)
0
0
?
0
ε
(
i
?
1
)
]
\begin{bmatrix} R[0] & R[1] & R[2] & \cdots & R[i] \\ R[1] & R[0] & R[1] & \cdots & R[i-1]\\ R[2] & R[1] & R[0] & \cdots & R[i-2]\\ \vdots & \vdots & \vdots & \cdots & \vdots\\ R[i-1] & R[i-2] & R[i-3] &\cdots & R[1]\\ R[i] & R[i-1] & R[i-2] &\cdots & R[0] \end{bmatrix} \begin{bmatrix} 0\\ -\alpha_{i-1}^{(i-1)}\\ -\alpha_{i-2}^{(i-1)}\\ \vdots\\ -\alpha_{1}^{(i-1)}\\ 1\\ \end{bmatrix}= \begin{bmatrix} \gamma^{(i-1)}\\ 0\\ 0\\ \vdots\\ 0\\ \varepsilon^{(i-1)}\\ \end{bmatrix}
??????????R[0]R[1]R[2]?R[i?1]R[i]?R[1]R[0]R[1]?R[i?2]R[i?1]?R[2]R[1]R[0]?R[i?3]R[i?2]????????R[i]R[i?1]R[i?2]?R[1]R[0]??????????????????????0?αi?1(i?1)??αi?2(i?1)???α1(i?1)?1????????????=??????????γ(i?1)00?0ε(i?1)??????????? 4、将2和3两步中的公式合并可得
R
i
?
[
[
1
?
α
1
(
i
?
1
)
?
α
2
(
i
?
1
)
?
?
α
i
?
1
(
i
?
1
)
0
]
?
k
i
[
0
?
α
i
?
1
(
i
?
1
)
?
α
i
?
2
(
i
?
1
)
?
?
α
1
(
i
?
1
)
1
]
]
=
[
[
ε
(
i
?
1
)
0
0
?
0
γ
(
i
?
1
)
]
?
k
i
[
γ
(
i
?
1
)
0
0
?
0
ε
(
i
?
1
)
]
]
R^i· \begin{bmatrix} \begin{bmatrix} 1\\ -\alpha_1^{(i-1)}\\ -\alpha_2^{(i-1)}\\ \vdots\\ -\alpha_{i-1}^{(i-1)}\\ 0 \end{bmatrix} -k_i \begin{bmatrix} 0\\ -\alpha_{i-1}^{(i-1)}\\ -\alpha_{i-2}^{(i-1)}\\ \vdots\\ -\alpha_{1}^{(i-1)}\\ 1\\ \end{bmatrix} \end{bmatrix}= \begin{bmatrix} \begin{bmatrix} \varepsilon^{(i-1)}\\ 0\\ 0\\ \vdots\\ 0\\ \gamma^{(i-1)} \end{bmatrix} -k_i \begin{bmatrix} \gamma^{(i-1)}\\ 0\\ 0\\ \vdots\\ 0\\ \varepsilon^{(i-1)}\\ \end{bmatrix} \end{bmatrix}
Ri???????????????????????1?α1(i?1)??α2(i?1)???αi?1(i?1)?0?????????????ki????????????0?αi?1(i?1)??αi?2(i?1)???α1(i?1)?1????????????????????????=????????????????????ε(i?1)00?0γ(i?1)????????????ki???????????γ(i?1)00?0ε(i?1)?????????????????????? 该式逼近了表达式
R
(
i
)
α
(
i
)
=
e
(
i
)
R^{(i)}α^{(i)}=e^{(i)}
R(i)α(i)=e(i),然后选择
γ
(
i
?
1
)
γ^{(i-1)}
γ(i?1)使方程右边的向量只有一个非零元素,此时新参数
k
i
k_i
ki?必须为:
k
i
=
γ
(
i
?
1
)
ε
i
?
1
=
R
[
i
]
?
∑
j
=
1
i
?
1
α
j
(
i
?
1
)
R
[
i
?
j
]
ε
i
?
1
k_i=\frac{\gamma^{(i-1)}}{\varepsilon^{i-1}}=\frac{R[i]-\sum_{j=1}^{i-1}\alpha_j^{(i-1)} R[i-j]}{\varepsilon^{i-1}}
ki?=εi?1γ(i?1)?=εi?1R[i]?∑j=1i?1?αj(i?1)?R[i?j]? 这样就确保方程右边的向量的最后一个元素为0,则此时第一个元素为:
ε
i
=
ε
i
?
1
?
k
i
γ
(
i
?
1
)
=
ε
i
?
1
(
1
?
k
i
2
)
\varepsilon^i=\varepsilon^{i-1}-k_i\gamma^{(i-1)}=\varepsilon^{i-1}(1-k_i^2)
εi=εi?1?ki?γ(i?1)=εi?1(1?ki2?) 5、选好
γ
(
i
?
1
)
γ^{(i-1)}
γ(i?1)后,第i阶的预测系数向量为:
α
i
(
i
)
=
k
i
\alpha_i^{(i)}=k_i
αi(i)?=ki? 6、可得系数更新方程组为
α
j
(
i
)
=
α
i
(
i
?
1
)
?
k
i
α
i
?
j
(
i
?
1
)
,
j
=
1
,
2
,
?
?
,
i
?
1
\alpha_j^{(i)}=\alpha_i^{(i-1)}-k_i\alpha_{i-j}^{(i-1)},j=1,2,\cdots,i-1
αj(i)?=αi(i?1)??ki?αi?j(i?1)?,j=1,2,?,i?1
α
i
(
i
)
=
k
i
\alpha_i^{(i)}=k_i
αi(i)?=ki?
因此,对于某个特定的阶数p,最佳预测系数为:
α
j
=
α
i
(
i
)
=
k
i
,
j
=
1
,
2
,
?
?
,
p
\alpha_j=\alpha_i^{(i)}=k_i,j=1,2,\cdots,p
αj?=αi(i)?=ki?,j=1,2,?,p 最终伪代码:
matlab实现
用到lpc函数:
a=lpc(x,n);
这里x为一帧语音信号,n为计算LPC参数的阶数。通常x为240点或256点的数据,n取10-12。
博主表示还是似懂非懂的,略难受。
希望有大牛推荐推荐书籍入个门。
|