La reconnaissance vocale est un domaine en pleine expansion qui offre de nombreuses possibilités pour les développeurs. Avec Processing, un langage de programmation open source, il est possible de créer des applications qui peuvent reconnaître et réagir aux commandes vocales. Cet article explorera les différentes façons dont Processing peut être utilisé pour créer des applications de reconnaissance vocale et discutera des avantages et des inconvénients de cette technologie.
Reconnaissance vocale avec Processing
Pour comprendre…
Les premiers pas en reconnaissance vocale avec Processing s’apparentent un peu à une immersion dans un magma dans lequel il faut comprendre quoi sert à quoi et comment… Voici quelques lumières…
Ressources nécessaires
La reconnaissance vocale va utiliser plusieurs ressources nécessaires :
- une entrée son (un microphone voire même micro + table mixage) qui marche comme il faut, c’est à dire testée et paramétrée par vos soins: ce point est hyper important en fait car il détermine le bon fonctionnement de la reconnaissance vocale. Vous pouvez avoir tout installé côté logiciel comme il faut… et n’obtenir aucun résultat car l’entrée son n’est pas bonne… et dès que c’est bien réglé, çà marche bien. Donc, ne pas négliger ce point… Je vous donne les points techniques importants que j’ai constaté ci-dessous…
- l’application de reconnaissance vocale proprement dite : ici, nous utiliserons les ressources du projet Sphinx. Ce projet est opensource, libre, gratuit et propose plusieurs ressources dont notamment une librairie Java appelée Sphinx 4 qui sera logiquement utilisée avec Processing.
- une librairie d’implémentation de Sphinx dans Processing : j’utilise ici la librairie Voce qui implémente la reconnaissance vocale et la synthèse vocale.
Sphinx : reconnaissance vocale
Ce projet de la Carnegie Mellon University est actif (2 à 3 mise à jour par an), et la librairie Sphinx est utilisée dans de nombreuses applications, notamment Gnome-Voice-Control sous Ubuntu, OpenEars sur Iphone, etc…
Les liens importants :
- La page d’accueil du projet Sphinx est ici : http://cmusphinx.sourceforge.net/
- La page du sous-projet Sphinx 4 (Sphinx en Java) : http://cmusphinx.sourceforge.net/sphinx4/
- La page générale de téléchargements des ressources du projet Sphinx : http://sourceforge.net/projects/cmusphinx/files/ (Vous n’avez rien besoin de télécharger pour le moment…)
Le projet Sphinx propose plusieurs outils différents et complémentaires :
- Pocketsphinx : librairie de reconnaissance écrite en C – nécessite Sphinx base
- Sphinxbase : librairie nécessitée par Pocket SPhinx
- Sphinx4 : librairie de reconnaissance vocale ajustable, modifiable écrite en Java
- CMUclmtk : outils pour modèle de langage
- Sphinxtrain : outils d’entraînement de modèle acoustique
Avec Processing, on utilisera logiquement Sphinx 4.
Voici un schéma qui montre le fonctionnement interne de Sphinx 4 (on voit bien que c’est pas rien…) :

