zoukankan      html  css  js  c++  java
  • 声纹识别PLDA模型的理解

    PLDA算法解释

    概念理解

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

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

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

    模型训练

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

    模型测试

    在测试阶段,我们不再像LDA那样去基于consine距离来计算得分,而是去计算两条语音是否由说话人空间中的特征hi生成,或者由hi生成的似然程度,而不用去管类内空间的差异。在这里,我们使用对数似然比来计算得分。如下图所示: 
    这里写图片描述 
    公式中,如果有两条测试语音,这两条语音来自同一空间的假设为Hs,来自不同的空间的假设为Hd,那么通过计算对数似然比,就能衡量两条语音的相似程度。得分越高,则两条语音属于同一说话人的可能性越大。

    一个简化版本的PLDA

    由于我们只关心区分不同的说话人的类间特征而不用去管同一个说话人的类内特征,所以其实没有必要向上面一样对类内空间G参数进行求解。于是,我们可以得到一个简化版本的PLDA,如下如: 
    这里写图片描述

  • 相关阅读:
    JS-两个空数组为什么不相等?
    ES6---箭头函数()=>{} 与function的区别(转载)
    SASS用法指南
    scss/less语法以及在vue项目中的使用(转载)
    基于vue+mint-ui的mobile-h5的项目说明
    vue中mint-ui的filed的与blur事件结合实现检查用户输入是否正确
    Carrierwave 如何配置合理的上传文件名(转自李华顺)
    ruby大神与菜鸟的代码区别
    用imageMagick合成图片添加图片水印
    想做喜欢的安卓应用
  • 原文地址:https://www.cnblogs.com/mmziscoming/p/5750853.html
Copyright © 2011-2022 走看看