支持提取mfcc/plp特征,和HTK特征的主要差别在于默认参数值的设定。使用选项-htk-compat=true以及合适的参数,可以得到htk特征。
全局CMVN
compute-cmvn-stats
假设帧数为i,特征维度为j,cmvn计算得到两个矩阵:
(
A
1
,
A
2
,
.
.
.
,
A
j
,
A
j
+
1
)
(A_1, A_2,...,A_j,A_{j+1})
(A1,A2,...,Aj,Aj+1)
(
B
1
,
B
2
,
.
.
.
,
B
j
)
(B_1, B_2,...,B_j)
(B1,B2,...,Bj)
第
A
j
+
1
A_{j+1}
Aj+1表示总的帧数N
假设特征为
f
i
j
f_{ij}
fij,其中变量的计算公式如下:
A
j
=
∑
i
f
i
j
A_j=\sum_{i} f_{ij}
Aj=i∑fij
B
j
=
∑
i
f
i
j
2
B_j=\sum_{i} f_{ij}^2
Bj=i∑fij2
apply-cmvn
假设均值和方差分别是
M
j
M_j
Mj和
V
j
V_j
Vj,特征
f
j
f_j
fj经过CMVN归一化以后变成:
f
j
′
=
f
j
−
M
j
V
j
f'_{j}=\frac{f_{j}-M_j}{V_j}
fj′=Vjfj−Mj
其中
M
J
M_J
MJ表示均值,
V
j
V_j
Vj表示标准差:
M
j
=
A
j
N
M_j=\frac{A_j}{N}
Mj=NAj
V
j
=
B
j
N
−
M
j
2
V_j=\sqrt{\frac{B_j}{N}-M_j^2}
Vj=NBj−Mj2
方差的计算展开可以得到:
V
j
=
∑
i
(
f
i
j
−
M
j
)
2
N
=
∑
i
f
i
j
2
N
−
M
j
2
V_j=\sqrt{\frac{\sum_i (f_{ij} - M_j)^2}{N}}=\sqrt{\frac{\sum_i f_{ij}^2}{N}-M_j^2}
Vj=N∑i(fij−Mj)2=N∑ifij2−Mj2