隐马尔可夫模型 - 识别音素

信息处理 信号检测 语音识别
2022-02-24 07:47:38

我正在开发一个识别音素的项目,以便能够识别某人是在说“是”还是“否”。

到目前为止,在项目中,我已经使用过零来识别这个人在说什么,这非常有效,而且看起来很容易理解。然而,该项目需要一些改进,并且必须使用隐马尔可夫模型进行开发。

我的问题是这样的:

我想开发一个隐马尔可夫模型,而不删除我已经完成的工作。即,我通过计算过零的数量以及块的总和来去除不值得考虑的数据。

我不明白我需要什么数据来训练 HMM 才能识别这些音素。例如

对于过零,我已经确定:

是 - 过零开始低,然后值增加

否 - 零交叉点从低位开始,然后不随值增加。

我可以训练我的 HMM 算法以便它解释这些值吗?

或者任何人都可以建议一种方法,我可以训练 HMM 以识别样本中输入的单词?

希望有人可以提供帮助:)!

1个回答

您应该首先了解 HMM 为何有用。您描述的问题是将给定的话语分类为是或否(拥有“两者都不是”类也很有用)。因为语音是一个随时间变化的量,它需要一个能够处理特征向量序列的分类器。不同的人用不同的速度说“是”或“不是”。例如,我可能会说“不”,语音信号可能长达 200 毫秒,或者您可以说“不”,语音信号可能长达 50 毫秒。

您可能想要考虑为您的语音信号创建固定长度的窗口并从中提取某些变换域系数(如 FFT、DCT 等)并使用这些来训练 HMM。或者,梅尔频率倒谱系数 (MFCC) 在训练基于音素的 HMM 以进行语音识别时也非常流行。