声纹识别技术小结(1):声纹建模技术

文章目录

  • 1. 概论和流程
    • 概论
    • 流程
  • 2. 核心:声纹建模
  • 2.1 深度学习之前的方法
    • 高斯混合模型(GMM)
    • 高斯混合-通用背景模型(GMM-UBM)
    • 联合因子分析(JFA)+ GMM-UBM
    • i-vector
  • 2.2 深度学习的方法
    • 理论
    • 间接法
    • 直接法
    • 算法(DNN-based)
      • d-vector
      • x-vector

1. 概论和流程

概论

任务分类

开集声纹辨认 :

M个说话人的声纹识别问题——(M+1)元分类问题(M个说话人+一个冒名顶替者imposter)

流程

2. 核心:声纹建模

声纹识别系统流程最核心的模块是从音频特征到说话人模型的声纹建模模块。


这块可以按照采用的方法大致分为两大类

  • 深度学习之前的方法:① 模板匹配 ② 统计量
  • 深度学习的方法:① 间接方法 ② 完全的神经网络
传统的 方法 深度学习的方法
方法 ① 基于模板匹配的方法 ② 基于统计量的方法
基于矢量化的方法 高斯混合模型(GMM)
GMM-UBM、GMM-SVM
JFA + GMM-UBM
i-vector + GMM-UBM i-vector + DNN、j-vector等(皆为传统方法+神经网络的间接方法)
d-vector(完全版的神经网络)

2.1 深度学习之前的方法

这里简单说一下其中最具代表性的几个方法。

高斯混合模型(GMM)

高斯混合模型(Gaussian mixture model, GMM)是统计学中一个极为重要的模型,其中机器学习、计算机视觉和语音识别等领域均有广泛的应用,甚至可以算是神经网络和深度学习普及之前的主流模型。

GMM之所以强大,在于其能够通过对多个简单的正态分布进行加权平均,从而用较少的参数模拟出十分复杂的概率分布

在声纹识别领域,高斯混合模型的核心设定是:将每个说话人的音频特征用一个高斯混合模型来表示。采用高斯混合模型的动机也可以直观的理解为:每个说话人的声纹特征可以分解为一系列简单的子概率分布,例如发出的某个音节的概率、该音节的频率分布等。这些简单的概率分布可以近似的认为是正态分布(高斯分布)。
注:GMM 的声纹辨认限定在固定的几个说话人组成的闭集之内。

高斯混合-通用背景模型(GMM-UBM)

于2000年提出的通用背景模型(universal background model, UBM)很好地解决了 GMM 无法应用于开集声纹识别的问题。

  1. 通用背景模型:对集外说话人建模
    GMM-UBM 用一个与说话人无关的高斯混合模型 (UBM)表示集外说话人
  2. 贝叶斯自适应:从背景到说话人
    由于UBM本身就是一个高斯混合模型,所以每一个说话人的高斯混合模型参数都可以由UBM模型进行初始化,然后通过贝叶斯自适应的方法得到。这一点对于录入语音较少的说话人来说尤为有效。

联合因子分析(JFA)+ GMM-UBM

在 GMM-UBM 框架中,通过通用背景模型自适应得到的超向量,除了表征与说话人相关的信息,同时也包含了很多其他不相关信息,例如与录音设备及背景环境相关的通道信息等。
联合因子分析(JFA)方法的提出,正是为了说话人信息信道等其他信息更好地区分,从而提升声纹识别的准确率。

i-vector

在基于深度学习的声纹识别方法出现之前,于2011年提出的基于i-vector的声纹识别方法一直是业界主流,它本质上是联合因子分析技术(JFA)的一种改进或者说一种简化

联合因子分析分析(JFA)高维超向量空间移除信道的影响,而i-vector 则在 低维总体因子空间移除信道的影响。

i-vector 的信道补偿主要有LDA、PLDA等方法。

2.2 深度学习的方法

理论

神经网络在声纹识别领域的应用主要分为两种:

  • 间接用于声纹识别:传统框架下,部分模块使用神经网络替代
  • 直接用于声纹识别:端到端的神经网络模型

间接法

(1)串联深度特征
使用神经网络替代传统的MFCC、PLP等特征提取方法。
(2)基于神经网络的 i-vector
使用语音识别神经网络框架替代传统的GMM-UBM框架。

