From 71113619f57bcc0c26512a72e0e9813d57ff4886 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 12:42:18 +0100 Subject: [PATCH 01/13] colab integration first try --- README.md | 7 ++- notebooks/quick_start.ipynb | 103 ++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 notebooks/quick_start.ipynb diff --git a/README.md b/README.md index 46d3c4cb..253f6e03 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,12 @@ Aggregatore degli strumenti per la generazione di un modello di machine learning Python 3.7+ ## Quick Start +
+
+[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/notebooks/quick_start.ipynb) + +### oppure ```bash # Attiva un virtualenv @@ -27,7 +32,7 @@ Python 3.7+ # Scarica e scompatta i file per il modello italiano (verifica l'ultima versione rilasciata!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/model_tensorflow_it.tar.xz tar xvf model_tensorflow_it.tar.xz - + # Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz tar xvf transfer_model_tensorflow_it.tar.xz diff --git a/notebooks/quick_start.ipynb b/notebooks/quick_start.ipynb new file mode 100644 index 00000000..229b5ae2 --- /dev/null +++ b/notebooks/quick_start.ipynb @@ -0,0 +1,103 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "quick_start.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "wvQf20jtVjPc" + }, + "source": [ + "# QUICK START" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JUYhNqx6Vij2" + }, + "source": [ + "# Installa DeepSpeech\n", + "!pip3 install deepspeech==0.9.3" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "rCTM8CLuW5Ih" + }, + "source": [ + "# Scarica e scompatta i file per il modello italiano (verifica l'ultima versione rilasciata!)\n", + "\n", + "# !curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/model_tensorflow_it.tar.xz\n", + "# !tar xvf model_tensorflow_it.tar.xz\n", + "\n", + "# Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!)\n", + "!curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz\n", + "!tar xf transfer_model_tensorflow_it.tar.xz" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "7oCwW2rVXKOL" + }, + "source": [ + "# estrai un sample a caso dal dataset cv_tiny\n", + "!wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_it_19574474.wav\n", + "\n", + "# e sentiamocelo!\n", + "import numpy as np\n", + "from IPython.display import Audio\n", + "from scipy.io import wavfile\n", + "\n", + "data = wavfile.read('common_voice_it_19574474.wav')\n", + "\n", + "framerate = data[0]\n", + "sounddata = data[1]\n", + "\n", + "Audio(sounddata,rate=framerate)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Bxae2L-QXkUU" + }, + "source": [ + "# Trascrive il file audio appena scaricato (audio MONO, formato WAV e campionato a 16000Hz)\n", + "!deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_it_19574474.wav" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "jq4uXBnwZ9_B" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file From aaa88d4f2e579a869701c58030349b7ef3b267f3 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 12:45:47 +0100 Subject: [PATCH 02/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 253f6e03..b30ebb33 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Python 3.7+

-[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/notebooks/quick_start.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/notebooks) ### oppure ```bash From aaa262067ad14e9e55184ee9310c23b4331e6c96 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 12:46:50 +0100 Subject: [PATCH 03/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b30ebb33..ea921d92 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Python 3.7+

-[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/notebooks) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/blob/notebooks) ### oppure ```bash From 1b16144586431dd2e6fb4e9476d8c41ee49213a9 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 12:48:28 +0100 Subject: [PATCH 04/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea921d92..7c95484f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Python 3.7+

-[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/blob/notebooks) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/blob/notebooks/quick_start.ipynb) ### oppure ```bash From 9b4d064010830e7a97d011375f3a801d78708f9d Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 14:14:56 +0100 Subject: [PATCH 05/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c95484f..ab799964 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Python 3.7+

