Mozilla DeepSpeech 0.6 : de vastes gains de performances
Le 09 décembre 2019 à 09h04
2 min
Sciences et espace
Sciences
DeepSpeech est un ensemble de moteurs de type speech-to-text et text-to-speech, permettant donc la reconnaissance ou la synthèse vocale. La nouvelle mouture, sortie en fin de semaine dernière, apporte des gains très significatifs de performances.
L’un des plus gros changements est le passage à TensorFlow Lite, pour rappel une version réduite de TensorFlow dédiée aux appareils embarqués et mobiles. Cette transition et les optimisations apportées offrent des gains majeurs :
- Le paquet DeepSpeech est passe de 98 à 3,7 Mo
- Le modèle de traitement de l’anglais passe de 188 à 47 Mo
- La consommation mémoire est divisée par 22
- Le temps de démarrage est divisé par 500
Les performances du modèle sont telles que Mozilla n’hésite plus à dire qu’il fonctionne « plus vite qu’en temps réel », en ne se servant que d’un seul cœur sur un Raspberry Pi 4. Le taux d’erreur en reconnaissance vocale est actuellement de 7,5 %.
Les deux principaux sous-systèmes sont maintenant capables de streaming, annulant le besoin d’introduire des algorithmes de détection des silences. Les transcriptions sont fournies en moyenne 260 ms après la fin de l’audio, 73 % plus rapidement qu’avant l’introduction du streaming.
Le passage à TensorFlow 1.14 fournit également son lot d’améliorations, par exemple une division par 2 (au maximum) du temps d’entrainement des modèles. Ces derniers peuvent être pleinement entrainés et déployés à des taux d’échantillonnage différents (8 kHz pour les données téléphoniques par exemple), le décodeur exposant des métadonnées pour chaque caractère dans la transcription.
DeepSpeech possède en outre ses propres paquets pour Windows, via .NET, Python, JavaScript ou C. Pour le premier, le paquet est disponible depuis la galerie NuGet, directement depuis Visual Studio. DeepSpeech reste compatible avec les plateformes précédentes, Android, Linux et macOS.
- Télécharger DeepSpeech 0.6 (GitHub)
Le 09 décembre 2019 à 09h04
Commentaires (22)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 09/12/2019 à 09h25
Concrètement, ça apportera quoi? Je ne sais pas si l’outil de Mozilla est beaucoup utilisé.
Le 09/12/2019 à 10h51
Qu’il soit plus souvent utilisé ? " />
Mais c’est une question que je me suis posé, c’est utilisé quelque part déjà ou c’est juste en préparation ?
Le 09/12/2019 à 11h36
Il paraît qu’Iron Man a décidé de migrer vers DeepSpeech pour son Jarvis.
Le 09/12/2019 à 12h53
Si ça peut être une base pour un outil speech-to-text libre pour les dérivés d’Android qui n’ont pas d’outils Google pour ça… Ce serait formidable. Ca manque actuellement (en français en tout cas).
Le 09/12/2019 à 13h57
Le 09/12/2019 à 14h08
Tout le monde peut également contribuer à Common Voice, autre projet Mozilla qui permet de fournir un jeu de données dans les différentes langues pour entraîner DeepSpeech.
Le 09/12/2019 à 15h27
existe-t-il des benchs qui comparent objectivement le taux de réussite d’un google home vs alexa vs mozilla vs cortana par exemple ?
j’aimerais beaucoup migrer ma domotique vers de la reco vocale non cloudesque, mais si c’est pour avoir un taux d’erreur trop élevé, c’est mort d’avance.
ex: pour avoir testé il y a 2 ans environ, la reco vocale de cortana (via le projet S.A.R.A.H et les micros d’un kinect) arrivait à être moins bonne sur des phrases prédéfinies que mon google home avec des phrases non prédéfinies.
Le 09/12/2019 à 16h50
Le 09/12/2019 à 16h53
Le 09/12/2019 à 16h58
Le 09/12/2019 à 21h55
Je suis surpris que Mozilla ne pousse pass ses nouvelles tech a etre codees en Rust..?
Le 10/12/2019 à 10h03
Le 10/12/2019 à 11h15
Le 10/12/2019 à 14h17
En vrai même, c’est ce que KenLM essaie de faire. Si tu regardes, il est utilisé dans la phase de décodage. KenLM apporte la connaissance de « la langue » pour amener justement du contexte et faire en sorte de le décodage CTC soit pondéré par cette connaissance de la langue. Ça pour le coup c’est encore moins documenté, mais c’est dans
native_client/ctcdecode/
si tu veux voir.Le 10/12/2019 à 14h35
Je comprend bien.
Au vu du code, je vois bien que ça prendrait beaucoup trop de temps pour passer à un truc plus proche de Keras. Et j’imagine que le but est avant tout de faire quelque chose de fonctionnel, d’utilisable, donc ce n’est pas forcément une priorité.
Je connais bien les galères de TF. Potentiellement, de ce que j’ai vu de TF2, avec l’eager execution, ça devrait simplifier certaine chose pour débugger mais aussi créer des champs de mine pour débutants (donc à manipuler avec précaution).
De mon coté, je trouve la base intéressante et c’est vrai que j’ai bien envie d’essayer mes propres modèles. Parce bon, le plus chiant, ce n’est pas créer un modèle, c’est tout ce qui est autour : charger la BDD, la preprocesser…. une fois que tu as les datas d’input et les sorties, que tout est bien découpé en 3 dataset, écrire un modèle c’est la partie facile. Après plusieurs parcours de de DeepSpeech.py, je commence à voir comment ça fonctionne (c’est la partie qui m’interresse). Maintenant, il me faut trouver le temps.
Le 10/12/2019 à 15h59
Absolument, c’est bien ça notre objectif. Si tu trouves du temps, tu es plus que le bienvenu :)
Le 10/12/2019 à 19h20
Vu la dose de
Le 10/12/2019 à 19h45
Moi, je vais le faire.
(Oui, je sais, c’est extrêmement arrogant dit comme ça, mais je sens que je ne vais jamais m’y mettre si je ne prends pas ce genre d’engagement public !)
Le 11/12/2019 à 07h07
Le 11/12/2019 à 10h19
Déjà répondu, mais en effet, le code CPP semble majoritairement venir d’autres projets intégrés à DeepSpeech, mais ne sont pas spécifiquement développé à la base pour ça. J’ai l’impression que le seul code CPP original sert pour porter l’outil en tant que bilbiothèque dans d’autre langage.
Je rajouterais que Tensorflow peut être vu comme un langage à part entière. En effet, la bibliothèque sert avant tout à décrire un graph de calculs (computational graph : un graph ayant pour noeud des fonctions et pour arrêtes les sorties des fonctions) que tensorflow va compiler et exécuter. Python ici ne sert que de support pour décrire le graph et géré l’environnement de l’exécution. Du coup, ici, une partie du code python est en faite juste un support pour décrire un autre code.
Le 11/12/2019 à 10h51
J’arrive après la bataille mais vu que tu bosse dessus tu connais des outils qui utilisent cet api ?
Je cherche a convertir des discours en texte pour un projet, donc soit je créer moi même une appli ou tu lance un fichier son et il sort un texte (plus qu’a corriger) soit je trouve une appli qui le fait déjà.
En prime je balancerais les sons et textes libre dans la base par la suite (après correction)
Le 11/12/2019 à 17h34