View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Reconnaissance vocale avec Processing

La reconnaissance vocale est un sujet qui attire spontanément, donnant envie de tester... D'autant que si on arrive à faire çà avec Processing, du coup çà ouvre des possibilités très intéressantes notamment en couplant çà avec Arduino... Je vous donne sur cette page les moyens d'y arriver...

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 :

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 :

Les autres librairies Processing de reconnaissance vocale disponibles trouvées sur le net :

Voilà, à ce stade, vous avez la vue d'ensemble des besoins... Toujours envie de vous coller ? Allez on continue...

Liens utiles

Voce (Reco vocale CMUSphynx + synthese vocale avec TTS) :

Procédure d'installation Voce

  • 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 V1.0;

/**
* 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 :