2015-03-16 1 views
1

J'ai récemment été chargé de réécrire un serveur C en Java, ce qui a nécessité la migration de ses capacités de reconnaissance vocale du Pocketsphinx C api vers l'API Sphinx4 Java, en utilisant le mêmes fichiers de dictionnaire et de modèle de langage que ceux qui travaillaient avec Pocketsphinx plus le modèle en-us-semi-acoustique par défaut fourni par CMU Sphinx sur leur site. Une remarque: aucun modèle acoustique n'était requis pour l'utilisation de Pocketsphinx, j'ai donc choisi le modèle en-us-semi en pensant qu'il serait satisfaisant pour mes besoins. Ce faisant, je reçois une erreur lors de l'initialisation d'une StreamSpeechRecognizer comme un grain de printemps avec ce code:Impossible de charger le modèle en-us-semi dans sphinx4

@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); 

}

L'erreur que je reçois suit:

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) 

Il est levé par le constructeur StreamSpeechRecongizer.

L'échec d'assertion est assert numVariances == numSenones * numGaussiansPerSenone;

En outre, il peut être utile pour vous de savoir que le fichier dictionnaire que je utilise contient des mots anglais ordinaires comme la pomme de terre aux côtés des noms de services Internet, tels que Hotmail, Facebook, Twitter, etc. sur.

Toute aide serait grandement appréciée de votre part. Merci beaucoup.

Répondre

1

Vous devez utiliser la dernière version de sphinx4-5prealpha comme décrit dans http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4

Il va de pair avec le modèle par défaut en-us PTM générique 5.2, le modèle le plus précis. Vous devez utiliser ce modèle sphinx4 par défaut, pas en-us semi. Dernières pochesphinx fonctionne avec le même modèle.

en-us-semi n'est pas pris en charge par sphinx4

+0

Cela a fonctionné! Merci! – MawrCoffeePls