- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近的任务是用 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)以及互联网服务名称(例如 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
关于java - 无法在 sphinx4 中加载 en-us-semi 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067977/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!