Kaldi声学模型训练

我的书:
在这里插入图片描述
淘宝购买链接
当当购买链接
京东购买链接

  • 支持标准的基于ML训练的模型
    • 线性变换,如LDA,HLDA,MLLT/STC
    • 基于fMLLR,MLLR的说话人自适应
    • 支持混合系统
  • 支持SGMMs
    • 基于fMLLR的说话人识别
  • 模型代码,可以容易的修改扩展

##声学模型训练过程
###1.获得语料集的音频集和对应的文字集
可以提供更精确的对齐,发音(句子)级别的起止时间,但这不是必须的。
###2.将获得的文字集格式化
kaldi需要各种格式类型的,训练过程中将会用到每句话的起止时间,每句话的说话人ID,文字集中用到的所有单词和音素。
###3.从音频文件提取声学特征
MFCC或者PLP被传统方法广泛使用。对于NN方法有所差异。
###4.单音素训练
单音素训练不使用当前音素之前或者之后的上下文信息,三音素则使用当前音素,之前的音素和之后的音素。
###5.基于GMM/HMM的框架
1.将音频根据声学模型对齐
声学模型的参数在声学训练时获得,然而,这个过程可以使用训练和对齐的循环进行优化。这也称之为维特比(Viterbi)训练(包括前向-后向以及期望最大化密集计算过程),通过将音频和文字对齐,可以使用额外的训练算法提升和精细化参数模型。所以,每一个训练步骤会跟随一个对齐步骤。

2.训练三音素模型
单音素模型仅仅表示了单个音素的参数,但是音素是随着上下文变化的,三音素模型使用上下文的前后音素展现了音素的变化。
并不是所有的单音素组合都存在于提供的文字集中,总共有 p o h e m s 3 pohems^3 pohems3个可能的三音素,但是训练集所包含的是一个有限的子集,并且出现的三音素组合也要有一定的次数以方便训练,音素决策树会将这些三音素聚类成更小的集合。

3.根据声学模型重新对齐音频&重新训练三音素模型
重复上述1,2步骤,并加入额外更精细的三音素模型训练,通常包括delta+delta-delta训练, LDA-MLLT以及SAT。对齐算法包括说话人对齐和FMLLR。

4.训练算法
Delta和Delta-delta算法计算特征的一阶和二阶导数,或者是动态参数以补充MFCC特征。
LDA-MLLT(Linear Discriminant Analysis – Maximum Likelihood Linear Transform), LDA根据降维特征向量建立HMM状态。MLLT根据LDA降维后的特征空间获得每一个说话人的唯一变换。MLLT实际上是说话人的归一化。
SAT(Speaker Adaptive Training)。SAT同样对说话人和噪声的归一化。

5.对齐算法
实际的对齐操作是一样的,不同文集使用不同的声学模型。

##声学模型类
这里写图片描述
##GMM

  • 高效似然估计

KaTeX parse error: Got function '\sum' with no arguments as argument to '\mathbf' at position 47: …bf K_1(\mathbf \̲s̲u̲m̲)-\frac{1}{2}(\…

  • 概率计算经过两个矩阵向量的相乘获得,可以使用优化的BLAS函数实现。
    这里写图片描述
    ###Kaldi 中GMM类
    这里写图片描述
    解码部分接口如下:
class DecodableInterface{
public:
//Returns the log likelihood(negated in the decoder).
virtual BaseFloat LogLikelihood(int32 frame, int32 index)=0;

//Frames are one-based.
virtual bool IsLastFrame(int32 frame)=0;

//Indices are one-based(compatibility with OpenFst).
virtual int32 NumIndices()=0;

virtual ~DecodableInterface(){}
}

这里写图片描述
###带fMLLR的声学模型
这里写图片描述
###带MLLR的声学模型
这里写图片描述
###SGMM类
这里写图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页