Vous n'avez pas encore de notification

Page d'accueil

Options d'affichage

Abonné

Actualités

Abonné

Des thèmes sont disponibles :

Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !
Mozilla DeepSpeech 0.6 : de vastes gains de performances

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.

22 commentaires
Avatar de dylem29 INpactien
Avatar de dylem29dylem29- 09/12/19 à 09:25:11

Concrètement, ça apportera quoi? Je ne sais pas si l'outil de Mozilla est beaucoup utilisé.

Avatar de Mihashi Abonné
Avatar de MihashiMihashi- 09/12/19 à 10:51:28

Qu'il soit plus souvent utilisé ? :transpi:

Mais c'est une question que je me suis posé, c'est utilisé quelque part déjà ou c'est juste en préparation ?

Avatar de M'enfin ! INpactien
Avatar de M'enfin !M'enfin !- 09/12/19 à 11:36:57

Il paraît qu'Iron Man a décidé de migrer vers DeepSpeech pour son Jarvis.

Avatar de rson INpactien
Avatar de rsonrson- 09/12/19 à 12:53:33

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).

Édité par rson le 09/12/2019 à 12:53
Avatar de tazvld Abonné
Avatar de tazvldtazvld- 09/12/19 à 13:57:09

dylem29 a écrit :

Concrètement, ça apportera quoi? Je ne sais pas si l'outil de Mozilla est beaucoup utilisé.

