基于kaldi的声纹识别

声纹识别基本原理:

1、建立通用背景模型(UBM)

    使用大量的非目标语音构建一个通用背景模型(exp/full_ubm_1024/final.ubm)。

2、得到目标说话人的混合高斯模型(GMM)

    采用目标说话人数据进行基于最大后验概率(Maximum A Posterior, MAP)的自适应训练,得到目标说话人的混合高斯模型(GMM)。

3、映射到 i-vector

    GMM 通过全局差异空间建模(Total Variable space Model, TVM)映射到 i-vector (感觉是下文提到的 hi). 使用 final.ie (我觉得是plda 的空间参数, exp/extractor_1024/final.ie) .

4、根据 hi 对两段语音进行判断

如果两条语音的 hi 特征相同的似然度越大,那么这两条语音就更确定属于同一个人。


一、等错误率(eer)

https://blog.csdn.net/huashui2009120/article/details/78483051

1、错误接受率 (FAR-False Acceptance Rate)

FAR = nontarget_is_target / ( target_is_target + nontarget_is_target )

2、错误拒绝率 (FRR-False Rejection Rate)

FRR = target_is_nontarget / ( target_is_nontarget + nontarget_is_nontarget )

3、等错误率 (EER-Equal Error Rate)

取一组0到1之间的等差数列,分别作为识别模型的判别界限,既坐标x轴,画出FFR和FAR的坐标图,交点就是EER值。


二、Plda 算法

https://blog.csdn.net/xmu_jupiter/article/details/47281211

1、基本原理

在声纹识别领域中,我们假设训练数据语音由I个说话人的语音组成,其中每个说话人有J段自己不同的语音。那么,我们定义第i个说话人的第j条语音为Xij。然后,根据因子分析,我们定义Xij的生成模型为:

这个模型可以看成两个部分:等号右边前两项只跟说话人有关而跟说话人的具体某一条语音无关,称为信号部分,这描述了说话人类间的差异;等号右边后两项描述了同一说话人的不同语音之间的差异,称为噪音部分。这样,我们用了这样两个假想变量来描述一条语音的数据结构。

我们注意到等号右边的中间两项分别是一个矩阵和一个向量的表示形式,这便是因子分析的又一核心部分。这两个矩阵F和G包含了各自假想变量空间中的基本因子,这些因子可以看做是各自空间的特征向量。比如,F的每一列就相当于类间空间的特征向量,G的每一列相当于类内空间的特征向量。而两个向量可以看做是分别在各自空间的特征表示,比如hi就可以看做是Xij在说话人空间中的特征表示。在识别打分阶段,如果两条语音的hi特征相同的似然度越大,那么这两条语音就更确定地属于同一个说话人。

2、训练模型(简化版本可以不用训练G)

PLDA的模型参数一个有4个,分别是数据均值miu,空间特征矩阵F和G,噪声协方差sigma。模型的训练过程采用经典的EM算法迭代求解。为什么用EM呢?因为模型含有隐变量。

3、模型测试

在测试阶段,我们不再像LDA那样去基于consine距离来计算得分,而是去计算两条语音是否由说话人空间中的特征hi生成,或者由hi生成的似然程度,而不用去管类内空间的差异。在这里,我们使用对数似然比来计算得分。如下图所示: 

公式中,如果有两条测试语音,这两条语音来自同一空间的假设为Hs,来自不同的空间的假设为Hd,那么通过计算对数似然比,就能衡量两条语音的相似程度。得分越高,则两条语音属于同一说话人的可能性越大。


三、UBM(Universal Background Model,UBM,通用背景模型)

https://www.cnblogs.com/Vanessa-Feng/p/7465352.html

1、UBM 背景

既然没法从目标用户那里收集到足够的语音,那就换一种思路,可以从其他地方收集到大量非目标用户的声音,积少成多,我们将这些非目标用户数据(声纹识别领域称为背景数据)混合起来充分训练出一个GMM,这个GMM可以看作是对语音的表征,但是又由于它是从大量身份的混杂数据中训练而成,它又不具备表征具体身份的能力。

2、UBM用途

这个混合GMM类似于贝叶斯框架的先验模型,它对语音特征在空间分布的概率模型给出了一个良好的预先估计,我们不必再像过去那样从头开始计算GMM的参数(GMM的参数估计是一种称为EM的迭代式估计算法),只需要基于目标用户的数据在这个混合GMM上进行参数的微调即可实现目标用户参数的估计

3、UBM优点

UBM的一个重要的优势在于它是通过最大后验估计(Maximum A Posterior,MAP)的算法对模型参数进行估计,避免了过拟合的发生。MAP算法的另外一个优势是我们不必再去调整目标用户GMM的所有参数(权重,均值,方差)只需要对各个高斯成分的均值参数进行估计,就能实现最好的识别性能。

4、UBM缺点

但是,待估参数还是太多了,检测时需要输入的语音片段太长,不符合实际使用需求。

GMM-UBM缺乏对应于信道多变性的补偿能力,直白点说就是它不抗干扰。

UBM受训练时长、混合度、信道类型、男女比例等因素影响比较大。


四、i-vector

https://www.cnblogs.com/Vanessa-Feng/p/7465352.html

1、i-vector 背景

既然声纹信息与信道信息不能做到完全独立,那干脆就用一个超向量子空间对两种信息同时建模;即正交独立性没有办法满足,那我们就干脆用一个子空间同时描述说话人信息和信道信息。

2、i-vector 的生成

这个既模拟说话人差异性又模拟信道差异性的空间称为全因子空间(Total Factor Matrix),每段语音在这个空间上的映射坐标称作身份向量(Identity Vector, i-vector),i-vector向量通常维度也不会太高,一般在400-600左右。

3、i-vector 在声纹识别上的应用

I-vector的出现使得说话人识别的研究一下子简化抽象为了一个数值分析与数据分析的问题:任意的一段音频,不管长度怎样,内容如何,最后都会被映射为一段低维度的定长i-vector。

4、i-vector 现状

i-vector在大多数情况下仍然是文本无关声纹识别中表现性能最好的建模框架,学者们后续的改进都是基于对i-vector进行优化,包括线性区分分析(Linear Discriminant Analysis, LDA),基于概率的线性预测区分分析(probabilistic linear discriminant analysis,PLDA)甚至是度量学习(Metric Learning)等。


五、一些相关知识

1、发音器官分为声门上系统、喉系统、声门下系统;语音的物理属性(也称语音四要素):音质、音长、音强、音高。

2、在声纹识别,包括语音识别领域,传统的声学特征包括梅尔倒谱系数MFCC、感知线性预测系数PLP、近几年的逐渐受到关注的深度特征Deep Feature、以及15年公开发表的能量规整谱系数PNCC等,都能作为声纹识别在特征提取层面可选且表现良好的声学特征。

3、在看似更简单的文本相关声纹识别任务上,i-vector表现得却并不比传统的GMM-UBM框架更好。

因为i-vector简洁的背后是它舍弃了太多的东西,其中就包括了文本差异性,在文本无关识别中,因为注册和训练的语音在内容上的差异性比较大,因此我们需要抑制这种差异性;但在文本相关识别中,我们又需要放大训练和识别语音在内容上的相似性,这时候牵一发而动全身的i-vector就显得不是那么合适了。

在文本相关识别应用中,安全性最高的仍然是随机数字声纹识别。

你可能感兴趣的:(基于kaldi的声纹识别)