第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【语音识别】基于GMM-HMM的语音识别系统

【语音识别】基于GMM-HMM的语音识别系统

时间:2020-01-01 22:18:55

相关推荐

【语音识别】基于GMM-HMM的语音识别系统

基于GMM-HMM的语音识别系统

终极目的:让机器“听懂” 。

• 对齐:“音频wav” 和“文本txt”的对应关系

• 训练:已知对齐(wav及其txt),迭代计算模型参数。

• 解码:根据训练得到的模型参数,从wav推出txt。

核心:训练和解码

目录:

基于孤立词的GMM-HMM语音识别系统

a. 训练(前向后向训练/Viterbi训练)

b. 解码基于单音素的GMM-HMM语音识别系统

a. 音素/词典

b. 训练

c. 解码基于三音素的GMM-HMM语音识别系统

a. 三音素

b. 决策树

c. 训练

d. 解码基于GMM-HMM语音识别系统流程

1.基于孤立词的GMM-HMM语音识别系统

建模

建立特征向量与模型之间的关系

Xtest测试特征,Pw(X)是词w的概率模型,vocab是词表(在该示例中即0~9 10个数字)

这里的意思就是我们首先要对每个词建模,在他们落在每个词上面的概率,最后选择最大概率那个作为答案。

语音识别中的GMM(对角的GMM,协方差为对角阵,MFCC特征)。语音识别中的HMM,采用3状态,左右模型的HMM:

·为什么采用3状态?这是前人大量实验给出的经验值;

左右模型的HMM:对于每个状态,它只能跳转到自身或者下一个状态。类似于人的发音过程,连续不可逆

对于每个状态有一个GMM模型,对于每个词有一个HMM模型,当一段语音输入后,根据Viterbi算法得到一个序列在GMM-HMM上的概率,然后通过Viterbi回溯得到每帧属于HMM的哪个状态(对齐)。

训练

从系统的角度思考

• 输入:词w和w所对应的训练数据

• 输出:词w的HMM-GMM模型,也就是其参数

关键点

• 任务:训练数据Xw1,Xw2,Xw3… 中训练Pw(X),估计HMM-GMM参数

• 准则:最大似然

• 方法:

• Viterbi学习(Viterbi训练)

• Baum-Welch学习(前向后向训练)

下面进行viterbi算法与EM算法的训练,那么我们就要对应找到初始状态,状态转移概率矩阵,观测概率矩阵。

初始状态:从左到右的HMM。

转移矩阵:跳回到自己或者跳向下一个参数

观测矩阵:混合系数、均值、方差

Viterbi算法

• E步(hard count)

Viterbi算法得到最优的状态序列(对齐 alignment),在t时刻处于状态𝑖𝑖上的概率(非0即1)

GMM模型中在t时刻处于状态𝑖𝑖第𝑘𝑘个GMM分量的概率(依然是soft count)

• M步(normalize)

更新转移参数、GMM参数(混合系数、均值、方差)

• 重复E/M

前向后向训练

• E步(soft count)

前向算法+后向算法,在时刻t处于状态i的概率

在时刻 t处于状态j且为GMM第k个分量的概率

• M步(normalize)

更新转移参数、GMM参数(混合系数、均值、方差)

• 重复E/M

这里可以去看我的前面那篇讲HMM的笔记

解码

• 从系统的角度思考

• 输入

各个词的HMM-GMM模型

未知的测试语音Xtest

• 输出:

Xtest是哪个词

• 关键点

概率问题对所有的w,如何 计算𝑃𝑃𝑤𝑤(𝑿𝑿𝒕𝒕𝒆𝒆𝒆𝒆𝒆𝒆)

方法:

前向算法

Viterbi算法(可以回溯到最优的状态序列)

如果是有两个数字识别:

其拓扑图为:

状态转移图为:

可以看出直接通过viterbi算法找到最佳路径即可

如果是连续数字识别呢?

加上一个循环即可。在识别完一个词,可以加入下一个词的识别。与此同时,还可以采用并行的办法提高效率,因为是并行的,在某个时刻,可能同时会有多个词达到结束状态,分别对应着一段路径,然后又要同时进行下一个词的识别,那么为了避免多余的计算,采用和Viterbi一样的思路,只选取最大概率的路径,扔掉其他。

孤立词系统的缺点

1.建模单元数,计算量和词典大小成正比

2.词的状态数对每个词应该不同,长词状态更多

3.不在词典中的情况

4.词不是最小的单位,音素才是

从而采用3音素建模:

训练流程变成:

问题:如果一句话中包含多个单词?

这个采用和上述相同的方法,加入循环结构,当到达结束状态时进行下一个词的识别。

基于三音素的GMM-HMM语音识别系统

单音素的缺点:

1.建模单元少

2.音素的发音受上下文影响(协同发音)

解决方案:考虑音素的上下文(Context),一般的,考虑前一个/后一个,称之为三音素,表示为A-B+C

同时采用决策树的方法来优化存储结构,减少重复参数出现。

决策树长这样:

• 二叉树

• 每个非叶子结点上都会有一个问题

• 叶子结点是一个绑定三音素的集合

• 绑定的粒度为状态

A-B+C和A-B+D的第1个状态绑定在一起,并不代表其第2/3个状态也要在一起

也就是B的每个状态都有一颗小的决策树

问题集的构建:语言学家定义,Kaldi中通过自顶向下的聚类自动构建问题集。

它是一种基础状态的绑定,每一个叶子结点都绑定了一种状态

决策树的构建

即,最优问题。初始条件类似图中的根节点,“-zh+”,从问题集中选择合适的问题,分裂该节点,使相近的三音素分类到相同的节点上。假设根节点所有三音素对应的特征服从一个多元单高斯分布,可以计算出该单高斯分布的均值和方差,则可以计算出该节点任意一个特征在高斯上的似然。

数据:S=(x1,…,xm)∈(RN)m

模型:假设其服从单高斯分布,并且各维独立,也就是对角GMM

似然:

分成两类:

注:left与right,对应问题的Y与N

似然增益:

最优问题q*:

决策树的构建流程:

1.初始状态(单因素系统对齐,一个根节点)

2.选择一个节点,从问题集中选择似然增益最大的问题作为该节点问题,建立该节点左右子节点,并将该节点一分为二

3.重复2,直至满足一定的终止条件。

基于GMM-HMM语音识别系统流程

• 数据准备:音素列表、词典、训练数据(音频/文本)

• 特征提取:MFCC特征

• 单音素GMM-HMM:Viterbi训练(获取输入与最佳状态的对齐)

• 三音素GMM-HMM:决策树和三音素,Viterbi训练

• 解码

作业是来自哥伦比亚大学的语音识别课程,不过有点难,后续会把我的作业链接发在评论区。

感谢收看,记得点赞~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。