En gros, c'est un Speech-to-text libre. Il est entièrement entraînable sur n'importe quel base de donnée (tu peux même faire ta propre base de donnée de son pour qu'ils apprennent à reconnaître spécifiquement ta façon de parler). Je sais que la base de donnée de Modzilla contient du français, mais je ne sais pas si c'est utilisé (j'ai pas regardé cette partie du code). Cependant, je vois qu'ils ont un outils pour importer une BDD pour du mandarin.

rson a écrit :

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).

En gros c'est ça.

Sinon, j'ai un peu lu le code. Petit détail, ça devrait pouvoir tourner avec Tensorflow 1.4, 1.5 mais ont fait un boulot pour le migrer vers Tensorflow 2.0 en mode Legacy.

L'autre difficulté pour lire ce code, c'est qu'ils ont fait mixer du tensorflow bas niveau, des partie de bibliothèque plus haut niveau (tf.nn) et je crois que j'ai vu du contrib passer aussi. Or, pour la partie réseau de neurone, la bibliothèque Keras simplifie grandement le taf surtout qu'une version spécialement adapté est directement intégré dans Tensorflow (tf.keras)
Enfin, la doc est un peu chiche, beaucoup de fonctions ne sont pas documenté, il faut un peu lire le code, les commentaire pour deviner ce qu'elle fait.

Bon, sinon, ce que fait le code :

  • input du réseau de neurone : le spectre du son en fonction du temps (il faut voir ça comme une séquence 1-D de vecteur)
  • 3 couches de convolution. En gros, c'est des truc qui travaille sur une fenêtre flottante, ici la fenêtre est selon l'axe du temps seulement.
  • un Long Short Term Memory (j'ai pas vu si c'était bidirectionnel cependant, j'imagine que oui). Ca, ça permet de travailler sur l'intégralité de la séquence, ça garde une mémoire de ce qui a déjà été lu (dans le cas du bidirectionnel, la séquence est aussi passé à l’envers, le futur devient le passé : on sais ce qui s'est passé avant, mais aussi ce qui va se passé).
  • 1 couche de convolution.
  • un softmax. Comme son nom l'indique, ça a tendance à fortement augmenter la valeur maximal d'un vecteur vis à vis du reste (et la somme des valeurs du vecteur vaut 1)
  • sortie : séquence 1-D de la même taille que l'input encodant le phonème
    De là, la séquence de sortie est ensuite convertie en une séquence de mots les plus probables.

Selon moi, l'approche est simple et comme l'article de référence, date de 2014. Ils ont le mérite de proposer leur code, avec des programmes fonctionnels, et rien n’empêche (à part la doc) d'utiliser les outils à coté pour faire son propre modèle.

Edit : aujourd'hui, on a tendance à utiliser du NN du début jusqu'à la fin, ici, la dernière partie serait plutôt remplacé par une autre NN. Je pense à un truc comme un mécanisme d'attention par exemple.

Édité par tazvld le 09/12/2019 à 14:01
Avatar de Okki Abonné
Avatar de OkkiOkki- 09/12/19 à 14:08:45

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.

Avatar de brazomyna INpactien
Avatar de brazomynabrazomyna- 09/12/19 à 15:27:38

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.

Avatar de lissyx Abonné
Avatar de lissyxlissyx- 09/12/19 à 16:50:25

tazvld a écrit :

En gros, c'est un Speech-to-text libre. Il est entièrement entraînable sur n'importe quel base de donnée (tu peux même faire ta propre base de donnée de son pour qu'ils apprennent à reconnaître spécifiquement ta façon de parler). Je sais que la base de donnée de Modzilla contient du français, mais je ne sais pas si c'est utilisé (j'ai pas regardé cette partie du code). Cependant, je vois qu'ils ont un outils pour importer une BDD pour du mandarin.

En gros c'est ça.

Sinon, j'ai un peu lu le code. Petit détail, ça devrait pouvoir tourner avec Tensorflow 1.4, 1.5 mais ont fait un boulot pour le migrer vers Tensorflow 2.0 en mode Legacy.

L'autre difficulté pour lire ce code, c'est qu'ils ont fait mixer du tensorflow bas niveau, des partie de bibliothèque plus haut niveau (tf.nn) et je crois que j'ai vu du contrib passer aussi. Or, pour la partie réseau de neurone, la bibliothèque Keras simplifie grandement le taf surtout qu'une version spécialement adapté est directement intégré dans Tensorflow (tf.keras)
Enfin, la doc est un peu chiche, beaucoup de fonctions ne sont pas documenté, il faut un peu lire le code, les commentaire pour deviner ce qu'elle fait.

Bon, sinon, ce que fait le code :

  • input du réseau de neurone : le spectre du son en fonction du temps (il faut voir ça comme une séquence 1-D de vecteur)

  • 3 couches de convolution. En gros, c'est des truc qui travaille sur une fenêtre flottante, ici la fenêtre est selon l'axe du temps seulement.

  • un Long Short Term Memory (j'ai pas vu si c'était bidirectionnel cependant, j'imagine que oui). Ca, ça permet de travailler sur l'intégralité de la séquence, ça garde une mémoire de ce qui a déjà été lu (dans le cas du bidirectionnel, la séquence est aussi passé à l’envers, le futur devient le passé : on sais ce qui s'est passé avant, mais aussi ce qui va se passé).

  • 1 couche de convolution.

  • un softmax. Comme son nom l'indique, ça a tendance à fortement augmenter la valeur maximal d'un vecteur vis à vis du reste (et la somme des valeurs du vecteur vaut 1)

  • sortie : séquence 1-D de la même taille que l'input encodant le phonème
    De là, la séquence de sortie est ensuite convertie en une séquence de mots les plus probables.

    Selon moi, l'approche est simple et comme l'article de référence, date de 2014. Ils ont le mérite de proposer leur code, avec des programmes fonctionnels, et rien n’empêche (à part la doc) d'utiliser les outils à coté pour faire son propre modèle.

Edit : aujourd'hui, on a tendance à utiliser du NN du début jusqu'à la fin, ici, la dernière partie serait plutôt remplacé par une autre NN. Je pense à un truc comme un mécanisme d'attention par exemple.

(Disclaimer : je bosse dessus)

T'as plus ou moins raison. Pour le français, j'ai commencé à bosser sur un modèle français, mais Common Voice ne contient pas encore assez de données ni de variété pour être utilisable seul. Le modèle est encore très exéprimental.

Côté TensorFlow, oui, c'est r1.14, faut qu'on passe sur r1.15 maintenant que v0.6.0 est sortie. On a préparé des trucs pour r2.0, mais ça va prendre du temps avant de migrer.

Effectivement, on mélange des trucs hauts et bas niveau et contrib, parce que tout n'était pas forcément existant quand on a commencé, et/ou que Keras permet pas forcément tout ce qu'on veut.

Côté doc, oui, on a commencé à sérieusement remanier qu'après la v0.5.1 notamment suite à des feedbacks pendant des workshops. La doc sur le réseau est plus complexe à faire, et idéalement oui pour le moment faut se plonger dans le code. Encore qu'on a normalement quand même les grandes lignes sur readthedocs. Après, des bugs / PRs sur Github avec des points d'incompréhensions qui soient bien explicités, on prends, pour améliorer la doc.

Avatar de lissyx Abonné
Avatar de lissyxlissyx- 09/12/19 à 16:53:45

brazomyna a écrit :

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.

C'est difficile de donner une réponse, mais avec un peu de travail y'a pas de raison que ça ne marche pas. Un vocabulaire limité, on arrive assez facilement à avoir de bons résultats. J'avais expérimenté ça y'a un moment déjà, on a aussi des contributeurs qui nous ont fait des retours positifs (notamment un robot contrôlé à la voix).

Quant aux benchmarks, y'en a, mais faut faire attention, les jeux de données de tests peuvent être très biaisés et peu représentatifs d'une utilisation « finale » (avec du bruit, avec des micros pourris, etc). Ếtre plus robuste à du son dégradé on y travaille.

Avatar de lissyx Abonné
Avatar de lissyxlissyx- 09/12/19 à 16:58:12

Okki a écrit :

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.

Absolument, et toutes les bonnes volontés sont les bienvenues, pas uniquement pour s'enregistrer, mais aussi pour :

  • étendre le jeu de texte (via Sentence Collector)
  • valider des enregistrements (dans toutes les langues que vous maîtrisez, pas uniquement le français)
  • s'enregistrer dans toutes les langues que vous maîtrisez, la diversité des accents c'est important

Les statistiques sur la première release oficielle de Common Voice montrent aussi un gros déséquilibre dans les genres (72% masculin vs 7% féminin), donc il reste beaucoup de progrès à faire pour débiaiser les données et assurer une représentativité meilleure.

Il n'est plus possible de commenter cette actualité.
Page 1 / 3