直接法

使用神经网络构建端到端的声纹识别系统,这一过程中的难点在于,音频本身长度是不确定的。给定一段不定长度的音频特征序列,通过神经网络将其转换为一个固定维度的嵌入码,这个过程叫做神经网络运行时的推理逻辑

有如下几种推理逻辑:

(1)逐帧推理:将序列中的每一帧看做一组独立的特征,其输出长度取决于序列的长度,所以还需要一个额外的聚合步骤(比如最简单取平均向量),将逐帧的输出转换为固定长度的向量。

声纹识别技术小结(1):声纹建模技术_第1张图片

缺点是每一帧涵盖的时间范围较短,特征较少。即便采用了帧叠加帧采样的方法,使得每一帧的特征包含尽可能多的上下文信息,即便这样,每一帧音频也不过数十毫秒,其中所携带的信息也相对较少。

之前介绍的串联深度特征方法,其用到的神经网络便是各帧独立的逐帧推理网络。

(2)固定窗推理
对于文本相关的声纹识别,尤其是基于特定唤醒词声纹识别,通常利用唤醒词检测算法检测唤醒词的同时给定唤醒词的边界,然后通过该边界提取固定长度的窗口,从而完成固定推理。

因为固定窗推理的输入序列长度是固定的,所以没有必要进行逐帧进行处理,而是可以将所有音频叠加在一起,组成一个较大的输入,然后通过神经网络直接得到输出。

声纹识别技术小结(1):声纹建模技术_第2张图片

这种方法的致命缺点是,无法被应用于输入长度可变的文本无关的声纹识别

(3)全序列推理
逐帧推理的神经网络可以处理任意长度的音频序列特征,固定窗推理的神经网络可以有效利用每一帧的上下文信息,而全序列推理则可以将这两者的优势结合起来。

全序列推理的方法需要借助循环神经网络来实现。

有两种方式来实现输出固定长度的输出:

声纹识别技术小结(1):声纹建模技术_第3张图片

1、基于池化的全序列推理
对循环神经网络的输出序列进行聚合,计算一组统计量(例如百度的 deep speaker 深纹识别系统就是计算的平均向量)或者多个统计量的拼接。

不管怎么样,基于池化的全序列推理,都不是将池化的输出直接作为最早的嵌入码,而是在池化之后额外增加一层前馈神经网络,将该网络的输出作为最终的嵌入码。这种做法可以有效提升系统对于池化运算的鲁棒性。

2、基于末帧的全序列推理

对于循环神经网络的每一帧输出,只保留最后一帧输出直接作为最终的嵌入码,而将其他输出全部丢弃。

全序列推理的一个致命缺点其无法简单地通过批处理实现高效地大规模训练。批处理通常要求同一批输入数据的维度是一致的,只有这样才能通过张量运算计算整批输入数据的损失函数和梯度,从而进行优化。而在全序列推理神经网络中,通常每一个输入序列的长度都是不一样的,因此其批的大小只能被设定为1。小规模数据集上可能还不明显,但是这在大规模的说话人数据的训练上将是一个灾难(训练时神经网络的收敛将会极其缓慢。)

(4)滑动窗推理

谷歌2018年的提出的滑动窗推理(sliding window interface)巧妙地综合了上述几种方式的优点。依据事先设定好的窗大小与窗间隔,从音频特征序列中提取出相互重叠的滑动窗。每一个滑动窗被独立地作为循环神经网络的输入,完成推理,并得到末帧的输出。

算法(DNN-based)

Speaker recognition以2012年为分水岭,由statistics-based machine learning,跨到了以deep learning为主线的算法。随后,bottleneck feature、d-vector、x-vector、j-vector等DNN-based的系统陆续出现,随后attention mechanism、Learning to rank等思想被用于改良训练过程。

对这些算法按照3类分别做简要阐述:
1)iVector-based;
2)dnn-based;
3)基于attention mechanism、Learning to rank等思想的改良算法。

声纹识别技术小结(1):声纹建模技术_第4张图片

d-vector

x-vector

更多可以参考:声纹识别算法、资源与应用(一)——有连载,值得一看

你可能感兴趣的:(#,项目相关,#,声纹)