对于ASR流程的理解

训练声学模型(AM)的概念

在钻研脚本之前,理解训练声学模型的基本过程很重要。考虑听众和本教程的目的,这部分主要关注处理的流程而不是计算。处理的流程分解如下:

1)获得语音数据的文本标注

为了更准确地对齐,一句话(句子)的开始和结束时间有用但是不必要。

术语解释:utterance(句子)à在口语分析中,句子是最小的单位,它是一个明确的停顿开始和结束的连续讲话 

2)格式化标注为Kaldi需要的格式

在声学模型(AM)训练的过程中Kaldi需要多种格式的标注,你需要每句话的开始和结束时间点,每句话的说话人ID,以及出现在标注中的所有字和音素的一个列表。

3)从声音当中提取声学特征

梅尔倒谱系数(MFCC)是最广泛使用的特征,当然还有感知线性预测(PLP)以及其他特征可选。这些特征作为声学模型的基础。

4)训练单音素模型(monophone models)

单音素模型是一个声学模型,它不包含任何关于前后音素的上下文信息。它被用作能充分使用上下文信息的三音素模型的构建模块。 

*注意:在这之前我们假设了高斯混合模型/隐马尔可夫模型(GMM/HMM)框架。与此相对的是深度神经网络(DNN)系统。

5)对齐声音和声学模型(Align)

声学模型的参数是在声学训练步骤当中估算的;然而通过循环训练和对齐相位,这个过程可以更加优化。这正是大名鼎鼎的维比特(Viterbi)训练(相关的但更高昂的计算程序包括前向-后向算法和期望值最大化)。通过使用最通用的声学模型来对齐声音到参考标注,附加的训练算法可以接着使用对齐的输出来改善模型的参数。因此,每一个训练步骤后面跟着一个对齐步骤使得声音和文本可以重新对齐。

6)训练三音素模型(triphone models)

然而单音素模型只是简单地描述了单个音素的声学参数,我们知道音素的含义多变十分依赖于它们所处的上下文。三音素模型在另外两个(左和右)音素的上下文环境中描述一个音素变量。

这时我们还需要处理在数据集中并非所有的三音素单元都存在这样一个实际问题。三音素模型中有音素集合元素数目的三次方种可能,但是只有它们中的一个子集将会出现在数据当中。更进一步地,为了有效地收集数据的统计信息,音素必须要出现多次。一个语音决策树(decision tree)将这些三音素分类为一些听觉上明显不同的单元,从而减少参数的数量并使得问题的计算可行。

7)重新对齐声音和声学模型 & 重新训练三音素模型

使用附加的三音素训练算法,重复第5和第6步来进一步细化模型。这通常包括delta+delta-deltaLDA-MLLT以及SAT训练算法。对齐算法包括与说话人无关的对齐和FMLLR

训练算法

Delta+delta-delta训练计算增量和双增量特征,或者动态系数来补充MFCC特征。Deltadelta-delta特征是语音信号第一次和第二次导数的数值估计。照此,计算通常在特征向量的一个较大窗口上执行。虽然两个特征向量的一个窗口也可能可以工作,但是它将是一个很粗略的近似值(类似于增量差异是导数的很粗略的近似值)。delta特征在原始的特征窗口上计算;delta-delta特征在delta特征的窗口上计算。

LDA-MILT代表线性判别分析-最大似然度线性变换。线性判别分析使用特征向量作为参数,构建HMM状态,但对所有的数据使用了缩小的特征空间。最大似然度线性变换使用来自LDA的缩小特征空间作为参数,为每一个说话人导出一个独一无二的变换。MILT因此成为紧跟说话人标准化之后的一步,因为它能最小化说话人之间的差异。

SAT代表说话人自适应训练。通过适应每个说话人和一个特定数据变换,SAT执行说话人和噪音标准化的任务。这将产生更多齐次的、标准化的数据,使得模型在估计由音素(而不是说话人或者录音环境)导致的方差时可以使用它自己的参数。

对齐算法

实际的对齐算法总是相同的;不同的脚本接受不同类型的声学模型作为输入。

说话人无关的对齐,顾名思义,在对齐的过程中会排除掉与说话人相关的信息。

fMLLR代表特征空间最大似然度线性回归。在SAT训练之后,声学模型就不再基于原始的特征训练,而是基于说话人标准化的特征。为了对齐,我们基本上需要通过估算说话人的身份(使用FMLLR的逆矩阵)从特征中移除说话人身份,然后从模型中移除它(通过特征向量和逆矩阵相乘)。得到的与说话人无关的声学模型之后就可以用于对齐的流程。

Ps:原文出处---https://www.eleanorchodroff.com/tutorial/kaldi/kaldi-concept.html

猜你喜欢

转载自blog.csdn.net/xwei1226/article/details/80162026