-[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model/blob/notebooks/quick_start.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) ### oppure ```bash From d3e18cc22e4aecaeb0ad15e6e04fec03c5162dfe Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 14:18:12 +0100 Subject: [PATCH 06/13] Update README.md --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ab799964..bc097d9d 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,13 @@ Aggregatore degli strumenti per la generazione di un modello di machine learning Python 3.7+ ## Quick Start -
+ +### Usa colab:
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -### oppure +### oppure: ```bash # Attiva un virtualenv @@ -36,9 +37,12 @@ Python 3.7+ # Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz tar xvf transfer_model_tensorflow_it.tar.xz + + # estrai un sample a caso dal dataset cv_tiny + wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_it_19574474.wav - # Trascrivi un file audio MONO, formato WAV e campionato a 16000Hz - deepspeech --model output_graph.pbmm --scorer scorer --audio your/path/to/audio/sampled_at_16Khz.wav + # Trascrivi (audio MONO, formato WAV e campionato a 16000Hz) + deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_it_19574474.wav ``` ### Differenze del modello italiano puro e con transfer learning From 71e4c5a62898863a772855b73aadc6455d579ece Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 14:19:44 +0100 Subject: [PATCH 07/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bc097d9d..205eabed 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Nella cartella MITADS sono presenti tutti gli script che permettono la generazio Fare riferimento al [README](DeepSpeech/README.md) nella cartella DeepSpeech per la documentazione necessaria per creare l'immagine Docker utilizzata per addestrare il modello acustico e del linguaggio. -### Generare il modello con COLAB +### Generare il modello con COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) Fare riferimento al [README in notebooks](notebooks/README.md). From 7e57c6f9407d84312206e35cfbc14b99e93fdff6 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 14:23:27 +0100 Subject: [PATCH 08/13] Update README.md --- notebooks/README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/notebooks/README.md b/notebooks/README.md index 11dcc9da..1bdf69b8 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -1,17 +1,19 @@ -# Colab notebooks per DeepSpeech 0.8 +# Colab notebooks per DeepSpeech Colab notebooks dedicati allo sviluppo del modello DeepSpeech. -* notebook per generare il language model (scorer) -* notebook dedicato al training con possibilità di fine tuning e transfer learning +* ```deepspeech_lm.ipynb```: notebook per generare il language model (scorer) +* ```deepspeech_training.ipynb```: notebook dedicato al training con possibilità di fine tuning e transfer learning ## Attenzione! -* Una volta collegato un archivio Google Drive, ogni file che viene cancellato da python/script, viene spostato nel cestino del vostro account Drive. -Ciò comporta che, durante la fase di training, i checkpoints non definitivamente eliminati andranno a saturare tutto lo spazio disponibile! * Dedicare un po' di tempo a leggere ogni cella del notebook :) non caricarle tutte insieme! ## Quick Start +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +### o manualmente: + * Andare su: https://colab.research.google.com/ con il vostro account Google * Se non viene visualizzato il popup per l'upload dei notebooks, andare su ```File -> Open notebook``` * Selezionare la tab ```Github``` e copincollare l'url al notebook di questa repository From 1ff32c07133d374d458043d072a8dc896e276f58 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 14:26:28 +0100 Subject: [PATCH 09/13] Update README.md --- DeepSpeech/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DeepSpeech/README.md b/DeepSpeech/README.md index 8242d027..66c4807d 100644 --- a/DeepSpeech/README.md +++ b/DeepSpeech/README.md @@ -19,7 +19,7 @@ Prima di iniziare, la nuova immagine base Docker di Deepspeech necessita di [nvi Nel README della repository di NVIDIA trovate le istruzioni a seconda del vostro sistema. -Durante il processo di training la cartella $HOME/data occuperá diverse decine di GB di spazio sul disco. Se si vuole usare un'altra cartella (es. su un'altra partizione) sostituire in _tutti_ i comandi successivi $HOME/data con il path della nuova cartella. +Durante il processo di training la cartella ```$HOME/data``` occuperá diverse decine di GB di spazio sul disco. Se si vuole usare un'altra cartella (es. su un'altra partizione) sostituire in _tutti_ i comandi successivi ```$HOME/data``` con il path della nuova cartella. ### Preparare il dataset di CommonVoice From dd567384de9148af960ac05cc14fa72917891d05 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 15:07:43 +0100 Subject: [PATCH 10/13] ENG readme as default add IT readme link --- DeepSpeech/README.it-IT.md | 134 ++++++++++++++++++++++++++++++++++ DeepSpeech/README.md | 115 ++++++++++++++--------------- DeepSpeech/it/README.it-IT.md | 18 +++++ DeepSpeech/it/README.md | 25 ++++--- MITADS/README.it-IT.md | 32 ++++++++ MITADS/README.md | 23 +++--- README.md | 74 ++++++++++--------- notebooks/README.md | 36 ++++----- 8 files changed, 324 insertions(+), 133 deletions(-) create mode 100644 DeepSpeech/README.it-IT.md create mode 100644 DeepSpeech/it/README.it-IT.md create mode 100644 MITADS/README.it-IT.md diff --git a/DeepSpeech/README.it-IT.md b/DeepSpeech/README.it-IT.md new file mode 100644 index 00000000..66c4807d --- /dev/null +++ b/DeepSpeech/README.it-IT.md @@ -0,0 +1,134 @@ +DeepSpeech ITA +================= + +* [Generare il modello](#generate) + * [CommonVoice Dataset](#cv) + * [Creare immagine Docker](#docker) + * [Avviare l'addestramento](#training) + * [Eseguire i singoli step](#steps) +* [Configurazione del container Docker](#config) + * [Env files](#env_files) +* [Lista dei parametri](#params) + + + +## Generare il modello + +#### Attenzione! +Prima di iniziare, la nuova immagine base Docker di Deepspeech necessita di [nvidia-docker](https://github.com/NVIDIA/nvidia-docker). + +Nel README della repository di NVIDIA trovate le istruzioni a seconda del vostro sistema. + +Durante il processo di training la cartella ```$HOME/data``` occuperá diverse decine di GB di spazio sul disco. Se si vuole usare un'altra cartella (es. su un'altra partizione) sostituire in _tutti_ i comandi successivi ```$HOME/data``` con il path della nuova cartella. + + +### Preparare il dataset di CommonVoice + +* Scaricare il dataset [CommonVoice italiano](https://commonvoice.mozilla.org/it/datasets) in ```$HOME/data``` + + +```bash + cd $HOME + mkdir -p data/sources + chmod a+rwx -R data + mv it.tar.gz data/sources # versione 3 di common voice + chmod a+r data/sources/it.tar.gz + ``` + + +### Creare l'immagine Docker + +```bash +cd $HOME +git clone MozillaItalia/DeepSpeech-Italian-Model.git + +cd DeepSpeech-Italian-Model/DeepSpeech +chmod +x generate_base_dockerfile.sh +./generate_base_dockerfile.sh + +# build base +docker build . -f Dockerfile.train -t deepspeech/base:0.9.3 +# build italiana +docker build . -f Dockerfile_it.train -t deepspeech/it +``` + + +### Avviare l'addestramento + + * Avviando l'immagine verrà eseguita la routine di addestramento con i valori già preimpostati nel Dockerfile: + + + ```bash + docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +``` +* **ATTENZIONE** Lo Step di addestramento vero e proprio potrà essere eseguito solamente con l'interazione dell'utente (`Press a button to continue..`) permettendo un check finale dei parametri che verranno passati a DeepSpeech + +* Terminata l'esecuzione nella directory `$HOME/data` o nella directory `/mnt` nel container Docker, verranno creati i files: + * `it-it.zip` contenente il modello TFlite + * `mode_tensorflow_it.tar.xz` contenente il modello memory mapped + * `checkpoint_it.tar.xz` contenente l'ultimo checkpoint dal validation set + + +### Eseguire i singoli step + +È possibile fare override dell'istruzione `entrypoint` di Docker per utilizzare la shell del container. In questo modo possono essere avviati singolarmente i vari script per poter sperimentare. + +Per maggiori informazioni sul ruolo dei vari script si rimanda al relativo [README](it/README.md) + +```bash +docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt --entrypoint /bin/bash -it deepspeech/it +``` + + +## Configurazione del container Docker + +È possibile modificare i parametri impostati nel ```Dockerfile_it.train``` utilizzando il flag ```-e``` seguito dal nome della variabile e il suo nuovo valore. + +```bash + docker run -e "TRANSFER_LEARNING=1" -e "DROP_SOURCE_LAYERS=3" --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +``` + + +### .env files + +In combinazione al flag ```-e``` è possibile modificare i parametri del Dockerfile con un file ```.env``` contenente la lista dei parametri da passare. + +Alcuni ```.env``` files di esempio sono presenti nella cartella ```DeepSpeech/env_files``` e possono essere passati tramite il flag ```--env-file``` al ```run``` di Docker. + +* ```fast_dev.env```: ogni passaggio dell'addestramento di DeepSpeech verrà eseguito velocemente per testare ogni step. + +```bash +cat fast_dev.env + BATCH_SIZE=2 + EPOCHS=2 + FAST_TRAIN=1 +docker run --env-file env_files/fast_dev.env --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +``` + +* ```do_transfer_learning.env```: viene aggiunto il flag ```DROP_SOURCE_LAYERS=1``` e verrà utilizzato il checkpoint del modello inglese di DeepSpeech. + +* ```only_export.env```: se presente un checkpoint di una precedente iterazione, viene saltata la fase di addestramento e si procede alla creazione dei vari files binari del modello + +* ```run_lm_optimizer.env```: viene aggiornato il flag ```LM_EVALUATE_RANGE=5,5,600``` per avviare lo script ```lm_optimizer.py``` su 600 iterazioni per cercare i migliori valori di ```ALPHA``` e ```BETA``` su un range ```[5,5]``` + + +### Lista dei parametri + +Per approfondire il significato dei flag e parametri seguenti, sono presenti maggiori dettagli [QUI](http://deepspeech.readthedocs.io/en/v0.8.0/Flags.html) + +| PARAMETRO | VALORE | note | +| ------------- | ------------- | ------------- | +| `BATCH_SIZE` | `64` | +| `EPOCHS` | `30` |numero di iterazioni +| `LEARNING_RATE`| `0.0001` | +| `N_HIDDEN`| `2048` | +| `EARLY_STOP`| `1` | se `1`, dopo `ES_STOP` iterazioni il valore loss del modello non migliora, l'addestramento si ferma +| `ES_STOP` | `10` | Default in DeepSpeech inglese: `25` +| `MAX_TO_KEEP` | `2` | quanti checkpoints salvare. Default in DeepSpeech inglese: `5` +| `DROPOUT` | `0.4` | +| `LM_ALPHA` | `0` | +| `LM_BETA` | `0` | +| `LM_EVALUATE_RANGE`| - | tripletta di valori `MAX_ALPHA,MAX_BETA,N_TRIALS` da assegnare allo script `lm_optimizer.py` (es `5,5,600`) +| `AMP` | `1` | se `TRANSFER_LEARNING` abilitato, questo parametro viene disabilitato. Maggiori informazioni [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html?highlight=automatic%20mixed%20precision#training-with-automatic-mixed-precision) +| `TRANSFER_LEARNING` | `0` | se `1`, `DROP_SOURCE_LAYERS` viene impostato a `1` e si avvia l'apprendimento dal checkpoint di DeepSpeech inglese scartando l'ultimo layer della rete (maggiori info [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html#transfer-learning-new-alphabet)) +| `FAST_TRAIN` | 0 | se `1` si avvia un addestramento rapido solamente per controllare che tutti gli step vadano a buon fine diff --git a/DeepSpeech/README.md b/DeepSpeech/README.md index 66c4807d..eb7e8181 100644 --- a/DeepSpeech/README.md +++ b/DeepSpeech/README.md @@ -1,42 +1,43 @@ DeepSpeech ITA ================= +*Read this in other languages: [Italian](README.it-IT.md)* -* [Generare il modello](#generate) +* [Generate the model](#generate) * [CommonVoice Dataset](#cv) - * [Creare immagine Docker](#docker) - * [Avviare l'addestramento](#training) - * [Eseguire i singoli step](#steps) -* [Configurazione del container Docker](#config) + * [Create Docker Image](#docker) + * [Start training](#training) + * [Execute individual steps](#steps) +* [Docker container configuration](#config) * [Env files](#env_files) -* [Lista dei parametri](#params) +* [Parameter list](#params) -## Generare il modello +## Generate the model -#### Attenzione! -Prima di iniziare, la nuova immagine base Docker di Deepspeech necessita di [nvidia-docker](https://github.com/NVIDIA/nvidia-docker). +#### Warning! +Before we start, the new Deepspeech Docker base image needs [nvidia-docker](https://github.com/NVIDIA/nvidia-docker). -Nel README della repository di NVIDIA trovate le istruzioni a seconda del vostro sistema. +In the README of the NVIDIA repository you will find instructions depending on your system. -Durante il processo di training la cartella ```$HOME/data``` occuperá diverse decine di GB di spazio sul disco. Se si vuole usare un'altra cartella (es. su un'altra partizione) sostituire in _tutti_ i comandi successivi ```$HOME/data``` con il path della nuova cartella. +During the training process the folder ``$HOME/data`` will take up several tens of GB of disk space. If you want to use another folder (e.g. on another partition) replace in _all_ the following commands ``$HOME/data`` with the path to the new folder. -### Preparare il dataset di CommonVoice +### Prepare CommonVoice dataset -* Scaricare il dataset [CommonVoice italiano](https://commonvoice.mozilla.org/it/datasets) in ```$HOME/data``` +* Download the dataset [CommonVoice italian](https://commonvoice.mozilla.org/it/datasets) in ``$HOME/data`` ```bash cd $HOME mkdir -p data/sources chmod a+rwx -R data - mv it.tar.gz data/sources # versione 3 di common voice - chmod a+r data/sources/it.tar.gz + mv en.tar.gz data/sources # version 3 of common voice + chmod a+r data/sources/en.tar.gz ``` -### Creare l'immagine Docker +### Create the Docker image ```bash cd $HOME @@ -48,87 +49,87 @@ chmod +x generate_base_dockerfile.sh # build base docker build . -f Dockerfile.train -t deepspeech/base:0.9.3 -# build italiana +# Italian build docker build . -f Dockerfile_it.train -t deepspeech/it ``` -### Avviare l'addestramento +### Start training - * Avviando l'immagine verrà eseguita la routine di addestramento con i valori già preimpostati nel Dockerfile: + * Starting the image will run the training routine with the values already preset in the Dockerfile: ```bash docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it ``` -* **ATTENZIONE** Lo Step di addestramento vero e proprio potrà essere eseguito solamente con l'interazione dell'utente (`Press a button to continue..`) permettendo un check finale dei parametri che verranno passati a DeepSpeech +* **WARNING** The real training step can be executed only with the user interaction (`Press a button to continue..`) allowing a final check of the parameters that will be passed to DeepSpeech. -* Terminata l'esecuzione nella directory `$HOME/data` o nella directory `/mnt` nel container Docker, verranno creati i files: - * `it-it.zip` contenente il modello TFlite - * `mode_tensorflow_it.tar.xz` contenente il modello memory mapped - * `checkpoint_it.tar.xz` contenente l'ultimo checkpoint dal validation set +* After the execution in the directory `$HOME/data` or in the directory `/mnt` in the Docker container, the files will be created: + * `it-it.zip` containing the TFlite model. + * `mode_tensorflow_it.tar.xz` containing the memory mapped model + * `checkpoint_en.tar.xz` containing the last checkpoint from the validation set -### Eseguire i singoli step +### Execute individual steps -È possibile fare override dell'istruzione `entrypoint` di Docker per utilizzare la shell del container. In questo modo possono essere avviati singolarmente i vari script per poter sperimentare. +You can override Docker's `entrypoint` statement to use the container shell. This way the various scripts can be started individually for experimentation. -Per maggiori informazioni sul ruolo dei vari script si rimanda al relativo [README](it/README.md) +For more information on the role of the various scripts see the related [README](en/README.md) ```bash docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt --entrypoint /bin/bash -it deepspeech/it ``` -## Configurazione del container Docker +## Docker container configuration -È possibile modificare i parametri impostati nel ```Dockerfile_it.train``` utilizzando il flag ```-e``` seguito dal nome della variabile e il suo nuovo valore. +You can change the parameters set in the ``Dockerfile_en.train`` using the ``-e`` flag followed by the variable name and its new value. ```bash - docker run -e "TRANSFER_LEARNING=1" -e "DROP_SOURCE_LAYERS=3" --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it + docker run -e "TRANSFER_LEARNING=1" -e "DROP_SOURCE_LAYERS=3" --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/en ``` ### .env files -In combinazione al flag ```-e``` è possibile modificare i parametri del Dockerfile con un file ```.env``` contenente la lista dei parametri da passare. +In combination with the ``-e`` flag it is possible to modify the Dockerfile parameters with a ``.env`` file containing the list of parameters to be passed. -Alcuni ```.env``` files di esempio sono presenti nella cartella ```DeepSpeech/env_files``` e possono essere passati tramite il flag ```--env-file``` al ```run``` di Docker. +Some example ```.env``` files are present in the ``DeepSpeech/env_files`` folder and can be passed via the ``--env-file`` flag to the Docker ``run``. -* ```fast_dev.env```: ogni passaggio dell'addestramento di DeepSpeech verrà eseguito velocemente per testare ogni step. +* ``fast_dev.env``: each step of DeepSpeech training will be run fast to test each step. ```bash cat fast_dev.env BATCH_SIZE=2 EPOCHS=2 FAST_TRAIN=1 -docker run --env-file env_files/fast_dev.env --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +docker run --env-file env_files/fast_dev.env --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/en ``` -* ```do_transfer_learning.env```: viene aggiunto il flag ```DROP_SOURCE_LAYERS=1``` e verrà utilizzato il checkpoint del modello inglese di DeepSpeech. +* ```do_transfer_learning.env```: the flag ```DROP_SOURCE_LAYERS=1``` is added and the checkpoint of the DeepSpeech English model will be used. -* ```only_export.env```: se presente un checkpoint di una precedente iterazione, viene saltata la fase di addestramento e si procede alla creazione dei vari files binari del modello +* ```only_export.env```: if a checkpoint of a previous iteration is present, the training phase is skipped and the various binary files of the model are created -* ```run_lm_optimizer.env```: viene aggiornato il flag ```LM_EVALUATE_RANGE=5,5,600``` per avviare lo script ```lm_optimizer.py``` su 600 iterazioni per cercare i migliori valori di ```ALPHA``` e ```BETA``` su un range ```[5,5]``` +* ``run_lm_optimizer.env``: the flag ```LM_EVALUATE_RANGE=5,5,600``` is updated to run the script ```lm_optimizer.py``` over 600 iterations to find the best values of ``ALPHA`` and ``BETA`` over a range ``[5,5]`` -### Lista dei parametri - -Per approfondire il significato dei flag e parametri seguenti, sono presenti maggiori dettagli [QUI](http://deepspeech.readthedocs.io/en/v0.8.0/Flags.html) - -| PARAMETRO | VALORE | note | -| ------------- | ------------- | ------------- | -| `BATCH_SIZE` | `64` | -| `EPOCHS` | `30` |numero di iterazioni -| `LEARNING_RATE`| `0.0001` | -| `N_HIDDEN`| `2048` | -| `EARLY_STOP`| `1` | se `1`, dopo `ES_STOP` iterazioni il valore loss del modello non migliora, l'addestramento si ferma -| `ES_STOP` | `10` | Default in DeepSpeech inglese: `25` -| `MAX_TO_KEEP` | `2` | quanti checkpoints salvare. Default in DeepSpeech inglese: `5` -| `DROPOUT` | `0.4` | -| `LM_ALPHA` | `0` | -| `LM_BETA` | `0` | -| `LM_EVALUATE_RANGE`| - | tripletta di valori `MAX_ALPHA,MAX_BETA,N_TRIALS` da assegnare allo script `lm_optimizer.py` (es `5,5,600`) -| `AMP` | `1` | se `TRANSFER_LEARNING` abilitato, questo parametro viene disabilitato. Maggiori informazioni [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html?highlight=automatic%20mixed%20precision#training-with-automatic-mixed-precision) -| `TRANSFER_LEARNING` | `0` | se `1`, `DROP_SOURCE_LAYERS` viene impostato a `1` e si avvia l'apprendimento dal checkpoint di DeepSpeech inglese scartando l'ultimo layer della rete (maggiori info [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html#transfer-learning-new-alphabet)) -| `FAST_TRAIN` | 0 | se `1` si avvia un addestramento rapido solamente per controllare che tutti gli step vadano a buon fine +### Parameters list + +More details on the meaning of the following flags and parameters can be found [HERE](http://deepspeech.readthedocs.io/en/v0.8.0/Flags.html) + +| PARAMETER | VALUE | notes | +| ------------- | ------------- | ------------- | +| `BATCH_SIZE` | `64` | +| `EPOCHS` | `30` | number of iterations +| `LEARNING_RATE`| `0.0001` | +| `N_HIDDEN`| `2048` | +| `EARLY_STOP`| `1` | if `1`, after `ES_STOP` iterations the loss value of the model does not improve, the training stops +| `ES_STOP` | `10` | Default in English DeepSpeech: `25` +| `MAX_TO_KEEP` | `2` | how many checkpoints to save. Default in DeepSpeech English: `5` +| `DROPOUT` | `0.4` | +| `LM_ALPHA` | `0` | +| `LM_BETA` | `0` | +| `LM_EVALUATE_RANGE`| - | triplet of values `MAX_ALPHA,MAX_BETA,N_TRIALS` to be assigned to the script `lm_optimizer.py` (e.g. `5,5,600`) +| `AMP` | `1` | if `TRANSFER_LEARNING` enabled, this parameter is disabled. More information [HERE](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html?highlight=automatic%20mixed%20precision#training-with-automatic-mixed-precision) +| `TRANSFER_LEARNING` | `0` | if `1`, `DROP_SOURCE_LAYERS` is set to `1` and start learning from the English DeepSpeech checkpoint discarding the last layer of the network (more info [HERE](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html#transfer-learning-new-alphabet)) +| `FAST_TRAIN` | 0 | if `1` you start a fast training just to check that all steps are successful diff --git a/DeepSpeech/it/README.it-IT.md b/DeepSpeech/it/README.it-IT.md new file mode 100644 index 00000000..4970a2b6 --- /dev/null +++ b/DeepSpeech/it/README.it-IT.md @@ -0,0 +1,18 @@ +Step per l'addestramento del modello +================= +
+ +Una volta avviato il container Docker gli script che vengono eseguiti sono, in ordine: + +| SCRIPT | | +| ------------- | ------------- | +| `../check.sh` | Esegue un semplice check controllando che tutte le directories necessarie siano state create e avvia due iterazioni su un mini dataset | +| `../generate_alphabet.sh` | se non è presente il file `/mnt/models/alphabet.txt`, viene preso e copiato da `~/data` | +| `import_cvit_tiny.sh` | importa il dataset di prova `cv_tiny` se il flag `FAST_TRAIN` è impostato pari a `1` sennò viene saltato | +| `import_cvit.sh` | importa il dataset italiano di CommonVoice scompattandolo da `/mnt/sources/it.tar.gz` | +| `import_m-ailabs.sh` | scarica e importa il dataset italiano di M-AILABS | +| `build_lm.sh` | scarica il corpora `mitads.txt` se non presente e avvia la creazione del package scorer `scorer` dopo aver creato il file `lm.binary` e `vocab-500000.txt` | +| `train.sh` | avvia l'addestramento vero e proprio **solo dopo conferma dell'utente**. Se presente il flag `TRANSFER_LEARNING=1` viene scaricato il checkpoint della release inglese, viene aggiunto il flag `DROP_SOURCE_LAYERS=1` e si utilizzano i pesi di tutti i layers ma non dell'ultimo (il layer di output della rete). +| `export.sh` | Controlla la directory `/mnt/models` e, se non presenti, genera i files binari dei modelli per: Tensorflow, TFLite, zip contenente il modello TFLite e scorer, il modello Tensorflow memory mapped| +| `evaluate_lm.sh` | se `LM_EVALUATE_RANGE` contiene una tripletta di interi positivi `ALPHA_MAX,BETA_MAX,N_TRIALS` viene avviato lo script `lm_optimizer.py` di DeepSpeech per cercare entro `N_TRIALS` tentativi il miglior valore di `LM_ALPHA` e `LM_BETA` che minimizzano il Word Error Rate sul Validation Set. Una volta ottenuti, si dovrà eseguire nuovamente lo script `./generate_scorer_package` di DeepSpeech per ricreare il nuovo scorer con i flag `default_alpha` e `default_beta` pari ai nuovi ottenuti | +| `../package.sh` | Controlla la directory `/mnt` e, se non presenti, genera gli archivi: `model_tensorflow_it.tar.xz` con il file memory mapped, `scorer` e `alphabet.txt`, `model_tflite_it.tar.xz` con il modello TFLite, `scorer` e `alphabet.txt`, `checkpoint_it.tar.xz` con gli ultimi `best_dev_checkpoint_xxx`. Infine copia i files `.zip` in `/mnt/models/` in `/mnt/` diff --git a/DeepSpeech/it/README.md b/DeepSpeech/it/README.md index 4970a2b6..b43a5e8d 100644 --- a/DeepSpeech/it/README.md +++ b/DeepSpeech/it/README.md @@ -1,18 +1,19 @@ -Step per l'addestramento del modello +Model Training Steps ================= +*Read this in other languages: [Italian](README.it-IT.md)*
-Una volta avviato il container Docker gli script che vengono eseguiti sono, in ordine: +Once the Docker container is started, the scripts that are executed are, in order: | SCRIPT | | | ------------- | ------------- | -| `../check.sh` | Esegue un semplice check controllando che tutte le directories necessarie siano state create e avvia due iterazioni su un mini dataset | -| `../generate_alphabet.sh` | se non è presente il file `/mnt/models/alphabet.txt`, viene preso e copiato da `~/data` | -| `import_cvit_tiny.sh` | importa il dataset di prova `cv_tiny` se il flag `FAST_TRAIN` è impostato pari a `1` sennò viene saltato | -| `import_cvit.sh` | importa il dataset italiano di CommonVoice scompattandolo da `/mnt/sources/it.tar.gz` | -| `import_m-ailabs.sh` | scarica e importa il dataset italiano di M-AILABS | -| `build_lm.sh` | scarica il corpora `mitads.txt` se non presente e avvia la creazione del package scorer `scorer` dopo aver creato il file `lm.binary` e `vocab-500000.txt` | -| `train.sh` | avvia l'addestramento vero e proprio **solo dopo conferma dell'utente**. Se presente il flag `TRANSFER_LEARNING=1` viene scaricato il checkpoint della release inglese, viene aggiunto il flag `DROP_SOURCE_LAYERS=1` e si utilizzano i pesi di tutti i layers ma non dell'ultimo (il layer di output della rete). -| `export.sh` | Controlla la directory `/mnt/models` e, se non presenti, genera i files binari dei modelli per: Tensorflow, TFLite, zip contenente il modello TFLite e scorer, il modello Tensorflow memory mapped| -| `evaluate_lm.sh` | se `LM_EVALUATE_RANGE` contiene una tripletta di interi positivi `ALPHA_MAX,BETA_MAX,N_TRIALS` viene avviato lo script `lm_optimizer.py` di DeepSpeech per cercare entro `N_TRIALS` tentativi il miglior valore di `LM_ALPHA` e `LM_BETA` che minimizzano il Word Error Rate sul Validation Set. Una volta ottenuti, si dovrà eseguire nuovamente lo script `./generate_scorer_package` di DeepSpeech per ricreare il nuovo scorer con i flag `default_alpha` e `default_beta` pari ai nuovi ottenuti | -| `../package.sh` | Controlla la directory `/mnt` e, se non presenti, genera gli archivi: `model_tensorflow_it.tar.xz` con il file memory mapped, `scorer` e `alphabet.txt`, `model_tflite_it.tar.xz` con il modello TFLite, `scorer` e `alphabet.txt`, `checkpoint_it.tar.xz` con gli ultimi `best_dev_checkpoint_xxx`. Infine copia i files `.zip` in `/mnt/models/` in `/mnt/` +| `../check.sh` | Runs a simple check to make sure all necessary directories have been created and starts two iterations on a mini dataset | +| `../generate_alphabet.sh` | if the file `/mnt/models/alphabet.txt` is not present, it is taken and copied from `~/data` | +| `import_cvit_tiny.sh` | import the test dataset `cv_tiny` if the flag `FAST_TRAIN` is set equal to `1` otherwise it is skipped | +| `import_cvit.sh` | import the italian CommonVoice dataset unpacking it from `/mnt/sources/en.tar.gz` | +| `import_m-ailabs.sh` | download and import M-AILABS Italian dataset | +| `build_lm.sh` | download the corpora `mitads.txt` if not present and start the creation of the package scorer `scorer` after creating the file `lm.binary` and `vocab-500000.txt` | | +| `train.sh` | starts the actual training **only after user confirmation**. If the flag `TRANSFER_LEARNING=1` is present the English release checkpoint is downloaded, the flag `DROP_SOURCE_LAYERS=1` is added and the weights of all layers but not the last one (the network output layer) are used. +| `export.sh` | Checks the `/mnt/models` directory and, if not present, generates model binaries for: Tensorflow, TFLite, zipper containing TFLite model and scorer, Tensorflow model memory mapped|. +| `evaluate_lm.sh` | if `LM_EVALUATE_RANGE` contains a triplet of positive integers `ALPHA_MAX,BETA_MAX,N_TRIALS` the DeepSpeech script `lm_optimizer.py` is started to search within `N_TRIALS` attempts for the best value of `LM_ALPHA` and `LM_BETA` that minimize the Word Error Rate on the Validation Set. Once obtained, you will need to re-run DeepSpeech's `./generate_scorer_package` script to recreate the new scorer with the `default_alpha` and `default_beta` flags equal to the new ones obtained | +| `../package.sh` | Check the `/mnt` directory and, if not present, generate the archives: `model_tensorflow_en.tar.xz` with the memory mapped file, `scorer` and `alphabet. txt`, `model_tflite_en.tar.xz` with the TFLite model, `scorer` and `alphabet.txt`, `checkpoint_en.tar.xz` with the latest `best_dev_checkpoint_xxx`. Finally copy the files `.zip` in `/mnt/models/` to `/mnt/`. diff --git a/MITADS/README.it-IT.md b/MITADS/README.it-IT.md new file mode 100644 index 00000000..30826874 --- /dev/null +++ b/MITADS/README.it-IT.md @@ -0,0 +1,32 @@ +# Perché + +Lo scopo è quello di generare un corpus testuale con fonti libere, che il testo sia stato scritto dopo il 1920/30 per un Italiano più moderno e che il testo stesso sia colloquiale. + +# Installazione + +* Python 3.7+ + +``` +sudo apt install libdb-dev # per Ubuntu/Debian +pip3 install -r requirements.txt +``` + +## Gutenberg extractor + +Per utilizzare l'estrattore vanno inseriti in un file chiamato "books_list.txt" gli indirizzi alle pagine dei libri in formato html (con o senza immagini) mettendone uno per riga. +Questo file è già fornito con lo script. + +## OpenSubTitle exporter + +Richiede come primo parametro la cartella con il dataset di OpenSubTitles. + +## Wikiquote exporter + +Richiede che il dump di wikiquote sia scaricato e il file xml estratto. In automatico estrarra il contenuto generando un nuovo file di testo. + +## Wikisource extractor +L'estrattore utilizza una lista con il nome dei libri da scaricare da wikisource e poi processa i file txt dei libri uno ad uno e li pulisce e formatta e poi tutto viene tutto inserito in un unico file txt di output +Cose additionali da fare: aggiungere proxies per evitare ban, parallelizzare per velocità + +## Eulogos Chat extractor +A partire dalla home del sito vengono visitate le subpages contenenti i datasets delle chat ed estratto il contenuto. diff --git a/MITADS/README.md b/MITADS/README.md index 30826874..ec042d45 100644 --- a/MITADS/README.md +++ b/MITADS/README.md @@ -1,32 +1,33 @@ -# Perché +*Read this in other languages: [Italian](README.it-IT.md)* +# Why -Lo scopo è quello di generare un corpus testuale con fonti libere, che il testo sia stato scritto dopo il 1920/30 per un Italiano più moderno e che il testo stesso sia colloquiale. +The purpose is to generate a text corpus with free sources, that the text was written after 1920/30 for a more modern Italian and that the text itself is colloquial. -# Installazione +# Installation * Python 3.7+ ``` -sudo apt install libdb-dev # per Ubuntu/Debian +sudo apt install libdb-dev # for Ubuntu/Debian pip3 install -r requirements.txt ``` ## Gutenberg extractor -Per utilizzare l'estrattore vanno inseriti in un file chiamato "books_list.txt" gli indirizzi alle pagine dei libri in formato html (con o senza immagini) mettendone uno per riga. -Questo file è già fornito con lo script. +To use the extractor you have to insert in a file called "books_list.txt" the addresses to the pages of the books in html format (with or without images) putting one per line. +This file is already provided with the script. ## OpenSubTitle exporter -Richiede come primo parametro la cartella con il dataset di OpenSubTitles. +It requires as first parameter the folder with the OpenSubTitles dataset. ## Wikiquote exporter -Richiede che il dump di wikiquote sia scaricato e il file xml estratto. In automatico estrarra il contenuto generando un nuovo file di testo. +It requires that the wikiquote dump is downloaded and the xml file extracted. It will automatically extract the content generating a new text file. ## Wikisource extractor -L'estrattore utilizza una lista con il nome dei libri da scaricare da wikisource e poi processa i file txt dei libri uno ad uno e li pulisce e formatta e poi tutto viene tutto inserito in un unico file txt di output -Cose additionali da fare: aggiungere proxies per evitare ban, parallelizzare per velocità +The extractor uses a list with the name of the books to download from wikisource and then processes the txt files of the books one by one and cleans and formats them and then everything is put into a single txt output file. +Additional things to do: add proxies to avoid bans, parallelize for speed ## Eulogos Chat extractor -A partire dalla home del sito vengono visitate le subpages contenenti i datasets delle chat ed estratto il contenuto. +Starting from the home page of the site, the subpages containing the chat datasets are visited and the content is extracted. diff --git a/README.md b/README.md index 205eabed..3989398b 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,83 @@ # DeepSpeech Italian Model -Aggregatore degli strumenti per la generazione di un modello di machine learning per la lingua Italiana del progetto Common Voice. Ci trovi su Telegram con il nostro bot [@mozitabot](https://t.me/mozitabot) nel gruppo Developers dove dirigiamo e discutiamo lo sviluppo oppure sul [forum](https://discourse.mozilla.org/c/community-portal/mozilla-italia). +*Read this in other languages: [Italian](README.it-IT.md)* + +Aggregator of tools for generating a machine learning model for the Italian language of the Common Voice project. You can find us on Telegram with our bot [@mozitabot](https://t.me/mozitabot) in the Developers group where we direct and discuss development or on the [forum](https://discourse.mozilla.org/c/community-portal/mozilla-italia). --- -## Regole +## Rules -* Ticket e pull requests in inglese -* Readme in Italiano +* Ticket and pull requests in English +* Readme in Italian -## Requisiti +## Requirements Python 3.7+ ## Quick Start -### Usa colab: +### Use colab:
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -### oppure: +### or: ```bash - # Attiva un virtualenv + # Activate a virtualenv virtualenv -p python3 $HOME/tmp/deepspeech-venv/ source $HOME/tmp/deepspeech-venv/bin/activate - # Installa DeepSpeech + # Install DeepSpeech pip3 install deepspeech==0.9.3 - # Scarica e scompatta i file per il modello italiano (verifica l'ultima versione rilasciata!) + # Download and unpack the files for the Italian model (check the latest version released!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/model_tensorflow_it.tar.xz - tar xvf model_tensorflow_it.tar.xz + tar xvf model_tensorflow_en.tar.xz - # Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!) + # Or use the Italian model with transfer learning from the English one (check the latest released version!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz - tar xvf transfer_model_tensorflow_it.tar.xz - - # estrai un sample a caso dal dataset cv_tiny - wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_it_19574474.wav + tar xvf transfer_model_tensorflow_en.tar.xz + + # extract a random sample from the cv_tiny dataset + wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_en_19574474.wav - # Trascrivi (audio MONO, formato WAV e campionato a 16000Hz) - deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_it_19574474.wav + # Transcribe (MONO audio, WAV format and sampled at 16000Hz) + deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_en_19574474.wav ``` -### Differenze del modello italiano puro e con transfer learning +### Differences between pure italian model and with transfer learning -Da 08/2020 rilasciamo il modello in due versioni, puro ovvero solo dataset di lingua italiana (specificato nel release) e la versione con transfer learning. -La seconda versione include il transfer learning dal modello di lingua ufficiale rilasciato da Mozilla, che include altri dataset oltre a quello di Common Voice superando le oltre 7000 ore di materiale. Questo modello si è dimostrato molto piú affidabile nel riconoscimento viste le poche ore di lingua italiana che disponiamo al momento. +From 08/2020 we release the model in two versions, one "from scratch" that is only Italian language dataset (specified in the release) and another version trained with transfer learning technique. +The second one is trained from the official model checkpoint released by Mozilla, which includes other datasets in addition to the Common Voice one, exceeding more than 7000 hours of material. This model proved to be much more reliable in recognition given the few hours of Italian language that we have at the moment. -## Sviluppo +## Development -### Corpora per il modello del linguaggio +### Corpora for the language model -Nella cartella MITADS sono presenti tutti gli script che permettono la generazione del corpus testuale [MITADS](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/tag/Mitads-1.0.0-alpha2). Per maggiori informazioni fare riferimento al [README relativo](MITADS/README.md). +In the folder MITADS there are all the scripts that allow the generation of the textual corpus [MITADS](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/tag/Mitads-1.0.0-alpha2). Please refer to the [related README](MITADS/README.md) for more information. -### Addestramento del modello +### Model Training -Fare riferimento al [README](DeepSpeech/README.md) nella cartella DeepSpeech per la documentazione necessaria per creare l'immagine Docker utilizzata per addestrare il modello acustico e del linguaggio. +Refer to the [README](DeepSpeech/README.md) in the DeepSpeech folder for the documentation needed to create the Docker image used to train the acoustic and language model. -### Generare il modello con COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) +### Generate the model with COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -Fare riferimento al [README in notebooks](notebooks/README.md). +Refer to the [README in notebooks](notebooks/README.md). -### Come programmare con DeepSpeech +### How to program with DeepSpeech -Fare riferimento al nostro [wiki](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/wiki) in costruzione che contiene link e altro materiale. +Refer to our [wiki](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/wiki) under construction which contains links and other material. -### Risorse +### Resources -* [Roadmap per lo sviluppo](https://docs.google.com/document/d/1cep28JAv9f90LkIpVmJjR0lTDqW5Hp_YF7R-nVJ2zkY/edit) -* [Pacchetto di esempio su come è strutturato il dataset di Common Voice](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz) -* Esempi di importatore di dataset minimali: ldc93s1 [python per DeepSpeech](https://github.com/mozilla/DeepSpeech/blob/master/bin/import_ldc93s1.py) e [lanciatore bash](https://github.com/mozilla/DeepSpeech/blob/master/bin/run-ldc93s1.sh) +* [Roadmap for Development](https://docs.google.com/document/d/1cep28JAv9f90LkIpVmJjR0lTDqW5Hp_YF7R-nVJ2zkY/edit) +* [Sample package on how the Common Voice dataset is structured](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz) +* Examples of minimal dataset importer: ldc93s1 [python for DeepSpeech](https://github.com/mozilla/DeepSpeech/blob/master/bin/import_ldc93s1.py) and [bash launcher](https://github.com/mozilla/DeepSpeech/blob/master/bin/run-ldc93s1.sh) * https://voice.mozilla.org/it * https://github.com/mozilla/DeepSpeech * https://github.com/mozilla/voice-corpus-tool * https://github.com/Common-Voice/sentence-collector -* https://github.com/Common-Voice/commonvoice-fr - Il repository da cui questo è derivato -* https://github.com/MozillaItalia/voice-web - Il dataset primario di frasi italiane lo manteniamo qui +* https://github.com/Common-Voice/commonvoice-fr - The repository from which this is derived +* https://github.com/MozillaItalia/voice-web - The primary dataset of Italian phrases we maintain here diff --git a/notebooks/README.md b/notebooks/README.md index 1bdf69b8..a37f8480 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -1,29 +1,31 @@ # Colab notebooks per DeepSpeech +*Read this in other languages: [Italian](README.it-IT.md)* -Colab notebooks dedicati allo sviluppo del modello DeepSpeech. -* ```deepspeech_lm.ipynb```: notebook per generare il language model (scorer) -* ```deepspeech_training.ipynb```: notebook dedicato al training con possibilità di fine tuning e transfer learning +Colab notebooks dedicated to the development of the DeepSpeech model. +* ``deepspeech_lm.ipynb``: notebook to generate the language model (scorer) +* ``deepspeech_training.ipynb``: notebook dedicated to the training with possibility of fine tuning and transfer learning -## Attenzione! -* Dedicare un po' di tempo a leggere ogni cella del notebook :) non caricarle tutte insieme! +## Attention! +* Take some time to read each cell of the notebook :) don't load them all at once! ## Quick Start +### Just click here: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -### o manualmente: +### or manually: - * Andare su: https://colab.research.google.com/ con il vostro account Google - * Se non viene visualizzato il popup per l'upload dei notebooks, andare su ```File -> Open notebook``` - * Selezionare la tab ```Github``` e copincollare l'url al notebook di questa repository - * Generare il modello del linguaggio caricando il notebook ```deepspeech_lm.ipynb``` - * Salvare il modello del linguaggio generato (```scorer```), caricare il notebook ```deepspeech_training.ipynb``` e copiare nel path corretto lo scorer - * Modificare a piacimento i parametri di training e divertirsi :) + * go to: https://colab.research.google.com/ with your Google account + * If you don't see the popup for uploading notebooks, go to ``File -> Open notebook`` + * Select the tab ``Github`` and copy-paste the url to the notebook of this repository + * Generate the language model by loading the notebook ``deepspeech_lm.ipynb``. + * Save the generated language model (``scorer``), load the notebook ``deepspeech_training.ipynb`` and copy the scorer to the correct path. + * Modify the training parameters at will and have fun :) -## Requisiti +## Requirements -* (training) spazio di archiviazione aggiuntivo di Google Drive - * i dataset attuali CV-IT e M-AILABS occupano ~30GB -* (training) Tipo di istanza: GPU - * a seconda della GPU assegnata, la memoria disponbile potrebbe non essere sufficiente. Nel caso, diminuire il valore di ```BATCH_SIZE``` . Per vedere le caratteristiche della GPU che si sta usando eseguite una cella con il comando ```!nvidia-smi``` +* (training) additional Google Drive storage space + * current CV-IT and M-AILABS datasets occupy ~30GB +* (training) Instance type: GPU + * depending on the assigned GPU, the available memory may not be enough. In case, decrease the value of ``BATCH_SIZE`` . To see the characteristics of the GPU you are using run a cell with the command ``!nvidia-smi`` From 89178d664486b02394c063abb6d2f8815b815018 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 15:09:55 +0100 Subject: [PATCH 11/13] add missed it readme --- README.it-IT.md | 81 +++++++++++++++++++++++++++++++++++++++ notebooks/README.it-IT.md | 29 ++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 README.it-IT.md create mode 100644 notebooks/README.it-IT.md diff --git a/README.it-IT.md b/README.it-IT.md new file mode 100644 index 00000000..616b0263 --- /dev/null +++ b/README.it-IT.md @@ -0,0 +1,81 @@ +# DeepSpeech Italian Model + +Aggregatore degli strumenti per la generazione di un modello di machine learning per la lingua Italiana del progetto Common Voice. Ci trovi su Telegram con il nostro bot [@mozitabot](https://t.me/mozitabot) nel gruppo Developers dove dirigiamo e discutiamo lo sviluppo oppure sul [forum](https://discourse.mozilla.org/c/community-portal/mozilla-italia). + +--- + +## Regole + +* Ticket e pull requests in inglese +* Readme in Italiano + +## Requisiti + +Python 3.7+ + +## Quick Start + +### Usa colab: +
+ +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +### oppure: +```bash + + # Attiva un virtualenv + virtualenv -p python3 $HOME/tmp/deepspeech-venv/ + source $HOME/tmp/deepspeech-venv/bin/activate + + # Installa DeepSpeech + pip3 install deepspeech==0.9.3 + + # Scarica e scompatta i file per il modello italiano (verifica l'ultima versione rilasciata!) + curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/model_tensorflow_it.tar.xz + tar xvf model_tensorflow_it.tar.xz + + # Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!) + curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz + tar xvf transfer_model_tensorflow_it.tar.xz + + # estrai un sample a caso dal dataset cv_tiny + wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_it_19574474.wav + + # Trascrivi (audio MONO, formato WAV e campionato a 16000Hz) + deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_it_19574474.wav +``` + +### Differenze del modello italiano puro e con transfer learning + +Da 08/2020 rilasciamo il modello in due versioni, puro ovvero solo dataset di lingua italiana (specificato nel release) e la versione con transfer learning. +La seconda versione include il transfer learning dal modello di lingua ufficiale rilasciato da Mozilla, che include altri dataset oltre a quello di Common Voice superando le oltre 7000 ore di materiale. Questo modello si è dimostrato molto piú affidabile nel riconoscimento viste le poche ore di lingua italiana che disponiamo al momento. + +## Sviluppo + +### Corpora per il modello del linguaggio + +Nella cartella MITADS sono presenti tutti gli script che permettono la generazione del corpus testuale [MITADS](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/tag/Mitads-1.0.0-alpha2). Per maggiori informazioni fare riferimento al [README relativo](MITADS/README.md). + +### Addestramento del modello + +Fare riferimento al [README](DeepSpeech/README.md) nella cartella DeepSpeech per la documentazione necessaria per creare l'immagine Docker utilizzata per addestrare il modello acustico e del linguaggio. + +### Generare il modello con COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +Fare riferimento al [README in notebooks](notebooks/README.md). + +### Come programmare con DeepSpeech + +Fare riferimento al nostro [wiki](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/wiki) in costruzione che contiene link e altro materiale. + +### Risorse + +* [Roadmap per lo sviluppo](https://docs.google.com/document/d/1cep28JAv9f90LkIpVmJjR0lTDqW5Hp_YF7R-nVJ2zkY/edit) +* [Pacchetto di esempio su come è strutturato il dataset di Common Voice](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz) +* Esempi di importatore di dataset minimali: ldc93s1 [python per DeepSpeech](https://github.com/mozilla/DeepSpeech/blob/master/bin/import_ldc93s1.py) e [lanciatore bash](https://github.com/mozilla/DeepSpeech/blob/master/bin/run-ldc93s1.sh) +* https://voice.mozilla.org/it +* https://github.com/mozilla/DeepSpeech +* https://github.com/mozilla/voice-corpus-tool +* https://github.com/Common-Voice/sentence-collector +* https://github.com/Common-Voice/commonvoice-fr - Il repository da cui questo è derivato +* https://github.com/MozillaItalia/voice-web - Il dataset primario di frasi italiane lo manteniamo qui diff --git a/notebooks/README.it-IT.md b/notebooks/README.it-IT.md new file mode 100644 index 00000000..1bdf69b8 --- /dev/null +++ b/notebooks/README.it-IT.md @@ -0,0 +1,29 @@ +# Colab notebooks per DeepSpeech + +Colab notebooks dedicati allo sviluppo del modello DeepSpeech. +* ```deepspeech_lm.ipynb```: notebook per generare il language model (scorer) +* ```deepspeech_training.ipynb```: notebook dedicato al training con possibilità di fine tuning e transfer learning + + +## Attenzione! +* Dedicare un po' di tempo a leggere ogni cella del notebook :) non caricarle tutte insieme! + +## Quick Start + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +### o manualmente: + + * Andare su: https://colab.research.google.com/ con il vostro account Google + * Se non viene visualizzato il popup per l'upload dei notebooks, andare su ```File -> Open notebook``` + * Selezionare la tab ```Github``` e copincollare l'url al notebook di questa repository + * Generare il modello del linguaggio caricando il notebook ```deepspeech_lm.ipynb``` + * Salvare il modello del linguaggio generato (```scorer```), caricare il notebook ```deepspeech_training.ipynb``` e copiare nel path corretto lo scorer + * Modificare a piacimento i parametri di training e divertirsi :) + +## Requisiti + +* (training) spazio di archiviazione aggiuntivo di Google Drive + * i dataset attuali CV-IT e M-AILABS occupano ~30GB +* (training) Tipo di istanza: GPU + * a seconda della GPU assegnata, la memoria disponbile potrebbe non essere sufficiente. Nel caso, diminuire il valore di ```BATCH_SIZE``` . Per vedere le caratteristiche della GPU che si sta usando eseguite una cella con il comando ```!nvidia-smi``` From 4dfb8543ac168b1e0b6f0e671c127c2e5ee97927 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 15:07:43 +0100 Subject: [PATCH 12/13] ENG readme as default add IT readme link --- DeepSpeech/README.it-IT.md | 134 ++++++++++++++++++++++++++++++++++ DeepSpeech/README.md | 115 ++++++++++++++--------------- DeepSpeech/it/README.it-IT.md | 18 +++++ DeepSpeech/it/README.md | 25 ++++--- MITADS/README.it-IT.md | 32 ++++++++ MITADS/README.md | 23 +++--- README.md | 74 ++++++++++--------- notebooks/README.md | 36 ++++----- 8 files changed, 324 insertions(+), 133 deletions(-) create mode 100644 DeepSpeech/README.it-IT.md create mode 100644 DeepSpeech/it/README.it-IT.md create mode 100644 MITADS/README.it-IT.md diff --git a/DeepSpeech/README.it-IT.md b/DeepSpeech/README.it-IT.md new file mode 100644 index 00000000..66c4807d --- /dev/null +++ b/DeepSpeech/README.it-IT.md @@ -0,0 +1,134 @@ +DeepSpeech ITA +================= + +* [Generare il modello](#generate) + * [CommonVoice Dataset](#cv) + * [Creare immagine Docker](#docker) + * [Avviare l'addestramento](#training) + * [Eseguire i singoli step](#steps) +* [Configurazione del container Docker](#config) + * [Env files](#env_files) +* [Lista dei parametri](#params) + + + +## Generare il modello + +#### Attenzione! +Prima di iniziare, la nuova immagine base Docker di Deepspeech necessita di [nvidia-docker](https://github.com/NVIDIA/nvidia-docker). + +Nel README della repository di NVIDIA trovate le istruzioni a seconda del vostro sistema. + +Durante il processo di training la cartella ```$HOME/data``` occuperá diverse decine di GB di spazio sul disco. Se si vuole usare un'altra cartella (es. su un'altra partizione) sostituire in _tutti_ i comandi successivi ```$HOME/data``` con il path della nuova cartella. + + +### Preparare il dataset di CommonVoice + +* Scaricare il dataset [CommonVoice italiano](https://commonvoice.mozilla.org/it/datasets) in ```$HOME/data``` + + +```bash + cd $HOME + mkdir -p data/sources + chmod a+rwx -R data + mv it.tar.gz data/sources # versione 3 di common voice + chmod a+r data/sources/it.tar.gz + ``` + + +### Creare l'immagine Docker + +```bash +cd $HOME +git clone MozillaItalia/DeepSpeech-Italian-Model.git + +cd DeepSpeech-Italian-Model/DeepSpeech +chmod +x generate_base_dockerfile.sh +./generate_base_dockerfile.sh + +# build base +docker build . -f Dockerfile.train -t deepspeech/base:0.9.3 +# build italiana +docker build . -f Dockerfile_it.train -t deepspeech/it +``` + + +### Avviare l'addestramento + + * Avviando l'immagine verrà eseguita la routine di addestramento con i valori già preimpostati nel Dockerfile: + + + ```bash + docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +``` +* **ATTENZIONE** Lo Step di addestramento vero e proprio potrà essere eseguito solamente con l'interazione dell'utente (`Press a button to continue..`) permettendo un check finale dei parametri che verranno passati a DeepSpeech + +* Terminata l'esecuzione nella directory `$HOME/data` o nella directory `/mnt` nel container Docker, verranno creati i files: + * `it-it.zip` contenente il modello TFlite + * `mode_tensorflow_it.tar.xz` contenente il modello memory mapped + * `checkpoint_it.tar.xz` contenente l'ultimo checkpoint dal validation set + + +### Eseguire i singoli step + +È possibile fare override dell'istruzione `entrypoint` di Docker per utilizzare la shell del container. In questo modo possono essere avviati singolarmente i vari script per poter sperimentare. + +Per maggiori informazioni sul ruolo dei vari script si rimanda al relativo [README](it/README.md) + +```bash +docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt --entrypoint /bin/bash -it deepspeech/it +``` + + +## Configurazione del container Docker + +È possibile modificare i parametri impostati nel ```Dockerfile_it.train``` utilizzando il flag ```-e``` seguito dal nome della variabile e il suo nuovo valore. + +```bash + docker run -e "TRANSFER_LEARNING=1" -e "DROP_SOURCE_LAYERS=3" --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +``` + + +### .env files + +In combinazione al flag ```-e``` è possibile modificare i parametri del Dockerfile con un file ```.env``` contenente la lista dei parametri da passare. + +Alcuni ```.env``` files di esempio sono presenti nella cartella ```DeepSpeech/env_files``` e possono essere passati tramite il flag ```--env-file``` al ```run``` di Docker. + +* ```fast_dev.env```: ogni passaggio dell'addestramento di DeepSpeech verrà eseguito velocemente per testare ogni step. + +```bash +cat fast_dev.env + BATCH_SIZE=2 + EPOCHS=2 + FAST_TRAIN=1 +docker run --env-file env_files/fast_dev.env --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +``` + +* ```do_transfer_learning.env```: viene aggiunto il flag ```DROP_SOURCE_LAYERS=1``` e verrà utilizzato il checkpoint del modello inglese di DeepSpeech. + +* ```only_export.env```: se presente un checkpoint di una precedente iterazione, viene saltata la fase di addestramento e si procede alla creazione dei vari files binari del modello + +* ```run_lm_optimizer.env```: viene aggiornato il flag ```LM_EVALUATE_RANGE=5,5,600``` per avviare lo script ```lm_optimizer.py``` su 600 iterazioni per cercare i migliori valori di ```ALPHA``` e ```BETA``` su un range ```[5,5]``` + + +### Lista dei parametri + +Per approfondire il significato dei flag e parametri seguenti, sono presenti maggiori dettagli [QUI](http://deepspeech.readthedocs.io/en/v0.8.0/Flags.html) + +| PARAMETRO | VALORE | note | +| ------------- | ------------- | ------------- | +| `BATCH_SIZE` | `64` | +| `EPOCHS` | `30` |numero di iterazioni +| `LEARNING_RATE`| `0.0001` | +| `N_HIDDEN`| `2048` | +| `EARLY_STOP`| `1` | se `1`, dopo `ES_STOP` iterazioni il valore loss del modello non migliora, l'addestramento si ferma +| `ES_STOP` | `10` | Default in DeepSpeech inglese: `25` +| `MAX_TO_KEEP` | `2` | quanti checkpoints salvare. Default in DeepSpeech inglese: `5` +| `DROPOUT` | `0.4` | +| `LM_ALPHA` | `0` | +| `LM_BETA` | `0` | +| `LM_EVALUATE_RANGE`| - | tripletta di valori `MAX_ALPHA,MAX_BETA,N_TRIALS` da assegnare allo script `lm_optimizer.py` (es `5,5,600`) +| `AMP` | `1` | se `TRANSFER_LEARNING` abilitato, questo parametro viene disabilitato. Maggiori informazioni [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html?highlight=automatic%20mixed%20precision#training-with-automatic-mixed-precision) +| `TRANSFER_LEARNING` | `0` | se `1`, `DROP_SOURCE_LAYERS` viene impostato a `1` e si avvia l'apprendimento dal checkpoint di DeepSpeech inglese scartando l'ultimo layer della rete (maggiori info [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html#transfer-learning-new-alphabet)) +| `FAST_TRAIN` | 0 | se `1` si avvia un addestramento rapido solamente per controllare che tutti gli step vadano a buon fine diff --git a/DeepSpeech/README.md b/DeepSpeech/README.md index 66c4807d..eb7e8181 100644 --- a/DeepSpeech/README.md +++ b/DeepSpeech/README.md @@ -1,42 +1,43 @@ DeepSpeech ITA ================= +*Read this in other languages: [Italian](README.it-IT.md)* -* [Generare il modello](#generate) +* [Generate the model](#generate) * [CommonVoice Dataset](#cv) - * [Creare immagine Docker](#docker) - * [Avviare l'addestramento](#training) - * [Eseguire i singoli step](#steps) -* [Configurazione del container Docker](#config) + * [Create Docker Image](#docker) + * [Start training](#training) + * [Execute individual steps](#steps) +* [Docker container configuration](#config) * [Env files](#env_files) -* [Lista dei parametri](#params) +* [Parameter list](#params) -## Generare il modello +## Generate the model -#### Attenzione! -Prima di iniziare, la nuova immagine base Docker di Deepspeech necessita di [nvidia-docker](https://github.com/NVIDIA/nvidia-docker). +#### Warning! +Before we start, the new Deepspeech Docker base image needs [nvidia-docker](https://github.com/NVIDIA/nvidia-docker). -Nel README della repository di NVIDIA trovate le istruzioni a seconda del vostro sistema. +In the README of the NVIDIA repository you will find instructions depending on your system. -Durante il processo di training la cartella ```$HOME/data``` occuperá diverse decine di GB di spazio sul disco. Se si vuole usare un'altra cartella (es. su un'altra partizione) sostituire in _tutti_ i comandi successivi ```$HOME/data``` con il path della nuova cartella. +During the training process the folder ``$HOME/data`` will take up several tens of GB of disk space. If you want to use another folder (e.g. on another partition) replace in _all_ the following commands ``$HOME/data`` with the path to the new folder. -### Preparare il dataset di CommonVoice +### Prepare CommonVoice dataset -* Scaricare il dataset [CommonVoice italiano](https://commonvoice.mozilla.org/it/datasets) in ```$HOME/data``` +* Download the dataset [CommonVoice italian](https://commonvoice.mozilla.org/it/datasets) in ``$HOME/data`` ```bash cd $HOME mkdir -p data/sources chmod a+rwx -R data - mv it.tar.gz data/sources # versione 3 di common voice - chmod a+r data/sources/it.tar.gz + mv en.tar.gz data/sources # version 3 of common voice + chmod a+r data/sources/en.tar.gz ``` -### Creare l'immagine Docker +### Create the Docker image ```bash cd $HOME @@ -48,87 +49,87 @@ chmod +x generate_base_dockerfile.sh # build base docker build . -f Dockerfile.train -t deepspeech/base:0.9.3 -# build italiana +# Italian build docker build . -f Dockerfile_it.train -t deepspeech/it ``` -### Avviare l'addestramento +### Start training - * Avviando l'immagine verrà eseguita la routine di addestramento con i valori già preimpostati nel Dockerfile: + * Starting the image will run the training routine with the values already preset in the Dockerfile: ```bash docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it ``` -* **ATTENZIONE** Lo Step di addestramento vero e proprio potrà essere eseguito solamente con l'interazione dell'utente (`Press a button to continue..`) permettendo un check finale dei parametri che verranno passati a DeepSpeech +* **WARNING** The real training step can be executed only with the user interaction (`Press a button to continue..`) allowing a final check of the parameters that will be passed to DeepSpeech. -* Terminata l'esecuzione nella directory `$HOME/data` o nella directory `/mnt` nel container Docker, verranno creati i files: - * `it-it.zip` contenente il modello TFlite - * `mode_tensorflow_it.tar.xz` contenente il modello memory mapped - * `checkpoint_it.tar.xz` contenente l'ultimo checkpoint dal validation set +* After the execution in the directory `$HOME/data` or in the directory `/mnt` in the Docker container, the files will be created: + * `it-it.zip` containing the TFlite model. + * `mode_tensorflow_it.tar.xz` containing the memory mapped model + * `checkpoint_en.tar.xz` containing the last checkpoint from the validation set -### Eseguire i singoli step +### Execute individual steps -È possibile fare override dell'istruzione `entrypoint` di Docker per utilizzare la shell del container. In questo modo possono essere avviati singolarmente i vari script per poter sperimentare. +You can override Docker's `entrypoint` statement to use the container shell. This way the various scripts can be started individually for experimentation. -Per maggiori informazioni sul ruolo dei vari script si rimanda al relativo [README](it/README.md) +For more information on the role of the various scripts see the related [README](en/README.md) ```bash docker run --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt --entrypoint /bin/bash -it deepspeech/it ``` -## Configurazione del container Docker +## Docker container configuration -È possibile modificare i parametri impostati nel ```Dockerfile_it.train``` utilizzando il flag ```-e``` seguito dal nome della variabile e il suo nuovo valore. +You can change the parameters set in the ``Dockerfile_en.train`` using the ``-e`` flag followed by the variable name and its new value. ```bash - docker run -e "TRANSFER_LEARNING=1" -e "DROP_SOURCE_LAYERS=3" --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it + docker run -e "TRANSFER_LEARNING=1" -e "DROP_SOURCE_LAYERS=3" --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/en ``` ### .env files -In combinazione al flag ```-e``` è possibile modificare i parametri del Dockerfile con un file ```.env``` contenente la lista dei parametri da passare. +In combination with the ``-e`` flag it is possible to modify the Dockerfile parameters with a ``.env`` file containing the list of parameters to be passed. -Alcuni ```.env``` files di esempio sono presenti nella cartella ```DeepSpeech/env_files``` e possono essere passati tramite il flag ```--env-file``` al ```run``` di Docker. +Some example ```.env``` files are present in the ``DeepSpeech/env_files`` folder and can be passed via the ``--env-file`` flag to the Docker ``run``. -* ```fast_dev.env```: ogni passaggio dell'addestramento di DeepSpeech verrà eseguito velocemente per testare ogni step. +* ``fast_dev.env``: each step of DeepSpeech training will be run fast to test each step. ```bash cat fast_dev.env BATCH_SIZE=2 EPOCHS=2 FAST_TRAIN=1 -docker run --env-file env_files/fast_dev.env --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/it +docker run --env-file env_files/fast_dev.env --rm --gpus all --mount type=bind,src=$HOME/data,dst=/mnt -it deepspeech/en ``` -* ```do_transfer_learning.env```: viene aggiunto il flag ```DROP_SOURCE_LAYERS=1``` e verrà utilizzato il checkpoint del modello inglese di DeepSpeech. +* ```do_transfer_learning.env```: the flag ```DROP_SOURCE_LAYERS=1``` is added and the checkpoint of the DeepSpeech English model will be used. -* ```only_export.env```: se presente un checkpoint di una precedente iterazione, viene saltata la fase di addestramento e si procede alla creazione dei vari files binari del modello +* ```only_export.env```: if a checkpoint of a previous iteration is present, the training phase is skipped and the various binary files of the model are created -* ```run_lm_optimizer.env```: viene aggiornato il flag ```LM_EVALUATE_RANGE=5,5,600``` per avviare lo script ```lm_optimizer.py``` su 600 iterazioni per cercare i migliori valori di ```ALPHA``` e ```BETA``` su un range ```[5,5]``` +* ``run_lm_optimizer.env``: the flag ```LM_EVALUATE_RANGE=5,5,600``` is updated to run the script ```lm_optimizer.py``` over 600 iterations to find the best values of ``ALPHA`` and ``BETA`` over a range ``[5,5]`` -### Lista dei parametri - -Per approfondire il significato dei flag e parametri seguenti, sono presenti maggiori dettagli [QUI](http://deepspeech.readthedocs.io/en/v0.8.0/Flags.html) - -| PARAMETRO | VALORE | note | -| ------------- | ------------- | ------------- | -| `BATCH_SIZE` | `64` | -| `EPOCHS` | `30` |numero di iterazioni -| `LEARNING_RATE`| `0.0001` | -| `N_HIDDEN`| `2048` | -| `EARLY_STOP`| `1` | se `1`, dopo `ES_STOP` iterazioni il valore loss del modello non migliora, l'addestramento si ferma -| `ES_STOP` | `10` | Default in DeepSpeech inglese: `25` -| `MAX_TO_KEEP` | `2` | quanti checkpoints salvare. Default in DeepSpeech inglese: `5` -| `DROPOUT` | `0.4` | -| `LM_ALPHA` | `0` | -| `LM_BETA` | `0` | -| `LM_EVALUATE_RANGE`| - | tripletta di valori `MAX_ALPHA,MAX_BETA,N_TRIALS` da assegnare allo script `lm_optimizer.py` (es `5,5,600`) -| `AMP` | `1` | se `TRANSFER_LEARNING` abilitato, questo parametro viene disabilitato. Maggiori informazioni [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html?highlight=automatic%20mixed%20precision#training-with-automatic-mixed-precision) -| `TRANSFER_LEARNING` | `0` | se `1`, `DROP_SOURCE_LAYERS` viene impostato a `1` e si avvia l'apprendimento dal checkpoint di DeepSpeech inglese scartando l'ultimo layer della rete (maggiori info [QUI](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html#transfer-learning-new-alphabet)) -| `FAST_TRAIN` | 0 | se `1` si avvia un addestramento rapido solamente per controllare che tutti gli step vadano a buon fine +### Parameters list + +More details on the meaning of the following flags and parameters can be found [HERE](http://deepspeech.readthedocs.io/en/v0.8.0/Flags.html) + +| PARAMETER | VALUE | notes | +| ------------- | ------------- | ------------- | +| `BATCH_SIZE` | `64` | +| `EPOCHS` | `30` | number of iterations +| `LEARNING_RATE`| `0.0001` | +| `N_HIDDEN`| `2048` | +| `EARLY_STOP`| `1` | if `1`, after `ES_STOP` iterations the loss value of the model does not improve, the training stops +| `ES_STOP` | `10` | Default in English DeepSpeech: `25` +| `MAX_TO_KEEP` | `2` | how many checkpoints to save. Default in DeepSpeech English: `5` +| `DROPOUT` | `0.4` | +| `LM_ALPHA` | `0` | +| `LM_BETA` | `0` | +| `LM_EVALUATE_RANGE`| - | triplet of values `MAX_ALPHA,MAX_BETA,N_TRIALS` to be assigned to the script `lm_optimizer.py` (e.g. `5,5,600`) +| `AMP` | `1` | if `TRANSFER_LEARNING` enabled, this parameter is disabled. More information [HERE](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html?highlight=automatic%20mixed%20precision#training-with-automatic-mixed-precision) +| `TRANSFER_LEARNING` | `0` | if `1`, `DROP_SOURCE_LAYERS` is set to `1` and start learning from the English DeepSpeech checkpoint discarding the last layer of the network (more info [HERE](https://deepspeech.readthedocs.io/en/v0.8.0/TRAINING.html#transfer-learning-new-alphabet)) +| `FAST_TRAIN` | 0 | if `1` you start a fast training just to check that all steps are successful diff --git a/DeepSpeech/it/README.it-IT.md b/DeepSpeech/it/README.it-IT.md new file mode 100644 index 00000000..4970a2b6 --- /dev/null +++ b/DeepSpeech/it/README.it-IT.md @@ -0,0 +1,18 @@ +Step per l'addestramento del modello +================= +
+ +Una volta avviato il container Docker gli script che vengono eseguiti sono, in ordine: + +| SCRIPT | | +| ------------- | ------------- | +| `../check.sh` | Esegue un semplice check controllando che tutte le directories necessarie siano state create e avvia due iterazioni su un mini dataset | +| `../generate_alphabet.sh` | se non è presente il file `/mnt/models/alphabet.txt`, viene preso e copiato da `~/data` | +| `import_cvit_tiny.sh` | importa il dataset di prova `cv_tiny` se il flag `FAST_TRAIN` è impostato pari a `1` sennò viene saltato | +| `import_cvit.sh` | importa il dataset italiano di CommonVoice scompattandolo da `/mnt/sources/it.tar.gz` | +| `import_m-ailabs.sh` | scarica e importa il dataset italiano di M-AILABS | +| `build_lm.sh` | scarica il corpora `mitads.txt` se non presente e avvia la creazione del package scorer `scorer` dopo aver creato il file `lm.binary` e `vocab-500000.txt` | +| `train.sh` | avvia l'addestramento vero e proprio **solo dopo conferma dell'utente**. Se presente il flag `TRANSFER_LEARNING=1` viene scaricato il checkpoint della release inglese, viene aggiunto il flag `DROP_SOURCE_LAYERS=1` e si utilizzano i pesi di tutti i layers ma non dell'ultimo (il layer di output della rete). +| `export.sh` | Controlla la directory `/mnt/models` e, se non presenti, genera i files binari dei modelli per: Tensorflow, TFLite, zip contenente il modello TFLite e scorer, il modello Tensorflow memory mapped| +| `evaluate_lm.sh` | se `LM_EVALUATE_RANGE` contiene una tripletta di interi positivi `ALPHA_MAX,BETA_MAX,N_TRIALS` viene avviato lo script `lm_optimizer.py` di DeepSpeech per cercare entro `N_TRIALS` tentativi il miglior valore di `LM_ALPHA` e `LM_BETA` che minimizzano il Word Error Rate sul Validation Set. Una volta ottenuti, si dovrà eseguire nuovamente lo script `./generate_scorer_package` di DeepSpeech per ricreare il nuovo scorer con i flag `default_alpha` e `default_beta` pari ai nuovi ottenuti | +| `../package.sh` | Controlla la directory `/mnt` e, se non presenti, genera gli archivi: `model_tensorflow_it.tar.xz` con il file memory mapped, `scorer` e `alphabet.txt`, `model_tflite_it.tar.xz` con il modello TFLite, `scorer` e `alphabet.txt`, `checkpoint_it.tar.xz` con gli ultimi `best_dev_checkpoint_xxx`. Infine copia i files `.zip` in `/mnt/models/` in `/mnt/` diff --git a/DeepSpeech/it/README.md b/DeepSpeech/it/README.md index 4970a2b6..b43a5e8d 100644 --- a/DeepSpeech/it/README.md +++ b/DeepSpeech/it/README.md @@ -1,18 +1,19 @@ -Step per l'addestramento del modello +Model Training Steps ================= +*Read this in other languages: [Italian](README.it-IT.md)*
-Una volta avviato il container Docker gli script che vengono eseguiti sono, in ordine: +Once the Docker container is started, the scripts that are executed are, in order: | SCRIPT | | | ------------- | ------------- | -| `../check.sh` | Esegue un semplice check controllando che tutte le directories necessarie siano state create e avvia due iterazioni su un mini dataset | -| `../generate_alphabet.sh` | se non è presente il file `/mnt/models/alphabet.txt`, viene preso e copiato da `~/data` | -| `import_cvit_tiny.sh` | importa il dataset di prova `cv_tiny` se il flag `FAST_TRAIN` è impostato pari a `1` sennò viene saltato | -| `import_cvit.sh` | importa il dataset italiano di CommonVoice scompattandolo da `/mnt/sources/it.tar.gz` | -| `import_m-ailabs.sh` | scarica e importa il dataset italiano di M-AILABS | -| `build_lm.sh` | scarica il corpora `mitads.txt` se non presente e avvia la creazione del package scorer `scorer` dopo aver creato il file `lm.binary` e `vocab-500000.txt` | -| `train.sh` | avvia l'addestramento vero e proprio **solo dopo conferma dell'utente**. Se presente il flag `TRANSFER_LEARNING=1` viene scaricato il checkpoint della release inglese, viene aggiunto il flag `DROP_SOURCE_LAYERS=1` e si utilizzano i pesi di tutti i layers ma non dell'ultimo (il layer di output della rete). -| `export.sh` | Controlla la directory `/mnt/models` e, se non presenti, genera i files binari dei modelli per: Tensorflow, TFLite, zip contenente il modello TFLite e scorer, il modello Tensorflow memory mapped| -| `evaluate_lm.sh` | se `LM_EVALUATE_RANGE` contiene una tripletta di interi positivi `ALPHA_MAX,BETA_MAX,N_TRIALS` viene avviato lo script `lm_optimizer.py` di DeepSpeech per cercare entro `N_TRIALS` tentativi il miglior valore di `LM_ALPHA` e `LM_BETA` che minimizzano il Word Error Rate sul Validation Set. Una volta ottenuti, si dovrà eseguire nuovamente lo script `./generate_scorer_package` di DeepSpeech per ricreare il nuovo scorer con i flag `default_alpha` e `default_beta` pari ai nuovi ottenuti | -| `../package.sh` | Controlla la directory `/mnt` e, se non presenti, genera gli archivi: `model_tensorflow_it.tar.xz` con il file memory mapped, `scorer` e `alphabet.txt`, `model_tflite_it.tar.xz` con il modello TFLite, `scorer` e `alphabet.txt`, `checkpoint_it.tar.xz` con gli ultimi `best_dev_checkpoint_xxx`. Infine copia i files `.zip` in `/mnt/models/` in `/mnt/` +| `../check.sh` | Runs a simple check to make sure all necessary directories have been created and starts two iterations on a mini dataset | +| `../generate_alphabet.sh` | if the file `/mnt/models/alphabet.txt` is not present, it is taken and copied from `~/data` | +| `import_cvit_tiny.sh` | import the test dataset `cv_tiny` if the flag `FAST_TRAIN` is set equal to `1` otherwise it is skipped | +| `import_cvit.sh` | import the italian CommonVoice dataset unpacking it from `/mnt/sources/en.tar.gz` | +| `import_m-ailabs.sh` | download and import M-AILABS Italian dataset | +| `build_lm.sh` | download the corpora `mitads.txt` if not present and start the creation of the package scorer `scorer` after creating the file `lm.binary` and `vocab-500000.txt` | | +| `train.sh` | starts the actual training **only after user confirmation**. If the flag `TRANSFER_LEARNING=1` is present the English release checkpoint is downloaded, the flag `DROP_SOURCE_LAYERS=1` is added and the weights of all layers but not the last one (the network output layer) are used. +| `export.sh` | Checks the `/mnt/models` directory and, if not present, generates model binaries for: Tensorflow, TFLite, zipper containing TFLite model and scorer, Tensorflow model memory mapped|. +| `evaluate_lm.sh` | if `LM_EVALUATE_RANGE` contains a triplet of positive integers `ALPHA_MAX,BETA_MAX,N_TRIALS` the DeepSpeech script `lm_optimizer.py` is started to search within `N_TRIALS` attempts for the best value of `LM_ALPHA` and `LM_BETA` that minimize the Word Error Rate on the Validation Set. Once obtained, you will need to re-run DeepSpeech's `./generate_scorer_package` script to recreate the new scorer with the `default_alpha` and `default_beta` flags equal to the new ones obtained | +| `../package.sh` | Check the `/mnt` directory and, if not present, generate the archives: `model_tensorflow_en.tar.xz` with the memory mapped file, `scorer` and `alphabet. txt`, `model_tflite_en.tar.xz` with the TFLite model, `scorer` and `alphabet.txt`, `checkpoint_en.tar.xz` with the latest `best_dev_checkpoint_xxx`. Finally copy the files `.zip` in `/mnt/models/` to `/mnt/`. diff --git a/MITADS/README.it-IT.md b/MITADS/README.it-IT.md new file mode 100644 index 00000000..30826874 --- /dev/null +++ b/MITADS/README.it-IT.md @@ -0,0 +1,32 @@ +# Perché + +Lo scopo è quello di generare un corpus testuale con fonti libere, che il testo sia stato scritto dopo il 1920/30 per un Italiano più moderno e che il testo stesso sia colloquiale. + +# Installazione + +* Python 3.7+ + +``` +sudo apt install libdb-dev # per Ubuntu/Debian +pip3 install -r requirements.txt +``` + +## Gutenberg extractor + +Per utilizzare l'estrattore vanno inseriti in un file chiamato "books_list.txt" gli indirizzi alle pagine dei libri in formato html (con o senza immagini) mettendone uno per riga. +Questo file è già fornito con lo script. + +## OpenSubTitle exporter + +Richiede come primo parametro la cartella con il dataset di OpenSubTitles. + +## Wikiquote exporter + +Richiede che il dump di wikiquote sia scaricato e il file xml estratto. In automatico estrarra il contenuto generando un nuovo file di testo. + +## Wikisource extractor +L'estrattore utilizza una lista con il nome dei libri da scaricare da wikisource e poi processa i file txt dei libri uno ad uno e li pulisce e formatta e poi tutto viene tutto inserito in un unico file txt di output +Cose additionali da fare: aggiungere proxies per evitare ban, parallelizzare per velocità + +## Eulogos Chat extractor +A partire dalla home del sito vengono visitate le subpages contenenti i datasets delle chat ed estratto il contenuto. diff --git a/MITADS/README.md b/MITADS/README.md index 30826874..ec042d45 100644 --- a/MITADS/README.md +++ b/MITADS/README.md @@ -1,32 +1,33 @@ -# Perché +*Read this in other languages: [Italian](README.it-IT.md)* +# Why -Lo scopo è quello di generare un corpus testuale con fonti libere, che il testo sia stato scritto dopo il 1920/30 per un Italiano più moderno e che il testo stesso sia colloquiale. +The purpose is to generate a text corpus with free sources, that the text was written after 1920/30 for a more modern Italian and that the text itself is colloquial. -# Installazione +# Installation * Python 3.7+ ``` -sudo apt install libdb-dev # per Ubuntu/Debian +sudo apt install libdb-dev # for Ubuntu/Debian pip3 install -r requirements.txt ``` ## Gutenberg extractor -Per utilizzare l'estrattore vanno inseriti in un file chiamato "books_list.txt" gli indirizzi alle pagine dei libri in formato html (con o senza immagini) mettendone uno per riga. -Questo file è già fornito con lo script. +To use the extractor you have to insert in a file called "books_list.txt" the addresses to the pages of the books in html format (with or without images) putting one per line. +This file is already provided with the script. ## OpenSubTitle exporter -Richiede come primo parametro la cartella con il dataset di OpenSubTitles. +It requires as first parameter the folder with the OpenSubTitles dataset. ## Wikiquote exporter -Richiede che il dump di wikiquote sia scaricato e il file xml estratto. In automatico estrarra il contenuto generando un nuovo file di testo. +It requires that the wikiquote dump is downloaded and the xml file extracted. It will automatically extract the content generating a new text file. ## Wikisource extractor -L'estrattore utilizza una lista con il nome dei libri da scaricare da wikisource e poi processa i file txt dei libri uno ad uno e li pulisce e formatta e poi tutto viene tutto inserito in un unico file txt di output -Cose additionali da fare: aggiungere proxies per evitare ban, parallelizzare per velocità +The extractor uses a list with the name of the books to download from wikisource and then processes the txt files of the books one by one and cleans and formats them and then everything is put into a single txt output file. +Additional things to do: add proxies to avoid bans, parallelize for speed ## Eulogos Chat extractor -A partire dalla home del sito vengono visitate le subpages contenenti i datasets delle chat ed estratto il contenuto. +Starting from the home page of the site, the subpages containing the chat datasets are visited and the content is extracted. diff --git a/README.md b/README.md index 205eabed..3989398b 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,83 @@ # DeepSpeech Italian Model -Aggregatore degli strumenti per la generazione di un modello di machine learning per la lingua Italiana del progetto Common Voice. Ci trovi su Telegram con il nostro bot [@mozitabot](https://t.me/mozitabot) nel gruppo Developers dove dirigiamo e discutiamo lo sviluppo oppure sul [forum](https://discourse.mozilla.org/c/community-portal/mozilla-italia). +*Read this in other languages: [Italian](README.it-IT.md)* + +Aggregator of tools for generating a machine learning model for the Italian language of the Common Voice project. You can find us on Telegram with our bot [@mozitabot](https://t.me/mozitabot) in the Developers group where we direct and discuss development or on the [forum](https://discourse.mozilla.org/c/community-portal/mozilla-italia). --- -## Regole +## Rules -* Ticket e pull requests in inglese -* Readme in Italiano +* Ticket and pull requests in English +* Readme in Italian -## Requisiti +## Requirements Python 3.7+ ## Quick Start -### Usa colab: +### Use colab:
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -### oppure: +### or: ```bash - # Attiva un virtualenv + # Activate a virtualenv virtualenv -p python3 $HOME/tmp/deepspeech-venv/ source $HOME/tmp/deepspeech-venv/bin/activate - # Installa DeepSpeech + # Install DeepSpeech pip3 install deepspeech==0.9.3 - # Scarica e scompatta i file per il modello italiano (verifica l'ultima versione rilasciata!) + # Download and unpack the files for the Italian model (check the latest version released!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/model_tensorflow_it.tar.xz - tar xvf model_tensorflow_it.tar.xz + tar xvf model_tensorflow_en.tar.xz - # Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!) + # Or use the Italian model with transfer learning from the English one (check the latest released version!) curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz - tar xvf transfer_model_tensorflow_it.tar.xz - - # estrai un sample a caso dal dataset cv_tiny - wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_it_19574474.wav + tar xvf transfer_model_tensorflow_en.tar.xz + + # extract a random sample from the cv_tiny dataset + wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_en_19574474.wav - # Trascrivi (audio MONO, formato WAV e campionato a 16000Hz) - deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_it_19574474.wav + # Transcribe (MONO audio, WAV format and sampled at 16000Hz) + deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_en_19574474.wav ``` -### Differenze del modello italiano puro e con transfer learning +### Differences between pure italian model and with transfer learning -Da 08/2020 rilasciamo il modello in due versioni, puro ovvero solo dataset di lingua italiana (specificato nel release) e la versione con transfer learning. -La seconda versione include il transfer learning dal modello di lingua ufficiale rilasciato da Mozilla, che include altri dataset oltre a quello di Common Voice superando le oltre 7000 ore di materiale. Questo modello si è dimostrato molto piú affidabile nel riconoscimento viste le poche ore di lingua italiana che disponiamo al momento. +From 08/2020 we release the model in two versions, one "from scratch" that is only Italian language dataset (specified in the release) and another version trained with transfer learning technique. +The second one is trained from the official model checkpoint released by Mozilla, which includes other datasets in addition to the Common Voice one, exceeding more than 7000 hours of material. This model proved to be much more reliable in recognition given the few hours of Italian language that we have at the moment. -## Sviluppo +## Development -### Corpora per il modello del linguaggio +### Corpora for the language model -Nella cartella MITADS sono presenti tutti gli script che permettono la generazione del corpus testuale [MITADS](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/tag/Mitads-1.0.0-alpha2). Per maggiori informazioni fare riferimento al [README relativo](MITADS/README.md). +In the folder MITADS there are all the scripts that allow the generation of the textual corpus [MITADS](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/tag/Mitads-1.0.0-alpha2). Please refer to the [related README](MITADS/README.md) for more information. -### Addestramento del modello +### Model Training -Fare riferimento al [README](DeepSpeech/README.md) nella cartella DeepSpeech per la documentazione necessaria per creare l'immagine Docker utilizzata per addestrare il modello acustico e del linguaggio. +Refer to the [README](DeepSpeech/README.md) in the DeepSpeech folder for the documentation needed to create the Docker image used to train the acoustic and language model. -### Generare il modello con COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) +### Generate the model with COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -Fare riferimento al [README in notebooks](notebooks/README.md). +Refer to the [README in notebooks](notebooks/README.md). -### Come programmare con DeepSpeech +### How to program with DeepSpeech -Fare riferimento al nostro [wiki](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/wiki) in costruzione che contiene link e altro materiale. +Refer to our [wiki](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/wiki) under construction which contains links and other material. -### Risorse +### Resources -* [Roadmap per lo sviluppo](https://docs.google.com/document/d/1cep28JAv9f90LkIpVmJjR0lTDqW5Hp_YF7R-nVJ2zkY/edit) -* [Pacchetto di esempio su come è strutturato il dataset di Common Voice](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz) -* Esempi di importatore di dataset minimali: ldc93s1 [python per DeepSpeech](https://github.com/mozilla/DeepSpeech/blob/master/bin/import_ldc93s1.py) e [lanciatore bash](https://github.com/mozilla/DeepSpeech/blob/master/bin/run-ldc93s1.sh) +* [Roadmap for Development](https://docs.google.com/document/d/1cep28JAv9f90LkIpVmJjR0lTDqW5Hp_YF7R-nVJ2zkY/edit) +* [Sample package on how the Common Voice dataset is structured](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz) +* Examples of minimal dataset importer: ldc93s1 [python for DeepSpeech](https://github.com/mozilla/DeepSpeech/blob/master/bin/import_ldc93s1.py) and [bash launcher](https://github.com/mozilla/DeepSpeech/blob/master/bin/run-ldc93s1.sh) * https://voice.mozilla.org/it * https://github.com/mozilla/DeepSpeech * https://github.com/mozilla/voice-corpus-tool * https://github.com/Common-Voice/sentence-collector -* https://github.com/Common-Voice/commonvoice-fr - Il repository da cui questo è derivato -* https://github.com/MozillaItalia/voice-web - Il dataset primario di frasi italiane lo manteniamo qui +* https://github.com/Common-Voice/commonvoice-fr - The repository from which this is derived +* https://github.com/MozillaItalia/voice-web - The primary dataset of Italian phrases we maintain here diff --git a/notebooks/README.md b/notebooks/README.md index 1bdf69b8..a37f8480 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -1,29 +1,31 @@ # Colab notebooks per DeepSpeech +*Read this in other languages: [Italian](README.it-IT.md)* -Colab notebooks dedicati allo sviluppo del modello DeepSpeech. -* ```deepspeech_lm.ipynb```: notebook per generare il language model (scorer) -* ```deepspeech_training.ipynb```: notebook dedicato al training con possibilità di fine tuning e transfer learning +Colab notebooks dedicated to the development of the DeepSpeech model. +* ``deepspeech_lm.ipynb``: notebook to generate the language model (scorer) +* ``deepspeech_training.ipynb``: notebook dedicated to the training with possibility of fine tuning and transfer learning -## Attenzione! -* Dedicare un po' di tempo a leggere ogni cella del notebook :) non caricarle tutte insieme! +## Attention! +* Take some time to read each cell of the notebook :) don't load them all at once! ## Quick Start +### Just click here: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) -### o manualmente: +### or manually: - * Andare su: https://colab.research.google.com/ con il vostro account Google - * Se non viene visualizzato il popup per l'upload dei notebooks, andare su ```File -> Open notebook``` - * Selezionare la tab ```Github``` e copincollare l'url al notebook di questa repository - * Generare il modello del linguaggio caricando il notebook ```deepspeech_lm.ipynb``` - * Salvare il modello del linguaggio generato (```scorer```), caricare il notebook ```deepspeech_training.ipynb``` e copiare nel path corretto lo scorer - * Modificare a piacimento i parametri di training e divertirsi :) + * go to: https://colab.research.google.com/ with your Google account + * If you don't see the popup for uploading notebooks, go to ``File -> Open notebook`` + * Select the tab ``Github`` and copy-paste the url to the notebook of this repository + * Generate the language model by loading the notebook ``deepspeech_lm.ipynb``. + * Save the generated language model (``scorer``), load the notebook ``deepspeech_training.ipynb`` and copy the scorer to the correct path. + * Modify the training parameters at will and have fun :) -## Requisiti +## Requirements -* (training) spazio di archiviazione aggiuntivo di Google Drive - * i dataset attuali CV-IT e M-AILABS occupano ~30GB -* (training) Tipo di istanza: GPU - * a seconda della GPU assegnata, la memoria disponbile potrebbe non essere sufficiente. Nel caso, diminuire il valore di ```BATCH_SIZE``` . Per vedere le caratteristiche della GPU che si sta usando eseguite una cella con il comando ```!nvidia-smi``` +* (training) additional Google Drive storage space + * current CV-IT and M-AILABS datasets occupy ~30GB +* (training) Instance type: GPU + * depending on the assigned GPU, the available memory may not be enough. In case, decrease the value of ``BATCH_SIZE`` . To see the characteristics of the GPU you are using run a cell with the command ``!nvidia-smi`` From fb8e121da208525b4f901c742aac5f223c366865 Mon Sep 17 00:00:00 2001 From: nefastosaturo <10575994+nefastosaturo@users.noreply.github.com> Date: Tue, 19 Jan 2021 15:09:55 +0100 Subject: [PATCH 13/13] add missed it readme --- README.it-IT.md | 81 +++++++++++++++++++++++++++++++++++++++ notebooks/README.it-IT.md | 29 ++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 README.it-IT.md create mode 100644 notebooks/README.it-IT.md diff --git a/README.it-IT.md b/README.it-IT.md new file mode 100644 index 00000000..616b0263 --- /dev/null +++ b/README.it-IT.md @@ -0,0 +1,81 @@ +# DeepSpeech Italian Model + +Aggregatore degli strumenti per la generazione di un modello di machine learning per la lingua Italiana del progetto Common Voice. Ci trovi su Telegram con il nostro bot [@mozitabot](https://t.me/mozitabot) nel gruppo Developers dove dirigiamo e discutiamo lo sviluppo oppure sul [forum](https://discourse.mozilla.org/c/community-portal/mozilla-italia). + +--- + +## Regole + +* Ticket e pull requests in inglese +* Readme in Italiano + +## Requisiti + +Python 3.7+ + +## Quick Start + +### Usa colab: +
+ +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +### oppure: +```bash + + # Attiva un virtualenv + virtualenv -p python3 $HOME/tmp/deepspeech-venv/ + source $HOME/tmp/deepspeech-venv/bin/activate + + # Installa DeepSpeech + pip3 install deepspeech==0.9.3 + + # Scarica e scompatta i file per il modello italiano (verifica l'ultima versione rilasciata!) + curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/model_tensorflow_it.tar.xz + tar xvf model_tensorflow_it.tar.xz + + # Oppure utilizza il modello italiano con transfer learning da quello inglese (verifica l'ultima versione rilasciata!) + curl -LO https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/download/2020.08.07/transfer_model_tensorflow_it.tar.xz + tar xvf transfer_model_tensorflow_it.tar.xz + + # estrai un sample a caso dal dataset cv_tiny + wget -c https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz -O - | tar -xz common_voice_it_19574474.wav + + # Trascrivi (audio MONO, formato WAV e campionato a 16000Hz) + deepspeech --model output_graph.pbmm --scorer scorer --audio common_voice_it_19574474.wav +``` + +### Differenze del modello italiano puro e con transfer learning + +Da 08/2020 rilasciamo il modello in due versioni, puro ovvero solo dataset di lingua italiana (specificato nel release) e la versione con transfer learning. +La seconda versione include il transfer learning dal modello di lingua ufficiale rilasciato da Mozilla, che include altri dataset oltre a quello di Common Voice superando le oltre 7000 ore di materiale. Questo modello si è dimostrato molto piú affidabile nel riconoscimento viste le poche ore di lingua italiana che disponiamo al momento. + +## Sviluppo + +### Corpora per il modello del linguaggio + +Nella cartella MITADS sono presenti tutti gli script che permettono la generazione del corpus testuale [MITADS](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/releases/tag/Mitads-1.0.0-alpha2). Per maggiori informazioni fare riferimento al [README relativo](MITADS/README.md). + +### Addestramento del modello + +Fare riferimento al [README](DeepSpeech/README.md) nella cartella DeepSpeech per la documentazione necessaria per creare l'immagine Docker utilizzata per addestrare il modello acustico e del linguaggio. + +### Generare il modello con COLAB [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +Fare riferimento al [README in notebooks](notebooks/README.md). + +### Come programmare con DeepSpeech + +Fare riferimento al nostro [wiki](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/wiki) in costruzione che contiene link e altro materiale. + +### Risorse + +* [Roadmap per lo sviluppo](https://docs.google.com/document/d/1cep28JAv9f90LkIpVmJjR0lTDqW5Hp_YF7R-nVJ2zkY/edit) +* [Pacchetto di esempio su come è strutturato il dataset di Common Voice](https://github.com/MozillaItalia/DeepSpeech-Italian-Model/files/4610711/cv-it_tiny.tar.gz) +* Esempi di importatore di dataset minimali: ldc93s1 [python per DeepSpeech](https://github.com/mozilla/DeepSpeech/blob/master/bin/import_ldc93s1.py) e [lanciatore bash](https://github.com/mozilla/DeepSpeech/blob/master/bin/run-ldc93s1.sh) +* https://voice.mozilla.org/it +* https://github.com/mozilla/DeepSpeech +* https://github.com/mozilla/voice-corpus-tool +* https://github.com/Common-Voice/sentence-collector +* https://github.com/Common-Voice/commonvoice-fr - Il repository da cui questo è derivato +* https://github.com/MozillaItalia/voice-web - Il dataset primario di frasi italiane lo manteniamo qui diff --git a/notebooks/README.it-IT.md b/notebooks/README.it-IT.md new file mode 100644 index 00000000..1bdf69b8 --- /dev/null +++ b/notebooks/README.it-IT.md @@ -0,0 +1,29 @@ +# Colab notebooks per DeepSpeech + +Colab notebooks dedicati allo sviluppo del modello DeepSpeech. +* ```deepspeech_lm.ipynb```: notebook per generare il language model (scorer) +* ```deepspeech_training.ipynb```: notebook dedicato al training con possibilità di fine tuning e transfer learning + + +## Attenzione! +* Dedicare un po' di tempo a leggere ogni cella del notebook :) non caricarle tutte insieme! + +## Quick Start + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/MozillaItalia/DeepSpeech-Italian-Model) + +### o manualmente: + + * Andare su: https://colab.research.google.com/ con il vostro account Google + * Se non viene visualizzato il popup per l'upload dei notebooks, andare su ```File -> Open notebook``` + * Selezionare la tab ```Github``` e copincollare l'url al notebook di questa repository + * Generare il modello del linguaggio caricando il notebook ```deepspeech_lm.ipynb``` + * Salvare il modello del linguaggio generato (```scorer```), caricare il notebook ```deepspeech_training.ipynb``` e copiare nel path corretto lo scorer + * Modificare a piacimento i parametri di training e divertirsi :) + +## Requisiti + +* (training) spazio di archiviazione aggiuntivo di Google Drive + * i dataset attuali CV-IT e M-AILABS occupano ~30GB +* (training) Tipo di istanza: GPU + * a seconda della GPU assegnata, la memoria disponbile potrebbe non essere sufficiente. Nel caso, diminuire il valore di ```BATCH_SIZE``` . Per vedere le caratteristiche della GPU che si sta usando eseguite una cella con il comando ```!nvidia-smi```