我已经开发出了使用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
Here the input is an unknown sound but it still returns the closest match as there is no system for thresholding/garbage filtering.
我知道在关键字中发现OOV(词汇量不足)的声音可以使用垃圾模型或填充物模型过滤掉,但是它说它是使用有限的一组未知词进行训练的,因此无法像我一样将其应用于我的系统还不知道系统可能会录制的所有声音。
语音识别系统中如何解决类似的问题?我该如何解决我的问题以避免误报?