Arborescence des pages

Vous regardez une version antérieure (v. /wiki/display/ES/Mise+en+place+de+l%27autotranscription) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 7) afficher la version suivante »

Utilisation de l'autotranscription dans Pod:

L'ensemble des fichiers créés (modèle, alphabet, lm.binary et trie) peuvent être stockés dans /usr/local/django_projects/transcription

il convient de faire un sous-dossier par langue (I.E: fr, en etc.)

Dans le fichier custom/settings-local.py, il est possible d’ajouter les paramètres suivant :

- USE_TRANSCRIPTION : Booléen indiquant si la transcription des vidéos doit être activée pour les langues disponibles (def: False)

- NB_WORKERS_POOL : Nombre de thread pour la parallélisation de la transcription


- VAD_AGRESSIVITY : Agressivité du VAD pour la robustesse vis à vis du bruit [0-4[ (def: 1)

- SAMPLE_WINDOW : Taille de la fenêtre de détection du VAD [10, 20, 30] (def: 30)

- SAMPLE_OVERLAP : Décalage de la fenêtre de détection (def: 300)

- THRESHOLD_VOICED : Pourcentage de Frame devant être vocale pour considérer un échantillon audio comme tel (def: 80)

- THRESHOLD_UNVOICED : Pourcentage de Frame devant être du silence pour considérer un échantillon audio comme tel (def: 90)


- DS_PARAM : Un dictionnaire de la forme { lang: sub_dict }

    lang est le diminutif de la langue prise en charge, comme les valeurs de Video.main_lang

    sub_dict est un dictionnaire de la forme :

    {

       'alphabet': path_to_alphabet.txt,            # alphabet;txt contient tous les caractères de la langue lang

       'model': path_to_output_graph.pbmm,      # le modèle deepspeech

       'lm': path_to_lm.binary,             # le fichier de probabilités construit avec kenlm

       'trie': path_to_trie,                    # le fichier trie créé avec generate_trie à partir de lm.binary et alphabet.txt

       'n_features': 26,            # Number of MFCC features to use

       'n_context': 9,          # Size of the context window used for producing timesteps in the input vector

       'beam_width': 500,           # Beam width used in the CTC decoder when building candidate transcriptions

       'lm_alpha': 0.75,            # The alpha hyperparameter of the CTC decoder / Language Model weight

       'lm_beta': 1.85          # The beta hyperparameter of the CTC decoder / Word insertion bonus

    }

Pour construire un modèle DeepSpeech :

Les DB doivent être de la forme :

  main_folder
  |—- dev folder
  |—- test folder
  |—- train folder
  |—- dev.csv
  |—- test.csv
  |—- train.csv


les dossiers dev test et train contiennent des fichiers wave en 16bit 16kHz Mono de 5 à 20 secondes répartis selon environ dev 10% , test 10% , train 80%  du nombre total de wave
les csv sont répartis en 3 colonnes dont les noms sont à respecter :  "wav_filename", "wav_filesize", "transcript"


Pour construire le modèle on lance la commande :

$ ./DeepSpeech.py
--train_files               # chemin du fichier train.csv
--dev_files                 # chemin du fichier dev.csv
--test_files                # chemin du fichier test.csv
--export_dir                # chemin du dossier où sera exporté le fichier output_graph.pb
--validation_step 1
--train_batch_size          # nombre de fichiers wave propagés à travers le réseau dans la catégorie train , typiquement en **2 , souvent 16, 32, 64, 128 ou 256 (nb : plus le batch size est grand, plus la mémoire utilisée sera importante)
--dev_batch_size            # nombre de fichiers wave propagés à travers le réseau dans la catégorie dev
--test_batch_size           # nombre de fichiers wave propagés à travers le réseau dans la catégorie test
--checkpoint_step 1
-—n_hidden              # « nombre » de réseaux de neurones , de préférence en **2 , souvent 512, 1024, 2048 , doit être le même à chaque entrainement
--learning_rate         # taux d’apprentissage , généralement en puissance de 10 négative , souvent compris entre 1e-1 et 1e-6 (nb : à écrire en forme décimale : ex : 0.001)
--dropout_rate              # pourcentage de neurones tuées aléatoirement entre chaque epoch , de la forme 0.xxx; souvent max 12e-2
—-epoch                 # OPTIONNEL , positif : nombre d’epoch après lequel stopper si il n’y a pas eu d’arrêt anticipé  ,  négatif : nombre d’epoch à réaliser en plus après un arrêt anticipé
--checkpoint_dir            # dossier pour les checkpoints



Pour obtenir le output_graph.pbmm :

$ cd ’export_dir’
$ wget https://index.taskcluster.net/v1/task/project.deepspeech.tensorflow.pip.master.cpu/artifacts/public/convert_graphdef_memmapped_format
$ chmod +x convert_graphdef_memmapped_format
$ convert_graphdef_memmapped_format --in_graph=output_graph.pb --out_graph=output_graph.pbmm


lm.binary et trie :

Pour créer un lm.binary :

Dans un fichier txt (ici vocabulary.txt) , peupler les lignes avec des phrases ou des mots (1 phrase ou 1 mot par ligne de préférence)
NB : tous les caractères dans ce fichier doivent être des caractères présents dans le fichier alphabet.txt

compiler le binaire kenlm en suivant le site : https://kheafield.com/code/kenlm/

en supposant être à la racine du dossier kenlm après compilation :
$ /bin/bin/./lmplz --text vocabulary.txt --arpa  words.arpa --o K
en remplaçant K par un nombre entre 2 et 6 environs , K représente le nombre de mots dans les sections de phrases qui vont être réalisés durant le processus,
c’est le n-gram, plus la valeur du n-gram sera grande et plus le lm.binary sera bon, mais c’est un processus très consommateur de mémoire RAM et ROM
une valeur entre 3 et 5 est préférable selon la longueur des phrases présentes dans le fichier vocabulary.txt
NB : le fichier intermédiaire words.arpa peut avoir une taille conséquente selon le vocabulary.txt de base (plusieurs Go)

Une fois le words.arpa créé :
$ /bin/bin/./build_binary -T -s ’path_to_words.arpa’  ’path_to_export_lm.binary’

Pour créer le trie :

suivre les instructions à :
https://github.com/mozilla/DeepSpeech/blob/master/native_client/README.md#compile-libdeepspeechso--generate_trie
pour générer le fichier generate_trie

lorsque generate_trie est build :
$ chmod +x generate_trie
$ ./generate_trie ’path_to_alphabet.txt’ ’path_to_lm.binary’ ’path_to_export_trie’

Liens DB :

COMMON VOICE :
    https://voice.mozilla.org/fr/datasets
    Telecharger et extraire l’archive puis executer l’importer bin/import_cv2.py du depot deepspeech

VOXFORGE :
    http://www.repository.voxforge1.org/downloads/fr/Trunk/Audio/Main/16kHz_16bit/
    Dans bin/import_voxforge.py remplacer l’url ligne 123 par celle ci-dessus et executer le fichier

CAITO :
    https://www.caito.de/2019/01/the-m-ailabs-speech-dataset/#more-242
    Telecharger et extraire l’archive, puis executer le fichier aux_db_fr.py avec 2 paramètres, le chemin du dossier d’extraction et un nom de genre (female, male ou mix)
    Attention, ce fichier est brut, à utiliser avec précaution.
    NB : pour le dossier Mix il faut lui créer un dossier parent de manière a avoir l’arborescence ./mix/mix/… au lieu de ./mix/…

LINGUA LIBRE :
    executer la commande en supposant être dans le dossier racine du projet deepspeech
    $ ./bin/import_lingua_libre ’path_to_download’ --qId 21 —-iso639-3 fra -—english-name French —-normalize (optionnel)

Liens utiles :

https://discourse.mozilla.org/c/deep-speech
https://discourse.mozilla.org/t/tutorial-how-i-trained-a-specific-french-model-to-control-my-robot/22830
https://discourse.mozilla.org/t/un-premier-modele-francais/41100

https://github.com/Common-Voice/commonvoice-fr/releases
https://github.com/Common-Voice/commonvoice-fr
https://github.com/mozilla/voice-corpus-tool

  • Aucune étiquette