HMM在语音识别中的应用

时间:2015-01-17 12:15:40

标签: machine-learning speech-recognition speech-to-text scientific-computing hidden-markov-models

这是我第一次在这里发布一个问题所以如果方法不那么标准我道歉,我知道有很多问题在这里,我已经阅读了大量的论文,问题,aritcles和教程,但我似乎有问题,总是最好问。我正在创建一个语音识别应用程序,使用基于高斯混合模型的音素级别处理(非孤立词)连续HMM,包括baum welch,前向后向和维特比算法, 我已经实现了一个非常好的特征提取和预处理方法(MFCC),特征向量也包括mfcc,delta和加速度系数,它在它的部分工作得很好但是当它到来时对HMM来说,我似乎要么有一个' Major Misunderstading'关于HMM应该如何帮助识别语音,或者我在这里错过了一点...我已经尝试了很多,在这一点上我无法正确地说出错误和正确。

首先,我录制了大约50个单词,每个6个单词,并通过我自己编写的正确兼容性和转换程序运行它们并提取这些功能,以便它们可以用于baum-welch。

我希望你能告诉我在这个程序中我犯了什么错误,我也会提到一些疑问,以便你可以帮助我更好地理解这整个主题。

以下是我的申请中涉及培训的任何步骤: HMM模型初始参数的步骤:

1 - 将每个模型的每个训练样本的所有观察值分配到它们对应的离散状态(换句话说,哪个特征向量属于哪个字母状态)。

2 - 使用k-means找到初始连续发射参数,在每个状态的所有观测值上进行聚类,这里聚类大小为6(等于概率密度函数的混合数),参数将是样本均值,每个聚类的样本协方差和一些混合权重。

3 - 为每个模型和训练样本单独创建初始状态初始和转移概率矩阵(在这种情况下使用左右结构),0表示先前状态,1表示最多1个下一个状态用于转换,1表示初始状态在州名首字母中为0表示。

4 - 计算每种状态的基于高斯混合模型的概率密度函数 - >它的相应群集 - >分配给每个模型的所有训练样本中的所有向量

5 - 使用聚类的pdf和混合权重计算初始发射参数。

6 - 现在使用γ-的连续公式,使用前向和初始PDF中的初始参数(转换,发射,首字母)计算伽玛变量。(gamma =在特定时间处于特定状态的概率对于任何混合物)

7 - 估计新州首字母

8 - 估计新州的遗产

9 - 估计新样本意味着

10 - 估计新的样本协方差

11 - 估算新的pdfs

12 - 使用新的pdfs估算新的排放量

使用每次迭代的新估计值重复从6到12的步骤,使用维特比来忽略估计的进展以及概率何时不再变化,停止并保存。

现在我的问题: 首先,我不知道我所遵循的整个过程是否正确,或者是否有更好的方法来解决这个问题...因为我所知道的是收敛速度非常快,最多可达4-5迭代,它已经不再改变了,但考虑到如果我是对的: 我不可能坐下来预先在步骤1开始将每个特征向量分配给它的状态......我不认为它是标准程序......我甚至不知道我是否必须这样做,从我所有的研究中,这是我能找到的最佳方法,以便快速收敛。

第二,说这整个baum welch在重新估算和找到当地最大值方面做得很好,我对我的baum welch实施提出疑问的是,他们后来如何帮助我识别语音?我假设估计的参数用于维特比,以便为每个说出的话语找到最佳状态...如果是,那么发射参数是未知的原因如果仔细观察你会发现我的算法中的最终发射参数将分配每个字母状态每个模型对每个模型中的所有观测信号,除此之外...如果信号与重新估计中使用的信号不完全匹配,则无法找到发射参数,并且它显然不会起作用,任何尝试匹配信号并发现排放的尝试都会使整个HMM失去它的目的...

我可能对这里几乎所有的东西都有错误的想法,如果你帮助我理解我在这里做错了什么我会很感激...如果有任何错误,请通知我...谢谢。

1 个答案:

答案 0 :(得分:0)

您正在尝试确定最可能产生您正在观察的声音的音素集 - 您没有尝试计算排放参数,您正在工作输出最可能产生它们的输入。

此外,您的输入语料库非常小 - 它会如此迅速地收敛并不令人惊讶。如果您在参与大学期间执行此操作,请查看他们是否可以访问常用于训练此类算法的较大语音语料库之一。