上篇系列之一从总体上讲了ASR的原理、评估方法、模型发展,这一篇开始介绍称霸ASR三十年的混合模型(Hybrid Model),特别是GMM/HMM模型。由于GMM和HMM模型本身已经是很大的一块内容,我假设读者已经了解其基本原理。

在这里插入图片描述

基本概念

在讲具体模型之前,先介绍一些需要了解的基本概念。对语音进行处理,一般会先进行分帧和特征提取,例如MFCC、FBank,然后把这些特征转化为发音最基本单位的序列,一般是音素序列,音素转换为字后就变为了文字序列。音素是比字更小一级的单位,在汉语中简单理解音素就是声母和韵母集合,但由于某些韵母是其他基本韵母的组合,实际上音素只需要这些基本发音单元就够了。如何把语音特征转换为合理的音素或者文字序列,就是模型要干的事。

GMM/HMM模型

我们知道隐马尔科夫模型HMM(Hidden Markov Model)可以用来预测序列,ASR要做的是从语音到文本序列的转换,顺理成章可以用HMM来预测。HMM预测过程中需要状态转移概率矩阵和发射矩阵(观察概率),使用在ASR中时HMM状态可对应音素,发射矩阵可通过混合高斯模型GMM(Gaussian Mixture Model)计算获得。由于整个方法混合使用了GMM和HMM,所以叫混合模型。相对于混合模型,把语音特征通过一个模型直接预测出音素或者文本序列的模型称为端到端模型。

下图是使用GMM/HMM混合模型以一个单词为例的预测整体过程。

语音通过分帧,然后进行特征提取,对每一帧通过GMM计算其属于每个音素的概率,概率最大者被认为是该帧所属的音素(例如图中的y, eh, s),每个音素是HMM中的一个状态,通过Viterbi算法在这些音素/状态中找到一条最合理的序列,上图中为sil y eh s sil,组合起来就是单词yes。

HMM和GMM的关系如下图:

可以看到,GMM负责从帧到音素状态的转换,HMM负责音素状态到最后音素串的转换。

可能的疑问

  1. GMM和HMM的参数是怎么得到的?

模型训练时,通过标签数据训练学习得到,HMM的参数是状态转移矩阵,GMM的参数是高斯分布的均值和方差。

  1. 标签数据一帧一帧标得吗?

由于语音帧数太多,很难人工一帧一帧标,一般是先平均标上整体音素,然后通过Embedding Training迭代,迭代过程不断更新转移概率和发射概率,使用Viterbi或者前后向算法对帧和标签进行对齐。

模型优缺点

优点:训练速度快,模型小。

缺点:模型没有利用上下帧的信息。从1990年以来,主体框架没变,各种改进的补丁越打越多,模型变得越来越复杂。

DNN/HMM模型

由于GMM没有利用帧的上下文信息,随着深度神经网络的兴起,能弥补上这一缺点,让DNN代替GMM学习深度非线性特征,于是有了DNN/HMM模型。

本质就是用DNN代替了GMM/HMM中的GMM,以前是用GMM计算,选择概率最大的音素作为一帧的HMM状态。使用DNN后通过神经网络直接计算每帧属于各个音素的概率值,即通过softmax得到一个概率值的向量,选最大值对应的音素作为该帧的HMM状态。实际上GMM得到的是真正的概率,DNN通过softmax得到的是和为1的向量,我们把向量中的每个值当成了概率。

DNN/HMM的各种变形

DNN可以使用各种神经网络模型,如CNN、RNN、LSTM等,发挥各自的优势。比如RNN、LSTM能有效利用历史信息,增加模型上下文记忆能力。

由于混合模型使用了HMM,当前状态只和上一个状态相关,存在局限性。同时,混合模型要求语音帧和对应的音素一一对齐,这对数据标注造成极大的挑战,一是工作量极大,二是两个相邻音素边界容易混淆。所以近年来对端到端模型的研究很活跃,下一篇我们谈谈著名的CTC模型。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