importation de LinguaLibre, TrainingSpeech et Common Voice, avec mode compatible anglais
Avant de mettre à disposition, je vais continuer quelques vérifications, et m’assurer que le nécessaire est disponible dans les dépôts pour que ce soit reproductible.
Le modèle a été testé sur Android notamment. Côté qualité, il ne faut pas attendre un truc parfait. Le WER en fin d’entraînement est > 95%, et le CER au delà de 55%.
Le modèle de langue, construit à partir de Wikipedia, nécessite encore un peu de travail (je dois le regénérer avec un alphabet compatible avec l’anglais).
Il est aussi nécessaire d’articuler correctement et avec un volume sonore suffisant, sans aller trop vite.
Attention, ce premier modèle a été entraîné sans language model, si vous faites des essais avec les résultats seront incohérents.
EDIT: DeepSpeech v0.5.0 et ses checkpoints sont disponibles, j’ai donc validé la PR qui permet de faire du transfer-learning depuis l’anglais. Je suis encore en train de faire tourner un entraînement, je compte partager les modèles exportés + checkpoints d’ici peu.
C’est encourageant alors. Bravo.
En attendant notre modèle aussi.
1 Like
lissyx
((slow to reply) [NOT PROVIDING SUPPORT])
4
Merci, j’ai plus ou moins terminé https://github.com/Common-Voice/commonvoice-fr/pull/44, mais j’ai encore des essais à faire pour vérifier que j’obtiens bien le même résultat. Pour le moment, c’est construit à partir d’une branche de mon fork de DeepSpeech, je cherche une façon de faire le filtrage validate_label_fr qui soit souple et facile à modifier.
lissyx
((slow to reply) [NOT PROVIDING SUPPORT])
5
Il y a encore un comportement d’entraînement inadapté, que j’avais résolu l’autre fois : le loss augmente. J’ai peut d’avoir un petit bug qui traîne dans l’importation des données.
+ python -u DeepSpeech.py --alphabet_config_path /mnt/models/alphabet.txt --lm_binary_path /mnt/lm/lm.binary --lm_trie_path /mnt/lm/trie --feature_cache /mnt/sources/feature_cache --train_files /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_train.csv,/mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_train.csv,/mnt/extracted/data/cv-fr/clips/train.csv --dev_files /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv,/mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv,/mnt/extracted/data/cv-fr/clips/dev.csv --test_files /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_test.csv,/mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_test.csv,/mnt/extracted/data/cv-fr/clips/test.csv --train_batch_size 68 --dev_batch_size 68 --test_batch_size 68 --n_hidden 2048 --epochs 100 --learning_rate 0.000001 --dropout_rate 0.30 --lm_alpha 0.0 --lm_beta 0.0 --noearly_stop --display_step 0 --validation_step 1 --checkpoint_step 1 --checkpoint_dir /mnt/checkpoints/ --export_dir /mnt/models/ --export_language fra
WARNING:tensorflow:From /home/trainer/ds-train-fr/lib/python3.6/site-packages/tensorflow/python/data/ops/dataset_ops.py:429: py_func (from tensorflow.python.ops.script_ops) is deprecated and will be removed in a future version.
Instructions for updating:
tf.py_func is deprecated in TF V2. Instead, use
tf.py_function, which takes a python function which manipulates tf eager
tensors instead of numpy arrays. It's easy to convert a tf eager tensor to
an ndarray (just call tensor.numpy()) but having access to eager tensors
means `tf.py_function`s can use accelerators such as GPUs as well as
being differentiable using a gradient tape.
WARNING:tensorflow:From /home/trainer/ds-train-fr/lib/python3.6/site-packages/tensorflow/python/data/ops/iterator_ops.py:358: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /home/trainer/ds-train-fr/lib/python3.6/site-packages/tensorflow/contrib/rnn/python/ops/lstm_ops.py:696: to_int64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
WARNING:tensorflow:From /home/trainer/ds-train-fr/lib/python3.6/site-packages/tensorflow/python/training/saver.py:1266: checkpoint_exists (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.
Instructions for updating:
Use standard file APIs to check for files with this prefix.
I Restored variables from most recent checkpoint at /mnt/checkpoints/best_dev-585277, step 585277
I STARTING Optimization
Epoch 0 | Training | Elapsed Time: 0:15:33 | Steps: 1120 | Loss: 198.901285
Epoch 0 | Validation | Elapsed Time: 0:00:02 | Steps: 31 | Loss: 34.221434 | Dataset: /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv
Epoch 0 | Validation | Elapsed Time: 0:00:29 | Steps: 91 | Loss: 242.853168 | Dataset: /mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv
Epoch 0 | Validation | Elapsed Time: 0:00:14 | Steps: 65 | Loss: 139.231356 | Dataset: /mnt/extracted/data/cv-fr/clips/dev.csv
I Saved new best validating model with loss 172.248882 to: /mnt/checkpoints/best_dev-586397
Epoch 1 | Training | Elapsed Time: 0:15:39 | Steps: 1120 | Loss: 168.445158
Epoch 1 | Validation | Elapsed Time: 0:00:02 | Steps: 31 | Loss: 35.868865 | Dataset: /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv
Epoch 1 | Validation | Elapsed Time: 0:00:29 | Steps: 91 | Loss: 252.253984 | Dataset: /mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv
Epoch 1 | Validation | Elapsed Time: 0:00:14 | Steps: 65 | Loss: 144.695296 | Dataset: /mnt/extracted/data/cv-fr/clips/dev.csv
Epoch 2 | Training | Elapsed Time: 0:15:35 | Steps: 1120 | Loss: 158.498774
WARNING:tensorflow:From /home/trainer/ds-train-fr/lib/python3.6/site-packages/tensorflow/python/training/saver.py:966: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.
Instructions for updating:
Use standard file APIs to delete files with this prefix.
Epoch 2 | Validation | Elapsed Time: 0:00:02 | Steps: 31 | Loss: 37.718021 | Dataset: /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv
Epoch 2 | Validation | Elapsed Time: 0:00:29 | Steps: 91 | Loss: 259.248127 | Dataset: /mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv
Epoch 2 | Validation | Elapsed Time: 0:00:14 | Steps: 65 | Loss: 149.385020 | Dataset: /mnt/extracted/data/cv-fr/clips/dev.csv
Epoch 3 | Training | Elapsed Time: 0:15:39 | Steps: 1120 | Loss: 144.689475
Epoch 3 | Validation | Elapsed Time: 0:00:02 | Steps: 31 | Loss: 40.592877 | Dataset: /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv
Epoch 3 | Validation | Elapsed Time: 0:00:29 | Steps: 91 | Loss: 277.970247 | Dataset: /mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv
Epoch 3 | Validation | Elapsed Time: 0:00:14 | Steps: 65 | Loss: 160.652092 | Dataset: /mnt/extracted/data/cv-fr/clips/dev.csv
Epoch 4 | Training | Elapsed Time: 0:15:43 | Steps: 1120 | Loss: 128.832886
Epoch 4 | Validation | Elapsed Time: 0:00:02 | Steps: 31 | Loss: 44.560288 | Dataset: /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv
Epoch 4 | Validation | Elapsed Time: 0:00:29 | Steps: 91 | Loss: 308.391034 | Dataset: /mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv
Epoch 4 | Validation | Elapsed Time: 0:00:14 | Steps: 65 | Loss: 177.152804 | Dataset: /mnt/extracted/data/cv-fr/clips/dev.csv
Epoch 5 | Training | Elapsed Time: 0:15:36 | Steps: 1120 | Loss: 114.762158 ^[[A
Epoch 5 | Validation | Elapsed Time: 0:00:02 | Steps: 31 | Loss: 49.119470 | Dataset: /mnt/extracted/data/lingualibre/lingua_libre_Q21-fra-French_dev.csv
Epoch 5 | Validation | Elapsed Time: 0:00:29 | Steps: 91 | Loss: 343.108495 | Dataset: /mnt/extracted/data/trainingspeech/ts_2019-04-11_fr_FR_dev.csv
Epoch 5 | Validation | Elapsed Time: 0:00:14 | Steps: 65 | Loss: 193.982464 | Dataset: /mnt/extracted/data/cv-fr/clips/dev.csv
j’ai testé le modéle que vous avez publié mais ça ne marche pas bien , il n’arrive méme pas à reconnaitre un mot
lissyx
((slow to reply) [NOT PROVIDING SUPPORT])
11
Est-ce que vous avez bien lu les recommandations ci-dessus et le fait que c’est une première ébauche, loin d’être garantie comme fonctionnant bien ? J’ai eu plusieurs retours d’autres personnes, en s’assurant de suivre ces recommandations, capables d’obtenir des résultats encourageants.
Est-ce que vous pouvez faire un nouveau thread avec plus d’informations pour reproduire ?
lissyx
((slow to reply) [NOT PROVIDING SUPPORT])
13
Il n’y a rien de spécial, je ne suis pas sûr de bien comprendre la question … Télécharger le fichier, et un binaire deepspeech (python, c++, nodejs, etc.).
lissyx
((slow to reply) [NOT PROVIDING SUPPORT])
15
Et plus précisément ?
Le paramètre --alphabet /alphabet.txt, il n’y a pas d’erreur ?
J’ai déjà explicité dans le tout premier post que le WER était très élevé (95%) et le CER aussi.
lissyx
((slow to reply) [NOT PROVIDING SUPPORT])
16
Une partie des mauvais résultats peut s’expliquer par des choses invalides dans les jeux de données, notamment dans Common Voice. Il y a des bugs ouverts sur GitHub · Where software is built et toute aide est bienvenue pour identifier, corriger les données à la fois dans les releases et dans ce qui est sur le site.
Merci pour ce premier modèle en Français !
J’ai essayé de l’utiliser sur des fichiers audio à moi et je ne parviens pas à avoir quelque chose d’acceptable.
Quand j’essaie tel quel j’obtiens une suite continue de lettres incompréhensibles
(ex:eplagemegenregbingmisgeosugearegimoigregosoepougoiroaga)
Par contre, si j’enlève l’argument du language model (lm.binary) là j’obtiens quelque chose qui se rapprocherait plus d’une suite de mots:
(ex: en pravement jonr e bien re mis e je ne suai jou aretie lete moi)
Est-ce qu’il n’y aurait pas un problème avec le language model ? Est-ce que vous avez une idée de ce que je peux faire ?