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:
- une installation de docker avec le support Nvidia
- au moins une carte graphique compatible avec CUDA ayant une capacité de calcul supérieur ou égale à 6.0
- au moins 10 heures d’audio validé en français dans Common Voice
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 12.0.
git clone https://github.com/wasertech/commonvoice-fr.git ./cv-fr && \
cd cv-fr/ && \
git checkout -b stt140-cv12
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