声纹识别-1.绪论中回顾了声纹识别的类别,性能评价指标和算法。本篇博文介绍声纹识别算法中较为传统的GMM-UBM(Gaussian Mixture Model-Universal Background Model)算法1 2。
GMM-UBM算法需从GMM说起,因为UBM实际上也是GMM,之所以它叫通用背景模型是因为它是从背景数据(background data)中训练而来——这些背景数据来自于大量不同的说话人。某一个特定说话人模型(GMM)是从通用背景模型及该说话人的音频数据自适应(Speaker Adaptation)而来,与目前深度学习领域的fine-tune思想类似。此时得到特定说话人的GMM,可以用于说话人识别打分(Score)。整个识别框架如下图所示3,
高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,其概率密度函数是 M M M个分量密度的带权重加和,理论上GMM可以拟合出任意类型的分布,公式如下。
p ( x ∣ λ ) = ∑ i = 1 M w i g ( x ∣ μ i , Σ i ) . p(\bm{x}|\lambda) = \sum\limits_{i=1}^{M}w_ig(\bm{x}|\bm{\mu_i},\Sigma_i)\,. p(x∣λ)=i=1∑Mwig(x∣μi,Σi).
x \bm{x} x是 d d d维的随机向量, λ \lambda λ是高斯混合模型的参数集合{ λ 1 , . . . , λ i , . . . , λ M \lambda_1, ...,\lambda_i,...,\lambda_M λ1,...,λi,...,λM}, λ i = ( w i , μ i , Σ i ) , i ∈ [ 1 , . . . , M ] \lambda_i=(w_i, \bm{\mu_i},\Sigma_i), i\in[1,...,M] λi=(wi,μi,Σi),i∈[1,...,M], w i w_i wi是混合权重分量, ∑ i = 1 M w i = 1 \sum\limits_{i=1}^{M}w_i=1 i=1∑Mwi=1, g ( x ∣ μ i , Σ i ) g(\bm{x}|\bm{\mu_i},\Sigma_i) g(x∣μi,Σi)为第 i i i个 d d d维高斯分量的概率密度函数, μ i , Σ i \bm{\mu_i},\Sigma_i μi,Σi分别是其均值和方差:
g ( x ∣ μ i , Σ i ) = 1 ( 2 π ) d / 2 ∣ Σ i ∣ 1 / 2 e − 1 2 ( x − μ i ) T Σ i − 1 ( x − μ i ) g(\bm{x}|\bm{\mu_i},\Sigma_i) =\frac{1}{(2\pi)^{d/2}|\Sigma_i|^{1/2}} e^{-\frac{1}{2}(\bm{x}-\bm{\mu_i})^{T}\Sigma_i^{-1}(\bm{x}-\bm{\mu_i})} g(x∣μi,Σi)=(2π)d/2∣Σi∣1/21e−21(x−μi)TΣi−1(x−μi)
高斯混合模型作为机器学习领域中的经典模型,应用的范围比较广,利用的就是其对任意类型数据分布的拟合能力,如HMM框架下的语音识别,GMM用作观测向量(矩阵)的拟合;再如,聚类(分类)算法中,GMM用于描述数据点/特征点的分布,说话人识别属于该应用。
于此同时,GMM公式中包含隐变量(hidden variable),适合使用EM算法(expectation maximization algorithm)进行参数学习。EM算法在高斯混合模型学习中的应用需单独一篇博文介绍,在机器学习专栏下(待完成)。此处,给出GMM模型中三个参数——权重,均值,方差的EM算法更新过程。
ρ i t = P r ( i ∣ x t , λ i ) = w i g ( x t ∣ μ i , Σ i ) ∑ i M w i g ( x t ∣ μ i , Σ i ) \rho_{it} = Pr(i|\bm{x_t}, \lambda_i) = \frac{w_ig(\bm{x_t}|\bm{\mu_i},\Sigma_i)}{\sum\limits_i^M w_ig(\bm{x_t}|\bm{\mu_i},\Sigma_i)} ρit=Pr(i∣xt,λi)=i∑Mwig(xt∣μi,Σi)wig(xt∣μi,Σi)
注意,方差计算公式中的均值,为本轮迭代的估计值 μ i ^ \hat{\mu_i} μi^
对于说话人识别,一组 N N N个说话人集合,用一系列GMM表示,即每个说话人 s k s_k sk对应一个GMM参数 λ k , k = 1 , 2 , . . . , N \lambda_k, k=1,2,...,N λk,k=1,2,...,N。说话人识别的目标是寻找一个说话人模型,使得给定说话人观测序列 X = x 1 , x 2 , . . . , x t , . . . , x T , x t X = {\bm{x_1}, \bm{x_2}, ..., \bm{x_t}, ..., \bm{x_T}}, \bm{x_t} X=x1,x2,...,xt,...,xT,xt是下标为 t t t的特征向量(时间维度下标,表示帧,frame),在某个模型参数下的后验概率最大(the maximum a posterior probability),该模型即为给定说话人观测序列,得到的说话人模型。假设帧间是相互独立的,预测模型(说话人模型) s p r e d i c t e d s_{predicted} spredicted表示为:
s p r e d i c t e d = arg max k ∈ S ∑ i = 1 T l o g [ p ( x t ∣ λ k ) ] s_{predicted} = \argmax\limits_{k \in \mathcal{S}}\sum\limits_{i=1}^{T} log\ [p(\bm{x_t}|\lambda_k)] spredicted=k∈Sargmaxi=1∑Tlog [p(xt∣λk)]
现实中,说话人的语音数据有限或者说商用过程中,用户不愿意贡献足够的个人音频数据,则难以训练出高效的GMM模型;由于多通道问题,训练GMM模型的语音与测试语音存在跨信道情况,也会降低GMM声纹识别系统的性能,同时还有噪声干扰等影响,GMM模型的鲁棒性欠佳。DA Reynolds团队提出了通用背景模型(UBM,Universal Background Model)——先采集大量与说话人无关的语音,训练一个UBM,然后使用少量说话人语音数据,通过自适应算法调整UBM的参数,得到目标说话人模型参数。一般情况下,自适应算法调整的参数只有均值。
这种做法可以减少实际使用过程中的数据量、参数量,便于在移动终端快速训练收敛和解码计算。整个GMM-UBM系统训练及识别流程图5如下所示:
图中所示Feature Vectors,一般情况下为MFCCs(Mel-frequency cepstral coefficients,梅尔频率倒谱系数),也可为PLP(Perceptual Linear Prediction,感知线性预测)等语音特征。
UBM的训练实际上就是高斯混合模型(GMM)的训练。假设我们利用大量背景语音数据,使用EM算法训练好一个UBM。接下来的重点在于,如何把UBM的参数通过Adaptation得到目标说话人的GMM参数,示意图6如下所示,
目前语音识别/说话人识别等技术中使用的自适应方法主要分为两大类:
其它说话人自适应方法多数与这两种基本方法有关系。本文介绍MAP估计。
MAP自适应过程主要总体分为两大步,
MAP具体过程如下,
对于说话人确认(识别也一样)任务,当给定一个语音片段,要找到该片段对应的说话人模型,
UBM-GMM的Matlab代码可直接从Reference 3下载。运行demo_gmm_ubm_artificial.m即可。
D. Reynolds & R. C. Rose, “Robust Text-Independent Speaker Identification Using Gaussian Mixture Speaker Models”, IEEE Transactions on Speech and Audio Processing, Vol. 3, No. 1, January 1995. ↩︎
D.A. Reynolds, T.F. Quatieri, R.B. Dunn, “Speaker verification using adapted Gaussian mixture models”, Digital Signal Processing, vol. 10, pp. 19-41, Jan. 2000. ↩︎ ↩︎
MSR Identity Toolbox ↩︎
Deledalle, C.A., 2007. Factor analysis based channel compensation in speaker verification. ↩︎
基于GMM-UBM的说话人识别算法 ↩︎
J Hansen and T Hasan (2015), Speaker Recognition by Machines and Humans: A tutorial review, IEEE Signal Processing Magazine, 32(6): 74-99. ↩︎