如何使用CMUSphinx识别大量单词

时间:2015-07-26 22:23:37

标签: speech-recognition cmusphinx

我一直试图让Sphinx使用.gram文件检测其字典中的所有单词(大约130k),但它处理大约30秒,然后我收到此错误:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.HashMap.newNode(HashMap.java:1734)
at java.util.HashMap.putVal(HashMap.java:630)
at java.util.HashMap.put(HashMap.java:611)
at java.util.HashSet.add(HashSet.java:219)
at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
at edu.cmu.sphinx.linguist.flat.FlatLinguist$GState.addLeftContext(FlatLinguist.java:754)
at edu.cmu.sphinx.linguist.flat.FlatLinguist$GState.pushLeftContexts(FlatLinguist.java:738)
at edu.cmu.sphinx.linguist.flat.FlatLinguist$GState.pushLeftContexts(FlatLinguist.java:742)
at edu.cmu.sphinx.linguist.flat.FlatLinguist$GState.pushLeftContexts(FlatLinguist.java:742)
at edu.cmu.sphinx.linguist.flat.FlatLinguist$GState.pushLeftContexts(FlatLinguist.java:718)
at edu.cmu.sphinx.linguist.flat.FlatLinguist$GState.collectContexts(FlatLinguist.java:846)
at edu.cmu.sphinx.linguist.flat.FlatLinguist.compileGrammar(FlatLinguist.java:415)
at edu.cmu.sphinx.linguist.flat.FlatLinguist.allocate(FlatLinguist.java:326)
at edu.cmu.sphinx.decoder.search.SimpleBreadthFirstSearchManager.allocate(SimpleBreadthFirstSearchManager.java:602)
at edu.cmu.sphinx.decoder.Decoder.allocate(Decoder.java:109)
at edu.cmu.sphinx.recognizer.Recognizer.allocate(Recognizer.java:182)
at voce.SpeechRecognizer.<init>(SpeechRecognizer.java:94)
at voce.SpeechInterface.init(SpeechInterface.java:79)
at recognitionTest.main(recognitionTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

是否有不同的或更有效的内存方式来完成此任务?

我正在使用一个名为Voce的利用Sphinx的库来使识别和合成变得更加简单,如果这很重要的话。

1 个答案:

答案 0 :(得分:1)

CMUSphinx无法从语法中识别这么长的列表,特别是它与Voce很复杂,它不能正确包装CMUSphinx。我们不建议使用Voce。

您可以使用统计n-gram语言模型来创建大型词汇识别器。您可以通过documentationTranscriber演示了解有关此内容的更多信息。