SARAH: un client Oxford pour Raspberry Pi comme Alexa ?

J’ai rapidement essayé de combiner plusieurs technos afin de réaliser une version expérimentale d’un client SARAH utilisant Microsoft Oxford pour la reconnaissance vocale. En théorie ce client devrait pouvoir tourner sur un Raspberry Pi (modulo quelques ajustements)

Microphone

Problème :

La capture d’un flux audio de manière cross-platforme n’est pas simple. NodeJS manipule très peu les flux audio.

Solution :

Le petit utilitaire SoX est une boite à outil de l’audio un peu comme FFmpeg pour la vidéo. Il est capable de capturer un flux audio de parole entre 2 silences. Je ne maîtrise pas toutes les options mais le résultat semble assez satisfaisant avec mon microphone.

Microsoft Oxford

Problème :

La reconnaissance vocale « speech 2 text » en français nécessite des algorithmes de deep learning hébergé dans le cloud. C’est le cas de SIRI, Google Now, Alexa, Cortana.

Solution :

Le projet Oxford développé par Microsoft est le service de reconnaissance vocale utilisé par Cortana. C’est une alternative à Google avec la possibilité de faire 1000 req/mois gratuitement.

Soundex

Problème :

Une fois l’audio converti en texte il faut comprendre la sémantique de cette chaîne de caractère. Et en français c’est d’autant plus compliqué. Oxford propose le projet LUIS mais qui me semble assez complexe.

Solution :

En attendant de tester LUIS, je fais une conversion du texte en sonorité avec l’algorithme Soundex adapté au Français. Cela permet d’éliminer toutes les tournures de mot. Par exemple Quoi ? deviendra KOI.

Levenshtein

Problème :

Enfin même si la phrase est ultra simplifiée et nettoyée il faut toujours la comprendre !

Solution :

J’utilise la distance de Levenshtein pour rechercher une phrase (parmi un ensemble de grammaire) qui soit la plus proche de celle prononcée.

Conclusion

Ca semble bien marcher sous windows, il faudrait tester un SoX sous Raspberry Pi. Les sources sont ici:
https://github.com/JpEncausse/SARAH-Client-NodeJS

Mais il reste un gros problème… toutes les phrases sont balancées à Microsoft Oxford alors qu’il faudrait tester avant, localement un mot clef comme « Hey Cortana » ou « Ok Google ».

Ca s’appel Keyword Spotting et c’est la question que j’ai posé à Microsoft (si vous voulez faire +1). Visiblement Google embarque un réseau de neurones entraîné sur 40.000 samples …

Ca doit être la raison pour laquelle ce Tuto d’Alexa (qui maintenant marche sur Raspberry Pi merci Korben) nécessite un bouton physique pour lui parler… pas top !

Un compte sympa à suivre: David Isbitski. Malheureusement Amazon ne recherche pas d’évangéliste en France 🙁 Peut-être quand elle parlera Français ! Ne ratez pas l’article de Domadoo et Stuffi #BringEchoToFrance

5 réflexions sur “SARAH: un client Oxford pour Raspberry Pi comme Alexa ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.