无法在 sphinx4 中加载 en-us-semi 模型

Failed to load en-us-semi model in sphinx4

我最近的任务是在 Java 中重写 C 服务器,这意味着将其语音识别功能从 Pocketsphinx C api 迁移到 Sphinx4 Java API,使用与 Pocketsphinx 相同的词典和语言模型文件以及 CMU Sphinx 在其站点上提供的默认 en-us-semi 声学模型。注意事项:使用 Pocketsphinx 不需要声学模型,所以我选择了 en-us-semi 模型,认为它可以满足我的需求。这样做时,我在使用以下代码将 StreamSpeechRecognizer 初始化为 Spring bean 时遇到错误:

@Bean
@Autowired
public StreamSpeechRecognizer streamSpeechRecognizer(SphinxProperties sphinxProperties) throws
                                                                                      IOException {
edu.cmu.sphinx.api.Configuration sphinxConfiguration = new edu.cmu.sphinx.api.Configuration();
sphinxConfiguration.setAcousticModelPath("resource:/" + sphinxProperties.getAcousticModelPath());
sphinxConfiguration.setDictionaryPath("resource:/" +  sphinxProperties.getDictionaryPath());
sphinxConfiguration.setLanguageModelPath("resource:/" + sphinxProperties.getLanguageModelPath());

return new StreamSpeechRecognizer(sphinxConfiguration);

}

我得到的错误如下:

Caused by: java.lang.AssertionError
at edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader.createSenonePool(Sphinx3Loader.java:484)
at edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader.loadModelFiles(Sphinx3Loader.java:386)
at edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader.load(Sphinx3Loader.java:315)
at edu.cmu.sphinx.frontend.AutoCepstrum.newProperties(AutoCepstrum.java:118)
at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:508)

它是由 StreamSpeechRecongizer 的构造函数抛出的。

断言失败是assert numVariances == numSenones * numGaussiansPerSenone;

另外,如果您知道我使用的词典文件包含像 potato 这样的普通英语单词以及 Internet 服务名称,例如 Hotmail、Facebook、Twitter 等,这对您可能会有用。

非常感谢大家的帮助。非常感谢。

您需要使用最新版本的 sphinx4-5prealpha,如 http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4

中所述

它与默认的 en-us 通用 ptm 5.2 模型一起使用,这是可用的最准确的模型。您需要使用默认的 sphinx4 模型,而不是 en-us semi。最新的 pocketsphinx 使用相同的模型。

sphinx4 不支持 en-us-semi