![No Maintenance Intended](https://img.shields.io/badge/No%20Maintenance%20Intended-%E2%9C%95-red.svg) ![TensorFlow Requirement: 1.x](https://img.shields.io/badge/TensorFlow%20Requirement-1.x-brightgreen) ![TensorFlow 2 Not Supported](https://img.shields.io/badge/TensorFlow%202%20Not%20Supported-%E2%9C%95-red.svg) # DeepSpeech2 Model ## Overview This is an implementation of the [DeepSpeech2](https://arxiv.org/pdf/1512.02595.pdf) model. Current implementation is based on the code from the authors' [DeepSpeech code](https://github.com/PaddlePaddle/DeepSpeech) and the implementation in the [MLPerf Repo](https://github.com/mlperf/reference/tree/master/speech_recognition). DeepSpeech2 is an end-to-end deep neural network for automatic speech recognition (ASR). It consists of 2 convolutional layers, 5 bidirectional RNN layers and a fully connected layer. The feature in use is linear spectrogram extracted from audio input. The network uses Connectionist Temporal Classification [CTC](https://www.cs.toronto.edu/~graves/icml_2006.pdf) as the loss function. ## Dataset The [OpenSLR LibriSpeech Corpus](http://www.openslr.org/12/) are used for model training and evaluation. The training data is a combination of train-clean-100 and train-clean-360 (~130k examples in total). The validation set is dev-clean which has 2.7K lines. The download script will preprocess the data into three columns: wav_filename, wav_filesize, transcript. data/dataset.py will parse the csv file and build a tf.data.Dataset object to feed data. Within each epoch (except for the first if sortagrad is enabled), the training data will be shuffled batch-wise. ## Running Code ### Configure Python path Add the top-level /models folder to the Python path with the command: ``` export PYTHONPATH="$PYTHONPATH:/path/to/models" ``` ### Install dependencies First install shared dependencies before running the code. Issue the following command: ``` pip3 install -r requirements.txt ``` or ``` pip install -r requirements.txt ``` ### Run each step individually #### Download and preprocess dataset To download the dataset, issue the following command: ``` python data/download.py ``` Arguments: * `--data_dir`: Directory where to download and save the preprocessed data. By default, it is `/tmp/librispeech_data`. Use the `--help` or `-h` flag to get a full list of possible arguments. #### Train and evaluate model To train and evaluate the model, issue the following command: ``` python deep_speech.py ``` Arguments: * `--model_dir`: Directory to save model training checkpoints. By default, it is `/tmp/deep_speech_model/`. * `--train_data_dir`: Directory of the training dataset. * `--eval_data_dir`: Directory of the evaluation dataset. * `--num_gpus`: Number of GPUs to use (specify -1 if you want to use all available GPUs). There are other arguments about DeepSpeech2 model and training/evaluation process. Use the `--help` or `-h` flag to get a full list of possible arguments with detailed descriptions. ### Run the benchmark A shell script [run_deep_speech.sh](run_deep_speech.sh) is provided to run the whole pipeline with default parameters. Issue the following command to run the benchmark: ``` sh run_deep_speech.sh ``` Note by default, the training dataset in the benchmark include train-clean-100, train-clean-360 and train-other-500, and the evaluation dataset include dev-clean and dev-other.