我正在重新学习如何使用隐马尔可夫模型进行语音识别,我有一个问题。似乎大多数/所有关于使用HMM的讨论都考虑了已知观察序列的情况: O1,O2,O3,...,OT,其中T是一个已知数。然而,如果我们试图在语音上实时使用经过训练的HMM,或者在一个WAV文件中,有人在说一句又一句话,那么如何准确地选择T的值?换句话说,如何知道说话者何时结束了一句话,又开始了另一句话?用于语音识别的实际HMM是否仅使用固定的T值,并使用长度为T的固定大小窗口定期重新计算直到当前观察值的最优状态序列?或者,有没有更好的方法在任何时刻动态选择T?
发布于 2019-09-17 18:22:47
用于语音识别的实际HMM是否仅使用固定的T值,并使用长度为T的固定大小窗口定期重新计算直到当前观察值的最优状态序列?
Viterbi解码算法逐帧工作,所以你只需迭代帧,你可以无限迭代,直到回溯矩阵填满所有内存。
训练算法考虑训练前准备的音频,通常为1-30秒。对于训练,音频长度是已知的。
如何知道说话者何时结束了一句话并开始了另一句话?
这里有不同的策略。解码器在解码过程中寻找静默。沉默并不一定意味着句子之间的中断,句子之间可能根本没有中断。句子中间也可能会有中断。
因此,为了发现静默,解码器可以使用独立的语音活动检测算法,当VAD检测到静默时,解码器可以中断,或者解码器可以分析回溯信息来判断是否出现静默。第二种方法更可靠一些。
https://stackoverflow.com/questions/57967222
复制相似问题