End-to-end speech recognition using RNN-Transducer in Tensorflow 2.0
This speech recognition model is based off Google's Streaming End-to-end Speech Recognition For Mobile Devices research paper and is implemented in Python 3 using Tensorflow 2.0
To setup your environment, run the following command:
git clone --recurse https://github.com/noahchalifour/rnnt-speech-recognition.git
cd rnnt-speech-recognition
pip install tensorflow==2.2.0 # or tensorflow-gpu==2.2.0 for GPU support
pip install -r requirements.txt
./scripts/build_rnnt.sh # to setup the rnnt loss
You can find and download the Common Voice dataset here
Before you can train a model on the Common Voice dataset, you must first convert all the audio mp3 filetypes to wavs. Do so by running the following command:
NOTE: Make sure you have
ffmpeg
installed on your computer, as it uses that to convert mp3 to wav
./scripts/common_voice_convert.sh <data_dir> <# of threads>
python scripts/remove_missing_samples.py \
--data_dir <data_dir> \
--replace_old
After converting all the mp3s to wavs you need to preprocess the dataset, you can do so by running the following command:
python preprocess_common_voice.py \
--data_dir <data_dir> \
--output_dir <preprocessed_dir>
To train a simple model, run the following command:
python run_rnnt.py \
--mode train \
--data_dir <path to data directory>
Due to financial restrictions, I don't have the money to train a high quality model. If anybody is willing to train a model, you can send it to me and I will put it up here and give you credit. (chalifournoah@gmail.com)