隐马尔可夫模型阈值

Rad*_*dek 11 java algorithm speech-recognition artificial-intelligence hidden-markov-models

我开发了一个使用mfcc和隐马尔可夫模型进行声音识别的概念验证系统.当我在已知声音上测试系统时,它给出了有希望的结果.虽然系统在输入未知声音时返回最接近匹配的结果,并且分数不是那么明显,以设计它是未知声音,例如:

我训练了3个隐藏的马尔可夫模型,一个用于演讲,一个用于水龙头,一个用于敲桌子.然后我在看不见的数据上测试它们并得到以下结果:

input: speech
HMM\knocking:  -1213.8911146444477
HMM\speech:  -617.8735676792728
HMM\watertap:  -1504.4735097322673

So highest score speech which is correct

input: watertap
HMM\knocking:  -3715.7246152783955
HMM\speech:  -4302.67960438553
HMM\watertap:  -1965.6149147201534

So highest score watertap which is correct

input: knocking
HMM\filler  -806.7248912250212
HMM\knocking:  -756.4428782636676
HMM\speech:  -1201.686687761133
HMM\watertap:  -3025.181144273698

So highest score knocking which is correct

input: unknown
HMM\knocking:  -4369.1702184688975
HMM\speech:  -5090.37122832872
HMM\watertap:  -7717.501505674925
Run Code Online (Sandbox Code Playgroud)

这里的输入是一个未知的声音,但它仍然返回最接近的匹配,因为没有用于阈值/垃圾过滤的系统.

我知道在关键字定位中,OOV(词汇表外)声音可以使用垃圾或填充模型过滤掉,但是它表示它是使用一组有限的未知单词进行训练的,因为我不能将其应用到我的系统中不知道系统可能录制的所有声音.

如何在语音识别系统中解决类似的问题?我怎样才能解决我的问题以避免误报?

Nik*_*rev 3

要拒绝其他单词,您需要一个填充模型。

这是统计假设检验。您有两个假设(单词已知和单词未知)。要做出决定,您需要估计每个假设的概率。

填充模型是根据您的语音进行训练的,只是以不同的方式进行训练,例如,它可能是任何语音的单个高斯模型。您比较通用填充模型的分数和单词 HMM 的分数并做出决定。如需更深入的信息和高级算法,您可以查看有关关键字识别的任何论文。这篇论文有很好的评价:

语音中的声学关键词识别及其在数据挖掘中的应用 AJ Kishan Thambiratnam

http://eprints.qut.edu.au/37254/1/Albert_Thambiratnam_Thesis.pdf