Un petit “tempêtage” de tête ?
lundi 13 octobre 2014 à 20:00Étant donné le nombre de questions à ce sujet dans les commentaires, je me disais qu’il pourrait être intéressant de profiter de la cohorte d’experts que j’ai la chance de compter dans mes lecteurs pour faire un ptit ‘tempetage de tête’ (ou brainstorming si vous y tenez) à propos des solutions de reconnaissance/synthèse vocales existantes et applicables dans un projet informatique
(entre autres, yana).
Ça devrait tout du moins me permettre de centraliser un peu mes recherches et constats concernant cette techno encore peu accessible aux gueux que nous sommes malgré les stupéfiants (mais réservés) progrès de google, apple et microsoft en la matière.
Voilà mon “état de l’art” sur le sujet (oui, je me la joue académique cette semaine)
Besoin
J’ai besoin d’une librairie de reconnaissance et de synthèse vocale intégrable dans une solution domotique (yana)
Cette librairie doit être :
1 – Portable sur 3 minimum : debian (raspbian), windows, macOs
2 – Illimitée en nombre de requêtes, permettre l’écoute/la parole continue
3 – Si possible ne pas nécessiter le web
4 – Être gratuite ou low cost avec un cout ponctuel et non cyclique
5 – Être performante en terme de compréhension de la phrase énoncée, même sur un micro non spécialisé
6 – Ne pas être limitée en termes, en mots, en nombres d’expressions, ne pas être dépendant d’un fichier de phrases “statiques”
7 – Prendre en charge la langue française
Reconnaissance vocale
Voyons ce qui existe aujourd’hui :
- Windows speech recognition API : Remplis tous les points sauf le n°1 (disponible sous windows vista et supérieure uniquement), sans ça se serait la solution parfaite
- Google speech API : Remplis tous les points sauf le 2 (il faut une clé, c’est limité a 50 requêtes par jours) et le 3 (api passant par le web)
- Sphinx/PocketSphinx : Ne remplis pas le n°6 : utilise un système de modèle acoustique, laborieux, lourd, statique. Il en existe un en français mais limité a 10/20 mots non pertinents.
- Julius : Non testé
- Simon : Non testé
- SIRI api : ne remplis pas les point n°4 et n°3, j’ignore si il existe une limite de requetes quotidienne.
- Arduino Easyvr : ne remplis pas les point 6 et 1 : llimité en nombres de mots et installable sur arduino uniquement.
- Android speech : Respecte toutes les conditions sauf la n°1 : dispo uniquement sous android
- Voce (voce.sourceforge.net) : utilise pocketshpinx /sphinx, donc même problème question francophonie et dynamisme des phrases
- API Wit : https://wit.ai/, fonctionne très bien, bonne pertinence, même pour le français, mais api htp hyper lente (environ 7secondes de retour pour une phrase courte)
Pour répondre direct à la question qui revient régulièrement dans les commentaires :
Non, jasper.io (et aussi LISA) n’est pas une solution de reconnaissance vocale mais un simple CMS qui utilise PocketSphinx et donc qui est inapplicable dans notre système domotique a moins de parler couramment anglais (avec la bonne intonation sinon c’est mort) à votre maison.
Le plus gros HIC étant que même en combinant les librairies, on n’arrive pas à quelque chose de concluant dans le monde linux.
Synthèse vocale
De ce côté là c’est déjà plus simple bien que pas encore parfait:
- Google speech : en bricolant un peu on arrive a obtenir la jolie voix de google en synthèse vocale, mais on est jamais certains que google verrouille pas ce service sous peu.
- Espeak : Respecte toutes les conditions mais à une voix de canard éraillé très vites agaçante
- Windows text to speec API : Respecte toutes les conditions sauf la n°1 : dispo uniquement sous windows
- Voxygen : Voix magnifiques ultra réalistes, mais visiblement pas d’api/libs à disposition des simples mortels, même en payant.
- Android speech : Respecte toutes les conditions sauf la n°1 : dispo uniquement sous androïde
Pour la synthèse je suis actuellement partis sur le combo suivant pour yana4All :
Si l’OS est windows, on prend l’api windows (locale, performante, dynamqieu etc…) sinon…
On utilise l’api google speech dans le cas ou l’on a bien internet, sinon…
On utilise espeak qui est moche mais qui a le mérite de fonctionner gratuitement partout et en restant locale.
Cette parti est déjà implémentée à yana4All.
Méthodes alternatives
– Trouver une machine pouvant faire tourner Windows a bas coût (à trouver):
– Microsoft Sharks Cove à l’air de faire tourner du windows 8.1, mais elle coute dans les 300$
– hummingboard, bananapi,ne semblent pas pouvoir faire tourner windows
– beaglebones dispose visiblement d’un “Windows Embedded BSP” mais j’ignore si ça embarque ce qu’il faut pour de la reco
– La MinnowBoard MAX semble aussi pouvoir faire tourner Windows mais 178€, 81€ pour l’entré de gamme qui a l’air violemment bridée
– Installer android sur le pi ou trouver une machine low cost capable de faire tourner au minimum android 4.2 (reco locale) et déporter yana sur ce système pour bénéficier du nouveau sdk local d’android pour la reconnaissance (Si android tourne bien sur le pi SI on peux y placer la version qui embarque le sdk locale de reco/synthèse et SI on peux bien gérer les gpio et autres prérequis de yana) :
– UGOOS UM2 à l’air adaptée mais 75€ quand même ça pique un peu…
– Trouver un webservice gratuit fiable et rapide (la belle utopie)
– Utiliser une interface gestuelle plutôt que vocale (kinects, leapmotion, thalmic myo etc…)
– Trouver un moyen de faire fonctionner windows speech ou dragon naturally speaking sur linux via wine ou wineHQ
– Ajout de jerome : Enregistrer les phrases a reconnaître et faire une comparaison entre deux fichiers mp3 (la phrase a reconnaître et la phrase énoncée) (cf : http://en.wikipedia.org/wiki/Acoustic_fingerprint pour la comparaison par empreintes acoustiques)
– Ajout de YannXplorer: Acheter un carte Udoo (84€) qui permet d’installer android 4.3 avec la reco vocale locale, bonne solution mais encore trop cher
– Ajout de raphkun: Acheter un carte minnowboard-max(99$) qui permet d’installer windows et sa reco vocale, même argument que pour la udoo.
– Ajout de “ah merde j’ai oublié le pseudo et je retrouve pas le commentaire”:On peux gruger voxygen en chopant le stream audio depuis l’url : http://www.voxygen.fr/sites/all/modules/voxygen_voices/assets/proxy/index.php?method=redirect&text=test&voice=Electra&ts=14030902642 Ca fonctionne mais uniquement jusqu’au jour ou voxygen verrouillera le service.
Si vous avez des idées, questions, suggestions, insultes… pour faire avancer le schmilblick, c’est à vous de “tempêter du bulbe” dans les commentaires !