Comment j'ai aidé ma fille à lire avec le machine learning
📖 👨👧
Vincent Ogloblinsky - @vogloblinsky
Vincent Ogloblinsky
Compodoc maintainer
Google Developer Expert on Web Technologies
Architecte logiciel / Référent Open-Source
Disclaimer
La suite n'est qu'une vision "technique" du machine learning du point de vue d'un développeur.
Je n'ai pas une formation de data-scientist. 😉
Certains sujets (optimisation du modèle par ex) ne sont pas encore traités.
Agenda
1.
Genèse de l'idée
2.
L'apprentissage de la lecture
3.
Le machine learning
4.
Le speech to text
5.
La construction du modèle
6.
Résultats et perspectives
Genèse de l'idée
Genèse de l'idée
Comme tout papa geek qui fait la lecture du soir :
- guider sa fille en décortiquant les syllabes de mots avec le doigt
- guider et corriger le déchiffrage oral
- travailler dans un contexte professionnel "traitant de la voix" (Orange - Data IA)
- imaginer qu'une application basée sur un moteur "speech to text" adapté + une bonne dose d'interactivité
- faire une veille "sectorielle" et se rendre compte que ça n'existe pas
Bingo ! Nouveau défi technique en poche pour le papa geek 😀
Genèse de l'idée
Aide à la lecture
Application web
🗣️
Voix d'enfant
Machine learning
Speech to text
Definition of "ready"
Imposons-nous quelques contraintes techniques en +
100% technologies "web"
- JavaScript
- WebGL et/ou WebAssembly
Offline & privacy by design
- aucun appel API possible
- aucune identification de l'enfant
L'apprentis-sage
de la lecture
L'apprentissage de la lecture
Processus en 7 étapes
1 - La conscience des sonorités à l’oral
2 - Le prise de conscience du lien entre l’oral et l’écrit
3 - La découverte de l’alphabet composé de 26 lettres
4 - Comprendre l’association « sons et lettres »
5 - Comprendre la fusion syllabique
6 - Reconnaître les mots
7 - Comprendre les textes
La fusion syllabique
"château"
ch ça fait "chhh"
Habileté mentale de synthèse : réunir son-parole d'une consonne et son-parole d'une voyelle
/p/ et /a/ → pa
L'enfant a besoin de savoir que la langue est segmentée en mots et aussi en segments sonores plus petits : les phonèmes et les syllabes (fusion de phonèmes)
a ça fait "aa"
t ça fait "ttt"
eau ça fait "ooo"
Richesse du "français"
26 lettres dans l'alphabet
36 phonèmes
voyelles : [a] (table, patte), [é] (éléphant, parler), [o] (bonnet, chaud), ...
semi-voyelles : [J] (fille, rail), ...
consonnes : [b] (billets, abbé), [g] (gâteau, aggraver), ...
190 graphèmes
[o] : o, au, eau
[k] : c, qu (coque)
Le machine learning
L'IA chez Orange
L'IA chez Orange
Le machine learning
Sous-catégorie de l' "Intelligence Artificielle"
Algorithmes découvrant des "patterns" (des motifs récurrents) dans des ensembles de données
4 étapes :
- sélectionner et préparer les données
- sélectionner l'algorithme à appliquer
- entraînement de l'algorithme (= modèle)
- utilisation (et amélioration du modèle)
Le machine learning
3 types principaux de machine learning
- apprentissage supervisé : données étiquetées - task driven (onéreux)
- apprentissage non-supervisé : données non étiquetées - data driven (recherche autonome de patterns)
- apprentissage par renforcement : l'algorithme apprendre de ses erreurs pour atteindre un objectif
Le "speech to text"
Le "speech to text"
Aussi appelé "Automatic Speech Recognition (ASR)"
Le "speech to text"
Le "speech to text"
Le "speech to text"
Le "speech to text" chez Orange
Le "speech to text" chez Orange
Service 1
Service 2
Service 3
Service 4
Service 5
Service 6
"Speech to text" et voix d'enfants
Assistants vocaux actuels "entrainés" avec des datasets "adultes"
Voix d'enfants plus riches "vocalement" parlant : aigu, canal vocal plus fin, cordes vocales plus petites; bref ils "grandissent"
Spectralement plus riche
Datasets de voix faibles
Construction du modèle
Construction du "modèle"
2 approches possibles : "de zéro" ou par "transfer learning"
- de zéro :
Avantage :
- contrôle total du modèle
Inconvénient :
- nécessite beaucoup de données
- transfer learning :
Avantage :
- bénéficie d'un apprentissage initial du modèle
Inconvénient :
- maitrise moins forte du modèle
Construction du "modèle"
2 approches possibles : "de zéro" ou par "transfer learning"
Transfer learning
Transfer learning
Sound classification
Cas d'usage plus "simple" qu'un ASR
Construction du "modèle"
🔘 Speech commands dataset (www.tensorflow.org/datasets/catalog/speech_commands)
- proposé par Google en 2017
- 65000 sons de 1s de 30 mots courts prononcés par des milliers de personnes
🔘 Utilisation de Tensorflow comme framework de Machine Learning
🔘 "Entrainement" en local (Python) puis "export"
Tensorflow
Développé par Google Brain
Sorti en 2017 en v1.0.0 - (current 2.8.0)
Tensorflow
Tensorflow.js
Utilise le GPU et les APIs WebGL "under the hood"
Collecte de données
Interface web de collecte de données
- jeu simple de syllabes
- réception de fichiers wav
- aucune information collectée sur l'enfant (âge, sexe)
Préparation des données
Interface web de nettoyage des données
- un son par syllabe par enfant
- raccourcissement à 1s
- nettoyage des sons parasites (euh, ...)
+ augmentation (variation du pitch)
Entrainement du modèle
1. Séparation des données d'entrainement
80% pour l'entrainement
10% pour la validation interne de Tensorflow
10% pour les tests
3. Chargement du modèle de base
2. Inspection de quelques spectrogrammes
Entrainement du modèle
4. Freezing de toutes les couches du modèles sauf la dernière
for layer in model.layers[:-1]:
layer.trainable = False
model.compile(optimizer="sgd", loss="sparse_categorical_crossentropy", metrics=["acc"])
Entrainement du modèle
Print des informations des couches
Entrainement du modèle
5. Entrainement : ~ 5min
Entrainement du modèle
6. Contrôle de la fonction de perte
Ecart entre les prédictions réalisées par le réseau de neurones et les valeurs réelles des observations utilisées pendant l’apprentissage
Itération
Loss
Entrainement du modèle
7. Contrôle de la précision
Elle mesure l’efficacité d’un modèle à prédire correctement à la fois les individus positifs et négatifs.
Itération
Accuracy
Entrainement du modèle
8. Affichage de la matrice de confusion
Entrainement du modèle
8. Contrôle avec des fichiers de tests complémentaires (labellisés)
Export du modèle
# Convert the model to TensorFlow.js Layers model format.
tfjs_model_dir = "./thot-model-tfjs-1"
tfjs.converters.save_keras_model(model, tfjs_model_dir)
# Create the metadata.json file.
metadata = {
"words": list(commands),
"frameSize": model.input_shape[-2],
"generated_at": now.strftime("%Y-%m-%d-%H:%M:%S")
}
with open(os.path.join(tfjs_model_dir, "metadata.json"), "w") as f:
json.dump(metadata, f)
4.1 Mo
1.6 Mo
Import en JavaScript du modèle
@tensorflow-models/speech-commands : package JavaScript de pilotage du modèle
import * as tf from '@tensorflow/tfjs-core';
import * as tfl from '@tensorflow/tfjs-layers';
import * as speechCommands from '@tensorflow-models/speech-commands';
const recognizer = speechCommands.create(
'BROWSER_FFT',
null,
'http://test.com/my-audio-model/model.json',
'http://test.com/my-audio-model/metadata.json'
);
Utilisation en JavaScript du modèle
Ecoute en continu
API getUserMedia
setInterval
~ 1s
Récupération des fréquences audio
Creation du spectrogramme
Envoi au modèle Tensorflow
Récupération des prédictions
Résultats et perspectives
Démo : syllabe
Démo : mot syllabe par syllabe
Démo : mot à mot
Perspectives
Scaling du modèle avec crowdsourcing
Couche d'adaptation côté application : correction, guidage
Détection de la dyslexie phonologique
Gamification du parcours "enfant"
Customisation du modèle à la voix de l'enfant (on-device)
Bilan
Super aventure technique
Domaine ML passionnant et qui s'enrichit chaque jour (OpenAI, etc)
Approche test, fail & learn
Ressource
Merci pour votre attention !
Des questions ?
Slides : bit.ly/3uBPDYR
Crédit photos - Unsplash.com
Un feedback ? 👉🏻 C'est par ici
Comment j'ai aidé ma fille à lire avec le machine learning
By Vincent Ogloblinsky
Comment j'ai aidé ma fille à lire avec le machine learning
- 3,641