隐马尔可夫模型与语音识别

前言

隐马尔科夫链结合语言识别,在细节上,涉及到的知识挺多,没有一定的时间投入难以很好的去把握。这篇文章只想借着自己的一小段时间学习,从整体上,理一下HMM在ASR的应用过程,不想去探究其中的具体细节。文中的图片基本截取自参考文献中的内容。

隐马尔可夫(HMM)

马尔可夫链

马尔可夫链描述了当前状态与下一个状态的转换关系,如图中所示,天气有三种状态,晴天,阴天,下雨。
在这里插入图片描述
马尔可夫链两个重要参数,初始状态概率,状态转移矩阵。有了这两个参数,我们可以预测后续任意一天的天气概率了。可以看到马尔可夫链的状态转移只与当前状态有关,与之前的状态没有关系。马尔可夫链中,所有信息都是可观测的,因此,它的计算相对简单。

隐马尔可夫

将天气作为隐变量, 现在我们只能观测到一个人连续三天的状态分别是 做家务-》逛街-》户外运动。
假设此人的习惯(发射矩阵或者状态输出矩阵)是
{晴天:0.1 做家务 0.4 逛街 0.5 户外运动}
{阴天:0.2 做家务 0.5 逛街 0.3 户外运动}
{下雨:0.7 做家务 0.2 逛街 0.1 户外运动}
,如何去估计这三天最可能的天气。 我们只需估计初始状态变量,有了初始概率 π \pi π,状态转移矩阵A,发射矩阵B,我们已经可以计算出最大概率的天气序列,然而,世界并不是那么美好,我们需要计算A,B
为了更好理解隐马尔可夫模型,再举一个隐马尔可夫的例子

依照特定的概率转移矩阵,从不同杠里面抓取球,我们所观测到只有球的颜色。现在想知道的是从缸里面抓球的顺序。如果我们知道每个杠中的球的分布概率,也就是知道了不同状态下,球的输出概率,即发射矩阵,同时,我们也知道缸的转移概率,也就是概率转移矩阵,并满足所谓的齐次性。我们可以计算出,下图输出序列最大可能的的状态。
在这里插入图片描述
最大的问题在于A和B是我们自己需要计算的部分,这是HMM最大的难点。
在这里插入图片描述

HMM中的语音识别(孤立词)

这里只想理清孤立词的识别问题,一段话的翻译,需要借助语言模型,那目测也是一个复杂的问题。
在这里插入图片描述
第一个问题回答了,给定语音和模型,得到了模型输入该语音的概率,从而解决了语音识别的问题。
第二个问题解决了最佳对齐的方式。语音的每一个音素时间并不是固定的,人说话有快又慢。所以即使是同一个词的发音,在相同采样频率下,也完全可能得到不同长度的特征序列,即如何得到最佳状态序列。以上面的缸为例,知道输出的球颜色,判断是从哪些缸取球的概率最大。
第三个问题是,模型训练问题,GMM+HMM,主要是解决A,B的估计问题,是难点之处。
在这里插入图片描述
那么在语音中观测序列和隐藏状态究竟是什么呢?要完全把握细节,估计得自己重头实现一遍,这绝对得耗费一定得精力。
从一些资料里面得出,隐藏状态的意义并不明显,就像因子分析中的因子一样,其物理意义具有一定的随意性。观测序列是分帧信号提取的特征向量,在建立HMM的过程里面有许多策略,下面按照结合参考文献中资料,展示HMM语音识别(孤立词)的完整过程。

HMM 语音识别过程

语音识别过程主要包括信号采集,特征提取,解码,输出识别结果,毋庸置疑,最复杂的部分存在于解码器这里。声学模型主要是解决孤立词,涉及到连续语音,它解决孤立词的发声会更加准确。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
对于孤立词识别,通常首先要做的端点检测,就是把连续的语音信号中,可能是一个词的语音信号单独提取出来,然后做分帧,加窗等,进行特征提取,使之变为观测序列。DCT起到了一个数据压缩作用,将三角滤波后的信号压缩为低维的DCT系数。DCT可以看作一个特殊的DFT,其系数的物理意义可以看作对应余弦波的能量或者说幅度。
在这里插入图片描述
如上图,MFCC序列已经变为13维的特征向量,实际上,这只是经典做法,MFCC的变种不计其数,足以说明,以前的人们对它的重视。但就像 “语音识别技术的前世今生”里面说的,随着深度学习网络兴起,借着其强大的特征学习能力,以及现代计算机的强大算力这股东风,MFCC已经江河日下。到这步为止,最早的语音识别工作已经可以展开,如有 相当古老。的DTW ,动态时间规整,有些翻译为动态弯

