Entraîner des modèles sur-mesure avec commonvoice-fr

Préambule

Dans ce document, je vais vous montrer comment facilement entraîner un modèle de reconnaissance vocale sur-mesure pour votre voix grâce à l’image docker de commonvoice-fr, vos données personnelles de CommonVoice et mon modèle pré-entraîné.

Conditions nécessaires

Pour commencer, il vous faut:

Gérez vos permissions

Prévoyez assez de place disponible pour vos données d’entraînement dans un dossier hôte $VOTRE_DOSSIER_HOTE sur votre machine. Les permissions du dossier doivent être prévue pour l’utilisateur trainer créé dans l’image commonvoice-fr.

Pour récursivement changer les permissions d’un dossier utilisez la commande chown 999:999 -R $chemin_du_dossier.
(999: ID du groupe et de l’utilisateur trainer)

Améliorez votre modèle de language

Si vous souhaitez augmenter votre modèle de language, utilisez la variable d’environnement $LM_ADD_EXCLUDED_MAX_SEC=1 et créez un ou plusieurs fichiers ${VOTRE_DOSSIER_HOTE}/extracted/_*_lm.txt contenant des phrases à ajouter au scorer.
(Une phrase par ligne. * peut être n’importe quoi. ex: _03234_custom_lm.txt)
Changez les permissions!

Utilisez un checkpoint

Dans un autre dossier, également appartenant à l’utilisateur trainer, téléchargez mon dernier modèle pré-entraîné et placez-y le contenu de checkpoints-fr.tar.xz dans le dossier.
Changez également les permissions.

Préparez commonvoice-fr

Dans un nouveau dossier (en dehors du dossier hôte pour les données) clonez ma branche de commonvoice-fr pour STT 1.4.0 et CommonVoice 9.0.

git clone https://github.com/wasertech/commonvoice-fr.git ./cv-fr && \
cd  cv-fr/ && \
git checkout -b stt140-cv9

Construisez l’image docker

Dans le dossier cv-fr/STT, construisez l’image docker avec les paramètres de votre choix.
(999: ID du groupe et de l’utilisateur trainer)

docker build \
--build-arg uid=999 \
--build-arg gid=999 \
-f Dockerfile.train \
-t commonvoice-fr .

Créez un modèle sur-mesure.

Une fois l’image construite, vous pouvez la lancer en utilisant la commande suivante.

docker run \
-it \
--gpus=all \
--privileged \
--shm-size=1g \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
--mount type=bind,src=${VOTRE_DOSSIER_HOTE},dst=/mnt \
--mount type=bind,src=${VOTRE_DOSSIER_CHECKPOINT},dst=/transfer-checkpoint \
--env CV_PERSONAL_FIRST_URL="Première url pour votre archive CV perso" \
--env CV_PERSONAL_SECOND_URL="Deuxième url pour votre archive CV perso" \
--env TRAIN_BATCH_SIZE=16 \
--env DEV_BATCH_SIZE=4 \
--env TEST_BATCH_SIZE=4 \
--env EPOCH=15 \
--env LM_ADD_EXCLUDED_MAX_SEC=1 \
--env LM_EVALUATE_RANGE=2,2,50 \
commonvoice-fr 

Avant de lancer l’image, obtenez les deux url pour télécharger vos données avec CommonVoice et configurez l’environnement avec --env.

N’oubliez pas de monter votre dossier hôte pour vos données ($VOTRE_DOSSIER_HOTE), ainsi que le dossier contenant les modèles pré-entraîné ($VOTRE_DOSSIER_CHECKPOINT).

Vous pouvez modifier le nombre d’epochs et la taille par batch en fonction de la quantité de données que vous avez validé sur CommonVoice.

Utilisez $LM_EVALUATE_RANGE=lm_max_alpha,lm_max_beta,n_trails (doc) pour optimiser votre scorer sur vos données personnelles.

A la fin du processus, vous obtiendrez vos nouveaux modèles sur-mesure à la racine de votre dossier hôte dans l’archive fr-fr.zip.

Testez vos nouveaux modèles

Vous pourrez alors tester vos modèles en utilisant la commande stt après avoir extrait l’archive.

pip install stt && \
stt  --model chemin/vers/output_graph.tflite --scorer chemin/vers/kenlm.scorer 

Besoins de plus de données?

Contribuez votre voix au projet CommonVoice!

1 Like