这是我第一次在这里发布问题,所以如果方法不是那么标准,我道歉,我知道有很多关于这方面的问题,我已经阅读了大量的论文,问题,阿里克勒斯和教程,但我似乎有一个问题,总是最好的问题。我正在创建一个语音识别应用程序,使用基于高斯混合模型的音素级别处理(不是孤立的单词)连续HMM,涉及baum welch,前向-后向和维特比算法,我已经实现了一个非常好的特征提取和预处理方法(MFCC),特征向量也由mfcc,增量和加速系数组成,它在这一部分工作得很好,但是当涉及到HMM时,我似乎要么对HMM应该如何帮助识别语音有一个“重大误解”,要么我在这里遗漏了一点……我已经尝试了很多,在这一点上我真的分不清什么是错的,什么是对的。
首先,我录制了大约50个单词,每个6个话语,并通过我自己编写的正确的兼容性和转换程序运行它们,并提取特征,以便它们可以用于baum-welch。
我希望你能告诉我在这个过程中我在哪里犯了错,同时我也会提到一些我对此有疑问的地方,以便你能帮助我更好地理解整个主题。
以下是我的应用程序中与训练相关的步骤: HMM模型初始参数的步骤:
2-使用k-means找到初始的连续发射参数,对每个状态的所有观察值进行聚类,其中聚类大小为6(等于概率密度函数的混合数量),参数将是样本均值、样本协方差和每个聚类的一些混合权重。
3-创建初始状态-分别为每个模型和训练样本创建初始概率矩阵和转移概率矩阵(本例中使用左右结构),前一个状态为0,最多1个下一个状态为转换,状态初始为1,其他状态为0。
5-使用pdf和集群的混合权重计算初始发射参数。
6-现在使用向前-向后和初始PDF中的初始参数(转换、发射、首字母)计算伽马变量,使用伽马的连续公式。(伽马=任何混合物在特定时间处于特定状态的概率)
7-估计新状态的首字母
8-估计新的状态转变
9-估计新样本均值
10 -估计新样本协方差
11 -评估新的pdf
12 -使用新的pdf估计新的排放量
在每次迭代中使用新的估计值重复从6到12的步骤,使用viterbi来查看估计的进展情况,当概率不再变化时,停止并保存。
现在我的问题是:首先,我不知道我遵循的整个过程是否正确,或者是否有更好的方法来接近this...for。我只知道收敛速度相当快,最多4-5次迭代,而且它已经不再变化,然而,考虑到如果我是对的:我不可能坐下来在步骤1...and开始时预先分配每个特征向量到它的状态,我不认为这是一个标准程序either...again我甚至不知道我是否必须这样做,从我所有的研究来看,这是我能找到的快速收敛的最好方法。
其次,假设整个baum welch在重新估计和找到局部最大值方面做了很好的工作,让我对baum welch实现产生怀疑的是,它们稍后将如何帮助我识别语音?我假设在维特比中使用估计的参数来为每个说话的utterance...if找到最优状态,所以发射参数是未知的。如果你仔细观察,你会发现我的算法中的最终发射参数将每个模型的每个字母状态分配给每个模型中的所有观察信号,如果信号与重新估计中使用的信号不完全匹配,则可以找到that...no发射参数。这显然不会起作用,任何试图匹配信号并找到发射的尝试都会使整个隐马尔可夫模型失去它的目的。
再说一次,我可能对这里的一切都有一个错误的想法,如果你能帮助我理解我做错了什么,有什么问题,请通知我please...thank here...if,我将不胜感激。
发布于 2015-01-17 20:24:06
你正在尝试确定最有可能产生你所观察到的声音的音素集合-你不是在试图计算发射参数,你正在计算出最有可能产生它们的一组输入。
如果你是在和一所大学合作的时候这样做的,看看他们是否有权使用一个更大的语料库来训练这种算法。
https://stackoverflow.com/questions/27999368
复制相似问题