Speech recognition 隐马尔可夫模型如何识别单词?

Speech recognition 隐马尔可夫模型如何识别单词?,speech-recognition,hidden-markov-models,Speech Recognition,Hidden Markov Models,我刚刚在这里读到这篇文章(第一个答案): 我有点明白,但还不完全明白。在不太技术化的情况下:单词识别到底是如何工作的 在文章中,hmm应该识别由音素/k//a//t/表示的单词“cat” 假设hmm处于/k/状态。也就是说,它成功地识别了/k/,对吗 那么它如何准确地识别/a/?在/k/之后,下一个状态是/a/,但也可能是e。G下一个状态是/e/,对吗 这些概率来自于在语料库上训练模型吗?因此,如果语料库中的大多数单词是/ka/而不是/ke/,那么从state/k/到/a/的概率要高于从sta

我刚刚在这里读到这篇文章(第一个答案):

我有点明白,但还不完全明白。在不太技术化的情况下:单词识别到底是如何工作的

在文章中,hmm应该识别由音素
/k//a//t/
表示的单词“cat”

假设hmm处于/k/状态。也就是说,它成功地识别了/k/,对吗

那么它如何准确地识别/a/?在/k/之后,下一个状态是/a/,但也可能是e。G下一个状态是/e/,对吗

这些概率来自于在语料库上训练模型吗?因此,如果语料库中的大多数单词是/ka/而不是/ke/,那么从state/k/到/a/的概率要高于从state/k/到/e/

以何种方式确定下一步它将进入/a/状态,而不是进入/e/

它说音素是隐藏的部分。。。这是否意味着,我们看不到模型选择了哪个音素,我们只能看到它现在处于/k/的状态?我们只能看到,在它处理了整个单词之后,它选择了哪些音素,结果是正确的还是错误的

这意味着它只能从/k/转到/a/但是你不能保证它能找到正确的音素


我不是想了解这个模型的来龙去脉,只是想了解它在语音识别中的一般工作原理。

阅读更多有名气的资料,而不是随机的Quora答案,以便全面了解复杂的算法。例如,Rabiner的HMM教程是一个好主意。你也可以查阅类似这样的教科书,它对这门学科有很好的描述

语音识别中的可观察事件序列是音频帧序列。每个帧的声音大约为20毫秒。不可观察事件的顺序大致上就是音素的顺序。实际上它更复杂,但你可以思考音素。除了HMM模型这一数学对象之外,解码算法还有一个重要的部分,叫做Viterbi搜索,它根据概率在可观察状态和隐藏状态之间找到最佳匹配。该算法有效地评估所有可能的故障并找到最佳故障。最好的是解码结果

假设hmm处于/k/状态。也就是说,它成功地识别了/k/,对吗

没有“嗯,在k状态”这样的东西。我们考虑框架1并说它对应于“K”,然后我们考虑框架2,并决定它对应于“K”、“A”还是“E”。为此,我们使用前一帧的前一状态,以及帧2和所有三种状态之间的声学匹配。这种声学匹配通常使用单独的模型进行估计,例如高斯混合模型,不要将其与隐马尔可夫模型混淆。这两个模型都是从语料库中估计出来的。在我们为第2帧存储了一些可能的决定之后,我们移动到第3帧以确定它是否属于任何预期的隐藏状态。注意,我们没有保留1个最佳决策,而是保留了多个可能的决策,因为局部最佳决策(2对应于a)可能不是全局最佳决策(2对应于e)。在解码的最后,我们得到了隐藏状态和可观察状态之间的完整关系,并且我们可以使用HMM估计这种关系的概率

那么它如何准确地识别/a/?在/k/之后,下一个状态是/a/,但也可能是e。G下一个状态是/e/,对吗

它将此帧的故障概率与GMM分数相结合,以更新包括此新帧在内的故障概率。 GMM分数表示音频与预期“a”声音的匹配程度,并从数据库中进行训练

它说音素是隐藏的部分。。。这是否意味着,我们看不到模型选择了哪个音素,我们只能看到它现在处于/k/的状态?我们只能看到,在它处理了整个单词之后,它选择了哪些音素,结果是正确的还是错误的

我们只能在处理完整个单词后才能看到音素

这意味着它只能从/k/转到/a/但是你不能保证它能找到正确的音素

在本地您无法保证,您需要比较全局图片,或者至少在当前音素之后进行一些迭代。这就是为什么在搜索过程中必须保留多个解码结果,而不仅仅是最好的一个