Pour faire de la reconnaissance vocale, Sphinx 4 va utiliser :
> un fichier de grammaire, de type *.gram, qui va indiquer les mots attendus, leur hiérarchie. Ce fichier est un simple fichier texte que vous pourrez paramétrer selon vos besoin. Des exemples sont donnés ci-dessous.
> un modèle acoustique qui va contenir tous les paramètres sonores nécessaires à la reconnaissance d’une langue. Par défaut, Sphinx 4 est fournit avec un modèle wsj (pour Wall Street Journal) et un modèle (Tdigit). Mais il existe également des modèles dans d’autres langues, notamment en français. Les modèles disponibles sont ici : http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/ Nous verrons comment utiliser le modèle voulu ci-dessous.
> un dictionnaire (fournit avec le modèle acoustique) qui va indiquer la correspondance entre les mots tels que nous les connaissons et les phonèmes. Là encore il s’agit d’un simple fichier texte contenant jusqu’à plusieurs milliers de mots et qu’il sera possible de modifier au besoin. Il sera ainsi très facile d’ajouter un mot non prévu par exemple…
> un microphone qui est une ligne son du PC avec ses paramètres qui seront configurables : taux d’échantillonnage, taille du buffer, etc..
L’ensemble de ces paramètres seront configurables directement dans un fichier de configuration nommé *.config.xml ce qui permettra de paramétrer Sphinx 4 sans avoir à modifier les fichiers java binaires : bien vu !
Côté téléchargement, Sphinx 4 est dispo :
- en version binaire déjà compilée et en version avec les sources (par ex : sphinx4-1.0beta6-src.zip ) disponibles ici : http://sourceforge.net/projects/cmusphinx/files/sphinx4/1.0%20beta6/
- la version avec les binaires « prêts à l’emploi » est à télécharger pour disposer des outils de test son notamment (voir ci-dessous). Ces binaires seront utilisables directement en ligne de commande.
- la version avec les sources n’est utile que si on souhaite développer directement dans Eclipse (ou autre). Donc pas nécessaire dans une première approche.
A noter que les fichiers utiles de Sphinx 4 sont déjà inclus dans la librairie Voce
Librairies Processing pour Sphinx :
La librairie Processing Voce utilisée ci-dessous :
- implémente sphinx 4 dans Processing
- implémente également la fonction de Text-to-speech, autrement dit la synthèse vocale, basée sur free-tts, écrit en Java (voir ici : http://freetts.sourceforge.net/docs/index.php) .
Les autres librairies Processing de reconnaissance vocale disponibles trouvées sur le net :
- Simple Speech Library qui implémente sphinx 4 de façon un peu différente : http://www.bryanchung.net/?p=208
- et un projet qui en découle, basé sur Processing : http://lilwondermat.com/chatter/
Voilà, à ce stade, vous avez la vue d’ensemble des besoins… Toujours envie de vous coller ? Allez on continue…
Liens utiles
- Doc pour utiliser Sphinx en français : http://code.google.com/p/voicecmdr/wiki/VoiceRecognitionFR
- Fichiers utiles pour français avec Sphinx : http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
Voce (Reco vocale CMUSphynx + synthese vocale avec TTS) :
- Page officielle de Voce, librairie Java de reco + synthese vocale compatible Processing : http://voce.sourceforge.net/
- La doc Java de la librairie Voce : http://voce.sourceforge.net/api/java/classvoce_1_1_speech_interface.html
- Page de téléchargement de Voce : http://sourceforge.net/projects/voce/
- une procédure pour installer Voce sous Processing : http://processing.org/discourse/yabb2/YaBB.pl?num=1191403856/15
Procédure d’installation Voce
- Télécharger la librairie ici : http://sourceforge.net/projects/voce/
- Décompresser le dossier : on obtient un répertoire voce-0.9.1, selon la version qui contient :

- A présent, renommer ce répertoire en « voce » et renommer « lib » en « library » :

- Copier coller ce répertoire modifié dans le répertoire « libraries » du logiciel Processing. Au lancement de Processing, on doit retrouver la librairie Voce :

- Ensuite, on va créer un fichier de « grammaire » basique à utiliser pour la reconnaissance vocale. Pour cela, créer un fichier texte avec le contenu suivant :
/**
* JSGF Test Grammar file
*/
grammar Test;
public <TEST> = (hi | one | two | ok) * ;
- Enregistrer ce fichier dans un répertoire nommé « grammar » dans le répertoire de la librairie voce en le nommant « test.gram » :

Essai de Simple Speech Recognition :
- Lien utile : http://www.bryanchung.net/?p=208
- Librairie :
Articles similaires:
- ARToolkit avec Processing
- http://web.archive.org/web/20210804223007/http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ATELIERSPYDUINOMultimediaVoixReconaissance
- GLAP-Bot : Le Gnu/Linux Arduino Processing – Bot.
- Programmer le pcDuino : Voix : Tester la reconnaissance vocale (en mode connecté) !
- Processing Sons avec la librairie Minim : Lire un fichier sons
Articles Liés
- GLAP-Box : Programme de test : Tester la synthèse vocale dans un programme Processing
La synthèse vocale est un outil puissant qui permet aux développeurs de créer des applications…
- Processing pour le Web avec Processing JS
Processing est un langage de programmation open source qui permet aux développeurs de créer des…
- Processing GSVidéo + JavacvPro :
Processing est un langage de programmation open source qui permet aux développeurs de créer des…