首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐马尔可夫模型阈值

隐马尔可夫模型阈值
EN

Stack Overflow用户
提问于 2012-06-22 19:00:38
回答 3查看 946关注 0票数 11

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

我已经训练了3个隐马尔可夫模型,一个用于语音,一个用于从水龙头出来的水,一个用于敲击桌子。然后,我在看不到的数据上对它们进行测试,得到以下结果:

代码语言:javascript
复制
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

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

我知道在关键字识别中,OOV (超出词汇表)的声音可以使用垃圾或填充物模型过滤掉,但它说它是使用有限的未知单词集进行训练的,而这不能应用到我的系统中,因为我不知道系统可能记录的所有声音。

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

EN

回答 3

Stack Overflow用户

发布于 2012-06-23 03:20:05

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

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

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2012-06-25 23:14:03

表示水龙头声音、敲击声音和语音的每个hmm是由分别来自不同长度为0.3秒到10秒的训练集的30、50、90个声音的声音训练的单独的6状态hmm。然后我创建了一个填充器模型,它是一个1状态的隐马尔可夫模型,由敲门,水龙头和语音的所有训练集组成。因此,如果给定声音的hmm模型分数大于填充者的分数-声音被识别,否则它是未知的声音。我真的没有很大的数据,但我已经完成了以下测试,对看不见的声音进行假阳性拒绝和真阳性拒绝。

代码语言:javascript
复制
true positives rejection
knocking 1/11 = 90% accuracy
watertap 1/9 = 89% accuracy
speech 0/14 = 100% accuracy


false positives rejection
Tested 7 unknown sounds
6/7 = 86% accuracy

因此,从这个快速测试中,我可以得出结论,这种方法给出了合理的结果,尽管我有一种奇怪的感觉,它可能还不够。

票数 1
EN

Stack Overflow用户

发布于 2012-07-04 21:00:26

在分类任务上,判别模型往往比生成模型表现得更好。

使用专门设计的CRF或最大间隔分类器(结构化svm),您肯定可以在这项任务上获得更好的性能。

本文(http://ttic.uchicago.edu/~jkeshet/papers/KeshetGrBe07.pdf)讨论了一个类似于您的分类问题,并表明最大间隔公式优于使用填充模型的生成方法。

可能没有任何开箱即用的方法可以完成我所描述的工作,但是,只要付出一些努力,您就可能能够扩展svm-struct。( hmm-svm实现不适用于您的问题,因为您需要预先指定隐藏状态结构,而不是学习任意连接的隐藏状态结构。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11154923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档