语音识别框架原理简述

语音识别–gmm-hmm简述


基于kaldi工具箱

使用kaldi提取特征,重点在于数据准备部分,但是语音识别的基本框架在于使用GMM-HMM进行识别

使用kaldi进行语音识别的框架大约分为以下部分
语音识别框架原理简述_第1张图片
在进行语音识别的声学模型训练过程中,同时会使用字典以及语音特征进行模型训练。
在语音解码阶段使用的HMM模型的维特比算法进行搜索。

语音识别框架原理简述_第2张图片

gmm-hmm识别的基本原理

以MFCC特征为例,将特征提取出来之后进行模型训练。首先进行初始化的就是高斯模型的均值和方差。那这样在后续的模型训练的过程中,就使用的是模型的均值和方差。注意这里应该是单高斯模型,用单高斯模型对每一帧数据进行建模,每一帧或者是利用某个状态的观察变量来建立一个高斯。
另外要初始化的就是HMM的参数,一般情况下,使用3-5个状态 对应一个音素(除去起始和终止状态)。对应过程如下所示。

语音识别框架原理简述_第3张图片
在上述图中是一个标准的音素对应模型。在kaldi工具箱中,topo文件为HMM模型参数。

在训练过程中为每个训练的句子建立一个完整的hmm结构(我们事先知道模型的结构,即我们知道HMM模型的个数)。在kaldi中有函数进行计算,compile-train-graph。 这个可以根据标注来为整个句子做个对齐,然后我们需要做最大似然比的更新,kaldi里做了将近40次的更新。这样,单音素模型也就建立好了,第一步也就基本完成了。

在进行模型训练的工程中,kaldi 中的3音素训练提供了更好的训练模型。在进行训练的过程中考虑到了上下文信息,使得效果更加的好。在进行普通的单音素训练的过程中,同一音素在不同场景下会有不同的表现形式。

参考自[DNN-HMM 中DNN与HMM的关系](https://blog.csdn.net/dearwind153/article/details/70150135)

同样的元音[eh]在不同的单词中的发音在频域上区分非常明显
语音识别框架原理简述_第4张图片
单音素monophone 是上下文独立的(context-independent)。为了能够表示这种区别,因此提出了triphone的概念,triphone是根据左右音素来确定的,因此是上下文相关的(context-dependent)

语音识别框架原理简述_第5张图片
上图中:W对应的是词组;Q对应的是monophone;L对应的就是triphone;P对应聚类或者状态绑定之后的triphone

接下来本文就要讨论triphone聚类/状态绑定的过程。

聚类过程有 两种,一种是基于数据驱动的聚类过程,第二种是基于决策树的聚类过程。

  1. 首先讨论基于数据的过程
    当单音素集合中有50个音素的时候,如果展开成[x-phone+y]形式的triphone的个数则有50*50*50=125,000个,假设8变量的高斯分布有44个参数(d+(d+1)*d/2)的话,一个triphone由3状态的hmm表示,那么总triphone集合中共参数个数为:125,000*3*44=16,500,000个参数,参数迅速爆炸了,因此,需要对triphone状态进行绑定,然后进行聚类.
    状态绑定的含义就是状态用共同的高斯参数,这样来减少参数爆炸的问题。
    HMM状态绑定过程如下:
    语音识别框架原理简述_第6张图片

  2. 决策树聚类之后的结果称做 senone。什么是senone 参考这个:语音识别中的 senone 是什么?
    有时候,音素会被放在上下文中考虑,这样就形成了三元音素或者多元音素。但它与亚音素不同,他们在波形中匹配时长度还是和单一音素一样。只是名字上的不同而已,所以我们更倾向于将这样的多元音素称为senone。一个senone的上下文依赖比单纯的左右上下文复杂得多,它是一个可以被决策树或者其他方式来定义的复杂函数。(英语的上下文相关建模通常以音素为基元,由于有些音素对其后音素的影响是相似的,因而可以通过音素解码状态的聚类进行模型参数的共享。聚类的结果称为senone。决策树用来实现高效的triphone对senone的对应,通过回答一系列前后音所属类别(元/辅音、清/浊音等等)的问题,最终确定其HMM状态应使用哪个senone。分类回归树CART模型用以进行词到音素的发音标注。)
    模型:
    模型是用来描述一些数学对象的。这些数学对象描述了一些口语的共同属性。在实际应用中,senone的音频模型就是三态高斯混合模型。简单的说,它就是一个最有可能的特征向量。对于模型,有几个问题需要考虑:模型到底多大程度上可以描述实际情况?在模型本身的局限情况下模型能表现得更优吗?自适应模型如何改变条件?
    声学模型acoustic model:
    一个声学模型包含每个senone的声学属性,其包括不依赖于上下文的属性(每个音素phone最大可能的特征向量)和依赖于上下文的属性(根据上下文构建的senone)

    语音中的基本概念

在进行训练HMM的过程中,设置每个音素的均值和方差分别为0和1。然后,生成各个音素的hmm。这个可以根据发音字典和原始的hmm来生成。最后,我们根据训练数据来训练音素级的hmm。这里用到hmm的三大问题。通过训练,我们会得到三个参数:初始状态概率分布π、隐含状态序列的转移矩阵A(就是某个状态转移到另一个状态的概率观察序列中的这个均值或者方差的概率)和某个隐含状态下输出观察值的概率分布B(也就是某个隐含状态下对应于)。

你可能感兴趣的:(语音识别)