声纹识别-3.i-vector/PLDA(上篇)
前言
前面两篇博文分别介绍了声纹识别的绪论和传统的GMM-UBM声纹识别算法。本文介绍,到目前为止,声纹识别领域仍具很大影响力的i-vector1/PLDA2(identification vector, Probabilistic Linear Discriminant Analysis,辨识向量,概率线性判别分析)。i-vector是代表说话人的向量,PLDA是一种信道补偿算法。由于整个i-vector识别框架涉及的知识点较多,为了尽可能详细阐述各个知识点的数学逻辑,博文分为上下篇。
i-vector是从GMM均值超向量(GMM mean supervectors3,该超向量代表说话人)中提取一个更紧凑向量,也叫全因子(total factors),是在联合因子分析(Joint Factor Analysis,JFA)的理念上发展来的。Patrick Kenny(JFA作者,加拿大蒙特利尔研究所)认为声纹信息可以用一个低秩的超向量子空间来表示,噪声和其他信道效应也用一个不相关的超向量子空间进行表达,如下图4所示。
上图中所示的超向量
M
M
M来表示某个说话人,它是自多个高斯模型的均值(从UBM自适应到GMM后的均值)堆积,如下图3所示。可以看出,
M
M
M是经过UBM自适应之后得到的超向量,这个超矢量同时包含说话人影响和信道影响,也就是说,前篇博文提及的GMM-UBM算法,实际上并没有细致到把信道对说话人的影响考虑进来,所以其跨信道性能差。
研究显示,一段语音中包含的说话人因子和会话因子(信道及背景信息)很难通过JFA的方法完全分离,因为JFA方法得到会话因子仍包含有一定说话人的信息——所以,Patrick Kenny的学生Dehak提出了i-vector, M = m + T × w M = m + T\times w M=m+T×w,式中 M M M为上文提及的说话人、信道依赖的超向量, m m m为说话人、信道独立的超向量,一般用UBM的均值向量代替, w w w即identity vector,total factor,而 T T T叫做total variability matrix。
PLDA是一种信道补偿(channel compensation)算法,所谓信道补偿——由于信道信息的存在,对我们做说话人识别产生了干扰,甚至严重影响系统的识别准确率。于是,我们就要想办法尽量减小该影响。信道补偿可以从说话人识别的三个维度来做,特征维度,模型维度和打分维度,而PLDA在特征维度给i-vector做了很好的信道补偿,因为i-vector同时含有说话人和信道的信息,我们只关心说话人信息。
整个i-vector/PLDA系统如下图5所示。
Step1. 训练UBM
UBM的训练与上一篇博文的训练方法相同,即使用EM算法基于一批说话人数据(提取成MFCC特征)训练得到通用背景模型,此处不再赘述。
Step2. 计算统计量和 T T T矩阵
1. i-vector框架
i-vector定义了一个低维度向量 R × 1 R\times1 R×1, w ∼ N ( 0 , I ) w \sim N(0,I) w∼N(0,I)(先验假设,根据数据继续迭代计算调整——贝叶斯理派)来表示某语音段(utterance)。 M = m + T × w M = m + T\times w M=m+T×w这个公式用来模拟GMM supervector的产生,i-vector架构下并没有真正训练某个人的GMM,自然就没有GMM supervector; M M M是被建模的某个说话人对应的ideal特征超向量——经过T矩阵乘i-vector,加上UBM均值超向量;
m m m 作为UBM均值超向量,假设UBM包含 C C C个高斯混合分量 g g g,那么 m m m就是所有混合分量均值向量 m c , c = 1 , . . . , C m_c, c=1,...,C mc,c=1,...,C的组合, m m m的维度为 C ∗ F C*F C∗F, T T T的维度为 C ∗ F × R C*F\times R C∗F×R, F F F表示MFCC特征的维度,比如39维。
对于每一个混合分量 c c c,我们还有参数混合权重 w c w_c wc, 和协方差矩阵 Σ c \Sigma_c Σc。我们可以进一步拆分 T T T矩阵为 C C C个 V c V_c Vc的组合, V c V_c Vc的维度为 F × R F \times R F×R, μ c = m c + V c w \mu_c = m_c + V_c w μc=mc+Vcw假如i-vector的维度为 400 × 1 400 \times 1 400×1,MFCC向量的维度为 13 13 13,那么 V c V_c Vc的维度为 13 × 400 13 \times 400 13×400。 T T T矩阵和 V c V_c Vc的关系如下所示。
定义一段语音特征数据 X X X,其特征维度为 F F F,时序为 T T T,即 X = X 1 , . . . , X T X=X_1, ..., X_T X=X1,...,XT。 X X X中属于第 c c c个高斯分量的子集为 X c X^c Xc,子集中某Frame(帧) X t c X_t^c Xtc,则 X t c ∼ N ( μ c , Σ c ) X_t^c \sim N(\mu_c, \Sigma_c) Xtc∼N(μc,Σc) X t c = μ c + v , v ∼ N ( 0 , Σ c ) X_t^c = \mu_c + v, v \sim N(0, \Sigma_c) Xtc=μc+v,v∼N(0,Σc)由此可得如下公式,这个形式叫做component-wise form6 X t c = m c + V c w + v X_t^c = m_c + V_c w + v Xtc=mc+Vcw+v
2. 为什么要计算统计量?
求解i-vector的过程实际上是MAP(最大后验概率)估计过程,即给定说话人数据,估计i-vector的后验概率分布 P ( w ∣ X ) P(w|X) P(w∣X),分布的均值就是该说话人的i-vector;该过程中,包含EM算法过程——用以求解模型参数T矩阵,而w实际上就是隐变量
可以联想GMM-UBM框架下,某个说话人的GMM的参数并不是直接由该说话人的大量语音数据使用EM算法求解MLE(最大似然估计),而是训练一个UBM,然后使用MAP估计得来的;同理,i-vector框架也是一样,它是GMM-UBM的升级版,而i-vector就是压缩版或者更加抽象的GMM supervector。
为了得到这个后验概率分布的均值,我们需要alignment statistics,align的意思表示某个说话人的语音数据中的某些帧,依附于,产生于,来自于UBM中某个分量高斯,我们可以得到一系列alignment statistics,包括零阶、一阶、二阶统计量。用soft counting(来自某个高斯分量的概率),得到的是Baum-Welch statistics ,基于hard counting(来自某个高斯分量的概率最大,即为1),得到Viterbi statistics,与上一篇GMM-UBM博文相同,我们使用Baum-Welch statistics。
N
c
=
∑
t
=
1
T
ρ
t
(
c
)
F
c
=
∑
t
=
1
T
ρ
t
(
c
)
X
t
S
c
=
∑
t
T
ρ
t
(
c
)
X
t
X
t
∗
\begin{aligned} N_c &= \sum\limits_{t=1}^T\rho_t(c)\\ F_c &= \sum\limits_{t=1}^T\rho_t(c) X_t\\ S_c &= \sum\limits_t^T\rho_t(c)X_t X_t^{*} \end{aligned}
NcFcSc=t=1∑Tρt(c)=t=1∑Tρt(c)Xt=t∑Tρt(c)XtXt∗其中,
ρ
t
(
c
)
=
P
r
(
c
∣
X
t
,
λ
c
)
=
w
c
∗
g
(
X
t
∣
m
c
,
Σ
c
)
∑
c
C
w
c
∗
g
(
X
t
∣
m
c
,
Σ
c
)
\rho_{t}(c) = Pr(c|\bm{X_t}, \lambda_c) = \frac{w_c*g(\bm{X_t}|\bm{m_c},\Sigma_c)}{\sum\limits_c^Cw_c*g(\bm{X_t}|\bm{m_c},\Sigma_c)}
ρt(c)=Pr(c∣Xt,λc)=c∑Cwc∗g(Xt∣mc,Σc)wc∗g(Xt∣mc,Σc)需要对上述统计量进行中心化计算,即减去高斯分量的均值然后再进行乘法操作,如中心化一阶分量,
F
c
~
=
∑
t
=
1
T
ρ
t
(
c
)
(
X
t
−
m
c
)
\tilde{F_c } = \sum\limits_{t=1}^T\rho_t(c) (X_t-m_c)
Fc~=t=1∑Tρt(c)(Xt−mc)基于上述统计量,可得
w
w
w后验概率分布的方差和均值,分别Cov(
w
,
w
w, w
w,w)和<
w
w
w>7(文章中用的是
y
y
y)表示,证明过程为Kenny(公式推导狂魔)文章Eigenvoice Modeling With Spare Training Data的
P
r
o
p
o
s
i
t
i
o
n
1
Proposition \ 1
Proposition 18
C
o
v
(
w
,
w
)
=
(
I
+
∑
c
N
c
V
c
∗
Σ
c
−
1
V
c
)
−
1
<
w
>
=
C
o
v
(
w
,
w
)
∑
c
V
c
∗
Σ
c
−
1
F
c
~
\begin{aligned} Cov(w,w) &= \big( I + \sum\limits_{c} N_c V_c^*\Sigma_c^{-1}V_c\big)^{-1}\\ <w> &= Cov(w,w) \sum\limits_{c} V_c^* \Sigma_c^{-1} \tilde{F_c} \end{aligned}
Cov(w,w)<w>=(I+c∑NcVc∗Σc−1Vc)−1=Cov(w,w)c∑Vc∗Σc−1Fc~至此,我们可以看出,alignment statistics的作用。接下来,我们需要计算的就是
V
c
V_c
Vc,也就是
T
T
T矩阵(
T
T
T矩阵拆分为多个
V
c
V_c
Vc)。
3. T T T矩阵计算
对于矩阵 T T T的求解,实际上就是因子分解中常见的EM算法,需要单独列个篇章讲讲(挖个坑),但在实际求解T矩阵的过程中,为了追求效率,我们用的是这篇paper9里面的逐行估计的方式来计算的。
D. Matrouf, N. Scheffer, B. Fauve, J.-F. Bonastre, “A straightforward and efficient implementation of the factor analysis model for speaker verification,” in Proc. INTERSPEECH, Antwerp, Belgium, Aug. 2007, pp. 1242-1245.
代码可以直接参照Reference 55.
Step3. 计算i-vector
实际上在Step2中,我们已经知道了,i-vector的计算公式,再写一遍。
C
o
v
(
w
,
w
)
=
(
I
+
∑
c
N
c
V
c
∗
Σ
c
−
1
V
c
)
−
1
<
w
>
=
C
o
v
(
w
,
w
)
∑
c
V
c
∗
Σ
c
−
1
F
c
~
\begin{aligned} Cov(w,w) &= \big( I + \sum\limits_{c} N_c V_c^*\Sigma_c^{-1}V_c\big)^{-1}\\ <w> &= Cov(w,w) \sum\limits_{c} V_c^* \Sigma_c^{-1} \tilde{F_c} \end{aligned}
Cov(w,w)<w>=(I+c∑NcVc∗Σc−1Vc)−1=Cov(w,w)c∑Vc∗Σc−1Fc~
写成用
T
T
T矩阵表示的形式如下,
w
=
(
I
+
T
t
Σ
−
1
N
(
u
)
T
)
−
1
.
T
t
Σ
−
1
F
(
u
)
~
w = \big( I + T^t \Sigma^{-1}N(u) T\big)^{-1}.T^t \Sigma^{-1}\tilde{F(u)}
w=(I+TtΣ−1N(u)T)−1.TtΣ−1F(u)~
其中,
N
(
u
)
N(u)
N(u)维度为
C
F
×
C
F
CF\times CF
CF×CF的对角矩阵,对角block为
N
c
I
,
(
c
=
1
,
.
.
.
,
C
)
N_cI, (c=1,...,C)
NcI,(c=1,...,C),
F
(
u
)
~
\tilde{F(u)}
F(u)~是
C
F
×
1
CF\times1
CF×1的超向量,由所有的一阶BW统计量
F
c
~
\tilde{F_c}
Fc~组成。
下篇正在撰写中
Reference
N Dehak, PJ Kenny, R Dehak, P Dumouchel, P Ouellet, “Front-end factor analysis for speaker verification”, IEEE Transactions on Audio, Speech, and Language Processing 19 (4), 788-798 ↩︎
S. J. D. Prince and J. H. Elder, “Probabilistic Linear Discriminant Analysis for Inferences About Identity,” 2007 IEEE 11th International Conference on Computer Vision, Rio de Janeiro, 2007, pp. 1-8. ↩︎
W. M. Campbell, D. E. Sturim and D. A. Reynolds, “Support vector machines using GMM supervectors for speaker verification,” in IEEE Signal Processing Letters, vol. 13, no. 5, pp. 308-311, May 2006. ↩︎ ↩︎
Deledalle, C.A., 2007. Factor analysis based channel compensation in speaker verification. ↩︎
M.W. Mak, “Lecture Notes on Factor Analysis and I-Vectors”, Technical Report and Lecture Note Series, Department of Electronic and Information Engineering, The Hong Kong Polytechnic University, Feb 2016. ↩︎
Kenny, Patrick. "A Small Footprint i-Vector Extractor."Odyssey 2012-The Speaker and Language Recognition Workshop. 2012. ↩︎
P. Kenny, G. Boulianne, and P. Dumouchel, “Eigenvoice modeling with sparse training data,” IEEE Trans. Speech Audio Processing, vol. 13, no. 3, pp. 345–359, May 2005. ↩︎
D. Matrouf, N. Scheffer, B. Fauve, J.-F. Bonastre, “A straightforward and efficient implementation of the factor analysis model for speaker verification,” in Proc. INTERSPEECH, Antwerp, Belgium, Aug. 2007, pp. 1242-1245. ↩︎