Недавно мне было поручено переписать C-сервер на Java, что означало перенос возможностей распознавания речи из Pocketsphinx C api на Sphinx4 Java API с использованием тех же файлов словаря и языковых моделей, что и файлы, работающие с Pocketsphinx plus модель по умолчанию en-us-semi-акустическая, предоставленная CMU Sphinx на их сайте. Одно замечание: для использования Pocketsphinx не требуется акустическая модель, поэтому я выбрал модель en-us-semi, которая будет удовлетворительной для моих нужд. При этом я получаю сообщение об ошибке при инициализации StreamSpeechRecognizer
в качестве компонента Spring с помощью этого кода:
@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
конструктором StreamSpeechRecongizer
.
assert numVariances == numSenones * numGaussiansPerSenone;
утверждения - assert numVariances == numSenones * numGaussiansPerSenone;
Кроме того, вам может быть полезно узнать, что словарь, который я использую, содержит обычные английские слова, такие как картофель, наряду с именами интернет-услуг, такими как Hotmail, Facebook, Twitter и т.д.
Любая помощь будет чрезвычайно оценена всеми вами. Большое спасибо.
Вам нужно использовать последнюю версию sphinx4-5prealpha, как описано в http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4
Он поставляется с стандартной моделью p-tm 5.2 по умолчанию, самой точной моделью. Вам нужно использовать эту модель sphinx4 по умолчанию, а не en-us semi. Последний pocketsphinx работает с той же моделью.
en-us-semi не поддерживается sphinx4