Après plusieurs semaines de travail, je me décide enfin à poster une petite «surprise». Enfin plutôt 2 surprises …
Le chemin est un peu long mais vaut la peine d’être suivi.
Alors commençons.
Remarques préliminaires :
a/ Cette «surprise» n’est pas multi-plateforme. Il vous faut une machine tournant avec un OS signé Bill.
b/ Il faut de la puissance pour faire de la reconnaissance vocale. Pour une fois votre CPU va sortir de sa sieste.
c/ Il est nécessaire de posséder un serveur local (1 PC qui tourne 24h/24 7J/7)
I/ OpenNabEn premier lieu, il faut pouvoir faire tourner OpenNab sur un serveur http hébergé sur une machine en local (cela ne fonctionne pas si OpenNab est installé chez un hébergeur)
Il faut donc installer un serveur http sur une machine locale. Pour cela, vous pouvez installer Wamp (qui encapsule un serveur apache et une base MySql) par exemple.
Ensuite, il vous faut installer OpenNab dans le répertoire www de ce serveur. Je vous renvoie aux instructions d’installation d’OpenNab.
Dans le fichier opennab.ini d’OpenNab, vérifier que les plugins «record_audio» et «simple_play» sont activés.
ATTENTION: Il est inutile d’aller plus loin tant qu’OpenNab ne «tourne» pas correctement en local sur votre machine avec votre lapin.
II/ SAPIVous aurez aussi besoin de SAPI sur votre machine avec une voix française (comme la voix gratuite virginie_dri40 de scansoft).
http://download.microsoft.com/download/1/2/2/12246417-CD66-4541-B32B-8CD18E92AAE7/RSSolo4French.zip
Installez donc cette voix et SAPI.
Nota : SAPI est présent en standard sur les OS de Bill depuis w2k je crois.
Nota 2 : Sous Vista je crois qu'ils ont tout changé et je ne peux pas garantir que cela fonctionnera (mais je pense que oui because compatibilité descendante).
III/ NaBBoT et Sphinx4nabsTéléchargez le fichier zip situé à l’adresse suivante: http://human.enemy.free.fr (attention le zip est très gros)
Extraire cette archive dans le répertoire «vl\plugins» d’opennab. Vous devriez avoir ensuite qq chose du genre:
Vl\plugins\Sphinx4nabs\+ des fichiers
Vl\plugins\Sphinx4nabs\lib etc
Vl\plugins\Sphinx4nabs\bin etc
Etc …
Editez maintenant le fichier «message_recu.bat»
- Code:
-
runurl.exe http://127.0.0.1:80/vl/api.php?sn=votreserialnumber&play=1
Remplacez votreserialnumber par votreserialnumber (lol)
Pour que cela puisse fonctionner il vous faut encore un runtime java comme Java 2 SDK, Standard Edition 5.0 ou plus. Cf la page de Sphinx pour + d'info http://cmusphinx.sourceforge.net/sphinx4/
Voilà, on y est …
Si vous avez survécu à tout ce bric à brac vous allez pouvoir utiliser 2 programmes avec votre Lapin : Sphinx4nabs et NaBBoT.
Surprise n°1 : Principe et présentation de Sphinx4nabsSphinx4nabs «surveille» en permanence le répertoire «\vl\plugins\files_recordaudio». Dès qu’un nouveau fichier audio arrive du lapin (à chaque fois que l’on appui sur sa tête et qu’on lui parle) on commence la séquence suivante :
Conversion du format audio natif du lapin vers du PCM 8kHz 16bits et copie du résultat sous le nom message8k.wav dans le répertoire «\vl\plugins\Sphinx4Nabs\bin»
Conversion du format audio natif du lapin vers du PCM 16kHz 16bits et copie du résultat sous le nom message.wav dans le répertoire «\vl\plugins\Sphinx4Nabs\bin»
Remarque : Je fais les 2 conversions car je ne sais pas encore avec certitude quel est la format qui donne les meilleurs résulats ensuite.
Une fois la conversion effectuée, Sphinx4nabs lance le fichier .bat «sphinx4nabs.bat»
Ce fichier .bat lance une reconnaissance vocale sur le fichier audio message8k.wav et place le résultat dans le fichier resultat.txt
Et pour finir dès qu’un nouveau fichier résultat arrive, il lance un dernier .bat (\vl\plugins\Sphinx4Nabs\message_recu.bat) qui via le plugin simple_play demande au lapin de jouer votre fichier audio numéro 1.
Cà c’est le «standard», tous ceux qui ont compris le principe sauront apporter les modifications qu’ils désirent.
Conclusion : Ce programme vous permet de construire de nouvelles commandes vocales pour votre lapin.
Remarque : Il y a encore beaucoup d’améliorations possibles mais j’en parlerai dans un autre post .
Surprise n°2: Principe et présentation de NaBBoTNaBBoT reprend les mêmes principes de base que Sphinx4nabs mais rajoute 2 nouvelles fonctionnalités : Un bot et du TTS (Text To Speech)
On reprend le même fonctionnement que Sphinx4nabs jusqu’à l’arrivée du fichier resultat.txt.
Ensuite, NaBBoT lit le fichier résultat. Le bot construit une réponse (ne pas oublier de sélectionner la voix française) en fonction de cette entrée et sauvegarde sa réponse dans le fichier : «vl\plugins\files_simpleplay\0\0\0\0\1.mp3».
Nota : En fait je triche, le fichier 1.mp3 c'est du PCM 1.wav que je renomme en 1.mp3. J'ai découvert par hasard que notre lapin savait lire du PCM (c'est à dire non compressé) et pas seulement du mp3.
Pour finir, NaBBoT lance message_recu.bat et le lapin vous lit la réponse.
D’autres explications suivront mais les «débrouillards» devraient pouvoir commencer à s’amuser.
Complément d'info 1:Le fichier Zip est très gros (221 Mo) car il inclut les modèles acoustiques de LIUM.
Je ne suis pas sur que l'hébergement actuel (un site perso chez free créer rapidement) soit très adapté pour les downloads.
Quelqu'un aurait-il une idée où je pourrai le mettre ?
Complément d'info 2:
Le langage aiml implémenté dans NaBBoT est fondé sur le "moteur" aiml de PASCALice. J'ai seulement commencé à rajouter les formats dates/heures de l'api de pandorabot et un tag <exécute> qui permet de lancer des applications.
J'envisage également de créer quelques tag supplémentaires pour gérer les oreilles et les Leds de nos lapins.
Mes templates aiml ne sont pas terribles (c'est du vite fait pour obtenir un résultat) mais libre à vous de les perfectionner...
Complément d'info 3 :Avec un lapin qui ping Opennab toutes les secondes et un C2D6600 aidé de 2Go de RAM pour le décodage Sphinx, j'obtiens des réponses de mon lapin environ 20 à 30 secondes après le relachement du bouton sur sa tête.
(C'est aussi fonction du dictionnaire et de la grammaire)
Complément d'info 4 :En terme de qualité de reconnaissance, il faut trouver la "bonne façon de parler" : assez fort et prêt du micro et paradoxalement assez vite.
Le ton toi être assez monocorde et avec peu d'espaces entre les mots.
Nota : dans une future version de NaBBoT, j'augmenterai le volume sonore du message lors de la conversion en PCM.
Nota 2 : Avec ma voix j'ai environ 2/3 des messages "simples" correctement reconnus.
Complément d'info 5 :Comme pour le moment je n'ai pas fait de plugin "tampon" entre OpenNab et le serveur de violet. Celui-ci continue de recevoir les messages et envoie (après NaBBot) des messages nous informant de son incompréhension.
Complément d'info 6 :avec la grammaire et le dictionnaire actuels (vous pouvez y apporter des modifications), le lapin peut répondre aux commandes suivantes :
qui es-tu ?
quel age as-tu ?
que sais-tu faire ?
donne moi l'heure
donne moi la date
donne moi la météo
bonjour
salut
coucou
a bientôt
au revoir
Pour finir ce post, je remercie les créateurs des softs suivants :
* Opennab
* Sphinx 4
* PASCALice
Et l’Université du Mans (LIUM) pour les modèles acoustiques en Français.
BR,
Human Enemy