【问题标题】:How to recognize a large amount of words using CMUSphinx如何使用 CMUSphinx 识别大量单词
【发布时间】:2015-07-26 22:23:36
【问题描述】:

我一直在尝试让 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 的库,以便更简单地进行识别和合成,如果这很重要的话。

【问题讨论】:

  • “检测其字典中的所有单词”——这是什么意思?
  • @Alexander Solovets Sphinx 有一个字典文件,列出了所有支持的单词及其发音。我将这些单词格式化为 .gram 文件并尝试在我的程序中使用它。

标签: speech-recognition cmusphinx


【解决方案1】:

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

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

【讨论】:

  • 我从这里https://oss.sonatype.org/#nexus-search;quick~sphinx4下载了Jar文件,这是教程推荐下载的地方。问题是,每当我尝试运行其中一个演示类时,我都会得到一个 java.lang.NoSuchMethodError: pastebin.com/cseeHA6Q 。我认为这可能是因为罐子已经过时了。你知道为什么会这样吗?
  • 您需要提供更多信息,说明您确切下载了哪些 jar 以及您的类路径中还有哪些其他 jar。
  • 我的错。我下载了 sphinx4-data.jar 和 sphinx4-core.jar。我做了一个新项目,所以这些是我的类路径中唯一的罐子。
  • 请提供您下载的确切文件名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多