在这里插入图片描述
这里的一个模板,指的是一个孤立词的模板,一个竖条代表 一个观测信号,即一帧,可以对应于一个MFCC特征向量。人的发音有快又慢,一个词中的不同音素可能有快又慢,另外,孤立词端点切割时,切割点也会有所变化,导致,待识别语音和模板之间,不可能完全匹配。DTW借助动态规划法,利用对齐这一种思想,找出待识别语音信号和模板之间的最小距离。通常做法是,为系统内有限的每一个孤立词建立若干模板,待识别的语音与这些模板进行一一比较,得到最小的距离,便是待识别语音的标签。

GMM

通常来说,一个孤立词,在训练集中会对应多个模板,DTW的处理方法可能是无差别对待,通过遍历,找到一个与待识别语音最匹配的模板。对于GMM的一个任务是如何将一个孤立词对应的多个模板进行混合高斯分布拟合。我没有具体做过GMM,只能从学习资料当中谈谈自己理解。首先,对一个孤立词的建模过程是,将所对应的所有模板进行状态划分,这里面可以用k-mean方法,进行聚类。设定好状态的数量M以及高斯混合数量K,对于同一个状态的所有特征向量,建立高斯混合模型(EM算法)。这里的状态,我的理解是按照顺序的,从左到右,不会返回到前面的状态。需要注意的是,这个混合高斯模型是针对状态的,每一个状态有一个单核高斯混合模型,直观层面来看,这些模型叠加一起可以得到混合高斯。给定一个特征向量,就可以给出这个特征属于该状态的概率。 通过高斯模型,我们可以得到概率发射矩阵,因为我们已经知道各个状态下面的事件概率。事实上,这个状态划分是迭代进行的,属于EM算法的一部分。
在这里插入图片描述
在这里插入图片描述
我们可以看到,上图把一个孤立词对应的所有帧数据划分为3个状态,每个状态对应一个独立的高斯分布。由于这个状态不可观测,只是隐变量,所以,用高斯混合模型建模似乎是一个好而且自然的选择。
GMM并没有涉及到状态的概率转移问题,从直觉来看,GMM的表达的能力和精度相对有限。
在这里插入图片描述
"
在语音处理中,一个word由若干phoneme(音素)组成;
每个HMM对应于一个word或者音素(phoneme)
一个word表示成若干states,每个state表示为一个音素
"

事实上,为了更好的表达音素,一个state显然是不够的,但为了简化问题,还是把state当作类似音素的状态即可。在EM算法做估计状态以及状态转移矩阵,隐藏状态可能没有明确的物理意义。
在给定隐状态的情况下面,GMM建立了观测信号与状态之间的关系,即发射矩阵,HMM则完成了概率转移矩阵的计算。如何确定隐状态,确定发射矩阵和状态隐状态是困难的部分,其他还是比较简单,如下图的识别过程
在这里插入图片描述

总结

纸上得来终觉浅,GMM+HMM有许多细节仍然有待厘清,作为了解就先到这里吧。
在语音识别中,HMM作为一个序列分类器,将观察序列,转为一个潜在状态序列,并计算其输出该观察序列的概率,由此找到最佳的匹配模型。GMM将每帧的特征序列进行建模,得到帧属于某个状态的概率。HMM计算得到概率转移概率,两者可以统一的结合到基于EM的Baum-Welch算法,不断迭代去寻找最优的A,B参数。

参考文献

  1. https://zhuanlan.zhihu.com/p/37847722
  2. https://zhuanlan.zhihu.com/p/35938807
  3. 语音识别技术的前世今生
  4. https://blog.csdn.net/Tonywu2018/article/details/84678122
  5. https://www.jianshu.com/p/16fc3712fdf6
  6. https://zhuanlan.zhihu.com/p/22482625
  7. https://pages.harryfyodor.xyz/2017/11/05/gmm-hmm-model/
  • 1
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值