Le Projet SARAH a pour objectif d’interfacer de la reconnaissance et synthèse vocale avec un système de domotique. L’idée étant de ne pas réinventer la roue mais d’utiliser les technos actuelles qui commencent à être matures. Le nom vient de la série TV Eureka dans laquelle une IA nommée SARAH (Self Actuated Residential Automated Habitat) contrôle un vieux bunker transformé en habitation.
Synthèse Vocale
Il existe de nombreux outils de synthèse vocale. Le plus performant s’appelle Loquendo. Son principe est de mélanger des enregistrements de voix avec de la synthèse vocale. En jouant sur l’intonation il est possible d’obtenir un rendu très réaliste.

Le soft est codé en C++ avec un portage en Java. L’appli java Director permet la construction de ses phrases plus simplement. Dans la pratique, j’ai eu beaucoup de mal à intégrer Loquendo dans Eclipse. Il faut configurer le projet pour utiliser des librairies natives et des options de sécurité avancées. Bref, après m’être battu un long moment, je suis parti sur la solution process externe (avec les joies de la gestion de l’encodage des caractères).
Pour obtenir un résultat sympa, il faut bien ajuster ses phrases.
- Certains mots étant anglais: « Recherche sur allociné le film Transformers »
- Certaines vocalisations étant étranges: « J’ai obtenu 1 résultat » le « 1 » est prononcé de manière étrange
- Certaines phrases plus simples: « J’ai trouvé » vs « J’ai obtenu »
- Il faut ensuite rajouter de l’âme: « {Voila!} j’ai trouvé 5 résultats {hum} voici la liste {respiration} … »
Au final, le résultat est sympathique, je regrette juste qu’il n’y ait pas plus de locutions utilisables dans mon cas d’usage. J’ai essayé de rentrer en contact avec la société afin d’obtenir plus d’informations sur le produit, tarif, licence développeur mais je n’ai eu aucune réponse … j’irai peut-être à la Vocal Expo de Paris pour les rencontrer.
Je surveille en parallèle le produit INVOX de la société Vocali qui propose une box basée sur Loquendo ASR et TTS pour faire de l’interaction avec des composants domotiques. Mais le produit est très cher, la version « light » (pour les particuliers) n’est pas encore disponible, et j’ai l’impression qu’il est difficile de se brancher avec le système.
Reconnaissance Vocale
Dans ce domaine il existe aussi de nombreux systèmes de reconnaissance vocale. Loquand propose ASR (Automatic Speech Recognition), mais je n’ai pas eu la possibilité de le tester.
Le produit « grand public » est Dragon Naturally Speaking de Nuance dont la qualité de reconnaissance est impressionnante. Mais l’inconvénient est son flou dans les versions: 9, 10, 11 … pro, home, … Bref, au final ce produit est trop end-user et ne permet pas de simplement faire: « <Recherche> [sur] <Allocine> XYZ » exécute le programme ABC avec la variable XYZ. (La version 10 permet des commandes avec variables XYZ mais pas de script).
Au final, je suis passé sur le système de reconnaissance vocale de Vista couplé à un éditeur de Macro. Le système est simple, gratuit avec une licence de Vista et capable d’exécuter des programmes avec paramètre.
Concrètement, je fais un simple wget sur l’URL de mon système domotique.
Domotique
Pour le système domotique, j’ai commandé une box IJenko. Je vais essayer de me connecter avec leur API REST afin de contrôler les composants. Vous trouverez plus de détails sur la société dans un précédent billet.
Pour la partie microphone, je continue à rechercher des informations, tests, … sur le produit Voice Tracker Array Microphone de Acoustic Magic.
Intelligence

J’ai choisi d’utiliser la plateforme Jalios JCMS pour développer l’intelligence du système.
Pour le moment, j’ai développé le plugin SARAH qui utilise une arborescence de Catégories (Sarah > Recherche > Allociné) pour retrouver les objets effectuant l’action.
J’ai crée un premier type JCMS WebHarvest qui:
- prend en entrée une Map de variables couplée à un script XML
- et en sortie fournit un String à vocaliser.
La librairie WebHarvest est un moyen très élégant d’aller chercher des informations sur le web. Son utilisation reste un peu étrange.
Conclusion
Ce petit POC (Proof of Concept) permet de valider que tous les élements se connectent bien entre eux. La prochaine étape sera de tester avec l’API IJenko et de trouver une machine « Vista » pas trop chère, silencieuse et basse consommation (je vais peut-être recycler un portable).



Répondre à Michael Annuler la réponse.