Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cmu_sphinx [Le 05/02/2008, 19:13]
Ner0lph
cmu_sphinx [Le 25/07/2016, 15:48] (Version actuelle)
88.183.205.55 [Pré-requis]
Ligne 1: Ligne 1:
-{{tag>​reconnaissance_vocale BROUILLON}}+{{tag>Trusty ​reconnaissance_vocale BROUILLON}}
  
 ---- ----
  
 ====== CMU Sphinx ====== ====== CMU Sphinx ======
 + 
 +CMU Sphinx est un logiciel de [[:​reconnaissance vocale]] sous licence BSD. Cette page explique comment démarrer une application utilisant la reconnaissance vocale avec sphinx. Nous utilisons sphinx4 (en java), mais il existe aussi pocketsphinx,​ qui a l'air plus simple.
 +Pour l'​instant,​ cette page décrit l'​utilisation de sphinx en langage Java. Il existe aussi une version en C.
 +<note tip>​Sphinx est aussi (entre autres) le nom d'un générateur de documentation écrit en python, ainsi les recherches à son sujet sur le web renvoient parfois des résultats qui ne sont pas appropriés.</​note>​
 +===== Pré-requis =====
 + 
 +  * Disposer des [[:​sudo|droits d'​administration]].
 +  * Disposer d'une connexion à Internet configurée et activée.
 +  * Avoir installé l'​environnement [[:java]] et les paquets **[[apt>​eclipse,​sharutils]]**.
 +=====Installation=====
  
-http://​cmusphinx.sourceforge.net/​html/cmusphinx.php+Téléchargez [[http://​sourceforge.net/​projects/​cmusphinx/​files/​sphinx4/​1.0%20beta6/​sphinx4-1.0beta6-src.zip/​download|ici]] les sources de sphinx. La dernière version stable en juillet 2014 est la 4.1.0beta6. [[:​archivage|Décompressez]] l'​archive,​ vous obtiendrez un dossier **sphinx4-1.0beta6**.  
 + 
 +Une partie de sphinx (la "​jsapi"​) n'est pas sous licence libre, contrairement au reste. Pour installer cette partie, qui nous sera utile par la suite, il faut lancer un script qui va nous demander d'​accepter cette licence puis décompresser la **jsapi**. Pour cela depuis le dossier **sphinx4-1.0beta6** obtenu en décompressant les sources de sphinx dans un [[terminal]]:​ 
 +  * Déplacez vous dans le dossier adéquat avec la commande : <​code>​cd sphinx4-1.0beta6-src/​sphinx4-1.0beta6/​lib/</​code>​ 
 +  * Rendez le script ''​jsapi.sh''​ [[:​tutoriel:​script_shell#​executer_un_script|exécutable]] 
 +  * Lancez le script ''​jsapi.sh''​ avec la commande : <​code>​sh jsapi.sh</​code>​ 
 + 
 +appuyer sur <​espace>​ pour faire défiler le texte de la licence, puis répondre ''​y''​ à la question ''​Accept (y/​n)?:''​ - Si l'on obtient l'​erreur suivante, c'est qu'il faut installer le paquet sharutils (cf Pré-requis):​ <​code>​jsapi.sh:​ 257: jsapi.sh: uudecode: not found</​code>​ 
 + 
 +=====Configuration===== 
 + 
 +FIXME 
 + 
 +=====Utilisation===== 
 + 
 +Première étape: tester un code d'​exemple présent dans le paquet. La reconnaissance vocale sera en anglais. Nous allons compiler un des programmes d'​exemple ("​hello world"​) depuis eclipse. 
 + 
 +  * Démarrez eclipse, soit depuis le bureau, soit en tapant la commande '​eclipse'​ dans un terminal. Si c'est le premier démarrage d'​eclipse,​ celui-ci demande de choisir un répertoire "​workspace"​ où il stockera les projets. Accepter la réponse par défaut (/​home/​VOTRELOGIN/​workspace),​ et cocher la case "Use this as default"​. 
 +  * Dans l'​écran d'​accueil d'​eclipse,​ cliquez sur //​workbench//​ (flèche en haut à droite). 
 +  * Créez un nouveau projet: sélectionner //Fichier -> Nouveau -> Projet//, puis dans la boîte de dialogue choisir //Projet java//, puis cliquer sur //​Suivant//,​ 
 +  * Comme nom de projet, choisir //​helloworld//​ et cliquer sur suivant, 
 +  * Passez la dernière boîte de dialogue en cliquant sur //​Terminer//,​ et si eclipse le demande, accepter d'​activer la "​perspective java"​. 
 +  * Importez le répertoire contenant l'​exemple "​helloworld":​ dans le menu //Fichier -> Importer//, //Général -> File System//. Cliquer sur //​Parcourir//,​ et sélectionner le répertoire **sphinx-4.1.0/​src/​apps/​edu/​cmu/​sphinx/​demo/​helloworld**. Une fois le répertoire sélectionné cocher tous les fichiers qui s'​affichent,​ puis cliquer sur "​Terminer"​. 
 +  * Charger les .jar: clic droit sur le projet "​helloworld"​ dans l'​arborescence qui apparaît à gauche. Dans le menu contextuel, choisissez //​Configurer le buildpath//,​ puis dans la boîte de dialogue qui s'​ouvre "Java build path", onglet "​libraries"​ puis "​external jar". Sélectionner le répertoire sphinx-4.1.0/​lib Une liste des jar apparaît, il faut tous les sélectionner et valider. Ensuite, re-cliquez sur "​external jar" et aller chercher **sphinx4-1.0beta6/​src/​jsapi2/​org.jvoicexml.jsapi2.jse.sphinx4/​3rdparty/​sphinx4/​lib/​sphinx4.jar**,​ ainsi que "​./​sphinx4-1.0beta6/​src/​jsapi2/​org.jvoicexml.jsapi2.jse.sphinx4/​3rdparty/​sphinx4/​lib/​WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar"​ 
 + 
 +  * Changer la déclaration du package "​helloworld"​ (.java ?): eclipse indique une erreur à la ligne 3 du fichier (une ampoule avec une croix sur fond rouge). Pour voir ce dont il s'​agit,​ laisser la souris au-dessus de la ligne 3 du fichier, une ligne de diagnostic, à propos de la position du package. Parmi les solutions ("​quickfixes"​) proposées en dessous, choisir "​déplacer helloworld.java dans edu.cmu.sphinx.demo.helloworld"​. 
 +  * Charger les ressources. À ce stade-là, il ne doit plus y avoir d'​erreurs dans la marge de "​helloworld.java"​. On peut donc lancer l'​application avec le bouton "​run"​ (dans la barre d'​outils). Choisir "as java application"​. On obtient l'​erreur suivante: 
 +<​code>​Exception in thread "​main"​ java.lang.NullPointerException</​code>​ 
 +at edu.cmu.sphinx.util.props.SaxLoader.load(SaxLoader.java:​74) at edu.cmu.sphinx.util.props.ConfigurationManager.<​init>​(ConfigurationManager.java:​58) at edu.cmu.sphinx.demo.helloworld.HelloWorld.main(HelloWorld.java:​33) C'est parce qu'il faut importer les "​ressources"​ dans le projet. Dans le "​project explorer",​ dérouler l'​arborescence jusqu'​à voir la classe HelloWorld ("​HelloWorld"​ avec un '​c'​ blanc sur fond vert à gauche). Cliquer avec le bouton droit sur la classe, et choisir "​Import…"​. Choisir "​General -> FileSystem",​ ce qui ouvre une boîte de dialogue dans laquelle on clique sur "​browser"​. On navigue dans l'​arborescence,​ on sélectionne le répertoire "​sphinx-4.1.0/​src/​apps/​edu/​cmu/​sphinx/​demo/​helloworld"​. Une fois le répertoire sélectionné cocher tous les fichiers qui s'​affichent,​ puis cliquer sur "​Terminer"​. 
 + 
 +  * Adapter le fichier de configuration à la position des ressources. Dans le "​project explorer",​ ouvrir le fichier "​helloworld.config.xml"​ qui est dans la classe helloWorld. Le contenu de ce fichier apparaît dans le panneau de droite. Trouver la ligne suivante: 
 +<​file><​property name="​fillerPath"​ value="​resource:/​WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/​noisedict"/></​file>​ 
 +et remplacer "​noisedict"​ par "​fillerdict"​. On obtient: 
 + 
 +<​file><​property name="​fillerPath"​ value="​resource:/​WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/​dict/​fillerdict"/></​file>​ 
 + 
 +  * Toujours dans le fichier de configuration,​ après la ligne 131, ajouter les deux lignes suivantes:​ 
 +<​file><​property name="​modelDefinition"​ value="​etc/​WSJ_clean_13dCep_16k_40mel_130Hz_6800Hz.4000.mdef"/>​ 
 +       <​property name="​dataLocation"​ value="​cd_continuous_8gau/"/></​file>​ 
 +        
 +à partir d'ici, pas vérifié 
 + 
 +Dans le fichier de configuration,​ trouver la section concernant le dictionnaire. L'un des items de cette section indique le chemin du dictionnaire (commence par /​resource...) Il faut remplacer ce chemin par la position où nous avons importé le dictionnaire de notre projet, par exemple ressource:/​edu/​sphinx/​.../​helloworld/​dict Faire de même avec la grammaire et le dictionnaire de filler. 
 + 
 +On peut maintenant tester le helloworld en cliquant sur Debug (flèche verte). Si la qualité de la reconnaissance est mauvaise, c'est normal. 
 + 
 +====Pour le français==== 
 + 
 +Modifier le "​helloworld"​ anglais pour l'​adapter au français. Pour cela, il faut récupérer les ressources (grammaire, dictionnaire et modèle acoustique),​ et modifier le fichier de configuration pour que ces nouvelles ressources soient prises en compte. 
 + 
 +Dictionnaire:​ récupérer le fichier french62K.dic [[https://​code.google.com/​p/​voicecmdr/​source/​browse/​branches/​workflow/​src/​sphinx4/​french/​etc/​frenchWords62K.dic|ici]],​ l'​importer dans le projet eclipse, puis modifier le chemin du dictionnaire dans la section "​dictionnary"​ du fichier configuration.xml,​ 
 +Grammaire: il faut créer une grammaire, sur le modèle de celle qui existe en anglais, l'​importer dans le projet eclipse, puis modifier le chemin pour qu'​elle soit prise en compte, 
 +Modèle acoustique: il faut l'​importer dans le projet eclipse, puis le pointer depuis le fichier de configuration. On le récupère à cette [[https://​voicecmdr.googlecode.com/​svn/​branches/​workflow/​src/​sphinx4/​french/​model_architecture/​french_f0.5725.mdef|adresse]] 
 +le fichier dmp [[https://​voicecmdr.googlecode.com/​svn/​branches/​workflow/​src/​sphinx4/​french/​etc/​french3g62K.DMP|ici]]. 
 + 
 +=====Voir aussi===== 
 + 
 +  * **(en)** [[http://​cmusphinx.sourceforge.net/​|Site officiel]] 
 +  * [[https://code.google.com/​p/​voicecmdr/​wiki/​VoiceRecognitionFR|Sources]]
  
 ---- ----
  
 //​Contributeurs : FIXME.// //​Contributeurs : FIXME.//
  • cmu_sphinx.1202235193.txt.gz
  • Dernière modification: Le 08/06/2010, 07:19
  • (modification externe)