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)
Commentaires (22)
#1
Concrètement, ça apportera quoi? Je ne sais pas si l’outil de Mozilla est beaucoup utilisé.
#2
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 ?
#3
Il paraît qu’Iron Man a décidé de migrer vers DeepSpeech pour son Jarvis.
#4
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).
#5
#6
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.
#7
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.
#8
#9
#10
#11
Je suis surpris que Mozilla ne pousse pass ses nouvelles tech a etre codees en Rust..?
#12
#13
#14
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.#15
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.
#16
Absolument, c’est bien ça notre objectif. Si tu trouves du temps, tu es plus que le bienvenu :)
#17
Vu la dose de
#18
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 !)
#19
#20
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.
#21
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)
#22