Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

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


```
pod@podv2:/usr/local/django_projects/transcription/model_fr$ ll
total 2716020
-rw-r--r-- 1 pod pod        157 nov.  14 21:14 alphabet.txt
-rw-r--r-- 1 pod pod 1395207692 oct.  13 10:08 lm.binary
-rw-r--r-- 1 pod pod 1125941232 nov.  15 09:40 model_tensorflow_fr.tar.xz
-rw-r--r-- 1 pod pod  189186587 nov.  15 08:42 output_graph.pbmm
-rw-r--r-- 1 pod pod   70846624 nov.  14 11:56 trie
```

le fichier "model_tensorflow_fr.tar.xz" peut-etre téléchargé sur le site du projet (attention à prendre la version adéquat : https://github.com/Common-Voice/commonvoice-fr/releases

Dans le fichier custom/settings-local.py, il suffit d’ajouter les paramètres suivant (une entrée par langue) :

"""
USE_TRANSCRIPTION = True
DS_PARAM = {
    'fr': {
        # alphabet;txt contient tous les caractères de la langue lang
        'alphabet': "/usr/local/django_projects/transcription/model_fr/alphabet.txt",
        # le modèle deepspeech
        'model': "/usr/local/django_projects/transcription/model_fr/output_graph.pbmm",
        # le fichier de probabilités construit avec kenlm
        'lm': "/usr/local/django_projects/transcription/model_fr/lm.binary",
        # le fichier trie créé avec generate_trie à partir de lm.binary et
        # alphabet.txt
        'trie': "/usr/local/django_projects/transcription/model_fr/trie",
        'n_features': 26,            # Number of MFCC features to use
        # Size of the context window used for producing timesteps in the input
        # vector
        'n_context': 9,
        # Beam width used in the CTC decoder when building candidate
        # transcriptions
        'beam_width': 500,
        # The alpha hyperparameter of the CTC decoder / Language Model weight
        'lm_alpha': 0.65,
        'lm_beta': 1.4          # The beta hyperparameter of the CTC decoder / Word insertion bonus
    }
}

"""    }


Pour construire un modèle DeepSpeech :

...

Mozilla : ils ont codé la transcription en utilisant tensorFlow et en suivant le concept de Baidu

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


Si 4 epoch successives avec un taux de loss identiques, alors early stop (arret anticipé)
par défaut, le paramétre epoch est mis à 80

Pour réaliser tous les cycles, 2 heures par époch avec un n_hidden à 2048. il faut conmpter une dizaine de cycle

Pour améliorer le model, on peut lancer plusieurs fois la commande deepseech.py qui pointe vers le même output graph mais avec les sources différnetes.
Attention, il ne faut pas changer le n_hidden ni l’alphabet 
Il faut jouer avec le learning rate et le dropout_rate pour chaque bdd utilisée pour améliorer le rendu
On peut créer notre propre source de donnée avec des vidéos sous-titrées (voir script de valentin pour le site caito.de)

sauvegarder les checkpoint et le graph avant de relancer la construction du modèle

une fois le modèle créer il faut le transformer en pbm (pour mise en memoire) voir doc

lm.binary et trie :

Pour créer un lm.binary :

...