1 预处理 Preprocessing
- 预加重,因为人的生理结构特点,高频部分会被压住。
- 分帧(Frame),一般每一帧都是25ms,移帧10ms。
- 分窗口,因为需要保持边缘的平滑性,常用汉明窗算法。
- 端点检测,因为有些地方没有声音的需要被处理。
通常使用25ms每一帧,10ms的移帧,汉明窗算法。
2 特征提取 Feature Extraction
- 可以用MFCC等方法对每一帧提取出一个向量存起来。通常使用的维度: 40或者60. 太短了特征不够明显,太长了运算时间会很长。
一般输入多个背景帧的MFCC特征向量(10个帧,前面5个后面5个),这样能捕捉更多信息。
3 训练i-vector提取器
3.1 使用GMM-UBM得到baum-welch统计量

GMM-UBM.png
UBM(通用背景模型)来弥补目标说话人语音数据不足的特点,收集大量其他说话人的数据进行宽泛的语音特征提取,属于speaker-independent。理解:经过UBM能够有一个先入为主的印象,知道自己是要去抓取语音而不是发动机的声音。
UBM本质上也是一个GMM.
- 将别人说话的数据的mfcc输入GMM-UBM,训练, 提出每一个高斯分型中的均值放进同一个向量中,被称作均值超矢量 m。
- 目标说话人的MFCC向量输入GMM-UBM,在原有的UBM的基础上通过MAP算法自适应得到目标说话人的GMM参数 M.
- 由于之后要使用EM算法,那么一些Bauw-welch一阶统计量在此处要被计算出来
意思是,在每一时刻t,是
对每一个高斯分量c的状态占有率,也就是在t时刻
落入c高斯分量的后验分布。而
意思就是给定说话人s落入高斯模型c的占有率。
还有一些其他的统计量,也根据公式可以算出来,但是这些统计量中间,比如就是从GMM之中来。
3.2 用DNN 来得到baum-welch 统计量
Deep Neural Networks for extracting Baum-Welch statistics for Speaker
Recognition:因为DNN可以处理更多的输入(300ms),能够使用邻间的信息,所以DNN可能会更好。
- 输入 25ms/frame,移帧10ms, 背景10个帧,前面5个后面5个。
- 一共7层,输出为softmax,5个隐藏层使用sigmoid。
有人使用了40维度的filter-bank 和15帧,得到了更大的提升
4 提取 i-vector:
直观的理解:M 是高维度目标说话人的语音特征向量,将它投影在子空间来降维,所以就把多余的因素剔除掉(因子分析),得到维度较低的,
包括了整个训练语音中不同说话人信息的差异和不同信道的差异。
就是 i-vector.
写出一个计算性的代码:
- M, m 都是从之前提取出来的均值超矢量,代入原式。
- 写一个EM算法,T 迭代收敛。先随机产生一个T的初始值,然后得到
的后验,再重新更新T,不断迭代优化参数。这个过程类似K-means不断迭代直到最后分类中的质心不再发生变动。
- T估算完毕,代入公式中,此时M, m, T都知道,根据上面的公式计算出
的后验 = i-vector。
5 关于UBM的细节问题
如果我们想要弄清楚一段语音样本Y是不是来自说话人S,那么有两个假设:
: Y 来自说话人S
: Y 不来自说话人S
所以似然度(Likelihood Ratio LR):
当,
是一个阈值时,我们接受
, 否则接受
。为了拿到
的背景数据,我们使用UBM来采用不同说话人的语音数据来训练。

混合密度.png
所以对于一系列观测值来说:
使用UBM的流程分为两个方面:
- 根据UBM训练出一个GMM
- 将GMM使用MAP算法适应到目标说话人。
在MAP中,因为第一步的训练中需要使用到EM算法,当前步骤只需要让MAP从已经有的EM算法得到的参数开始进行收敛。只需要改变均值mean即可,不需要改变方差。因此更新公式为:
MAP.png
直观的理解:当越大,意味着我们越依赖先验(像工作的时候越是依赖以前的经验)。
6 GMM细节
GMM由K个高斯模型组成,概率密度如下:
其中,是第k个高斯模型的概率密度函数,是选定第k个模型后,产生x的概率,也就是发射概率。
是第k个高斯模型的权重,称作选择第k个的先验概率。
引用参考
- 详解EM算法与混合高斯模型(Gaussian mixture model, GMM) https://blog.csdn.net/lin_limin/article/details/81048411
- MLE,EM,MAP 三种算法对比和理解https://blog.csdn.net/zjm750617105/article/details/52696006
- Speaker Verification using Gaussian Mixture Model (GMM-UBM
https://maelfabien.github.io/machinelearning/Speech1/# - Gaussian Mixture Models Explained
https://towardsdatascience.com/gaussian-mixture-models-explained-6986aaf5a95 - 什么是汉明窗?加Hanmming窗的作用?
https://www.cnblogs.com/lxy2017/p/4049124.html - 声纹识别之I-Vector
https://blog.csdn.net/weixin_38206214/article/details/81096092
