#!/bin/bash

set -xe

num_bytes=2
bytes="${num_bytes}-bytes"

###
### GET SOURCE MODEL
###
SOURCE_MODEL='../keep/en'
mkdir $SOURCE_MODEL
wget https://github.com/mozilla/DeepSpeech/releases/download/v0.4.1/deepspeech-0.4.1-checkpoint.tar.gz --directory-prefix="${SOURCE_MODEL}"
tar xvzf ${SOURCE_MODEL}/deepspeech-0.4.1-checkpoint.tar.gz --no-same-owner --directory "${SOURCE_MODEL}"
rm ${SOURCE_MODEL}/deepspeech-0.4.1-checkpoint.tar.gz
###
###
###


apt-get install -y python3-venv swig
python3 -m venv /tmp/venv
source /tmp/venv/bin/activate

pip install wheel
pip install -r <(grep -v tensorflow requirements.txt)
pip install tensorflow-gpu==1.13.1

echo "COMPILE AND INSTALL CTC DECODER"
pushd ../src/native_client/ctcdecode
  make clean
  make NUM_PROCESSES=`nproc`
  pip install dist/*.whl
popd


exp="../keep/fine-tuned"
mkdir -p "/tmp/cached_feats"
mkdir -p "../keep/summaries"

    
data="${SHARED_DIR}/data"
CV="${data}/mozilla/CommonVoice/v2.0/en/clips"
fis="${data}/LDC/fisher"
swb="${data}/LDC/LDC97S62/swb"
lbs="${data}/OpenSLR/LibriSpeech/librivox"


python -u DeepSpeech.py \
       --fine_tune\
       --train_files "${fis}-train-${bytes}.csv","${swb}-train-${bytes}.csv","${lbs}-train-clean-100-${bytes}.csv","${lbs}-train-clean-360-${bytes}.csv","${lbs}-train-other-500-${bytes}.csv"\
       --dev_files "${lbs}-dev-clean-${bytes}.csv","${lbs}-dev-other-${bytes}.csv"\
       --test_files "${lbs}-test-clean-${bytes}.csv" \
       --train_cached_features_path "/tmp/cached_feats/train" \
       --dev_cached_features_path "/tmp/cached_feats/dev" \
       --test_cached_features_path "/tmp/cached_feats/test" \
	   --export_dir "${exp}/model/" \
	   --summary_dir "${exp}/summaries/" \
	   --checkpoint_dir "${exp}/ckpt/" \
	   --drop_source_layers 1 \
	   --source_model_checkpoint_dir "${SOURCE_MODEL}/deepspeech-0.4.1-checkpoint" \
	   --n_hidden 2048 \
	   --epoch -30 \
	   --train_batch_size 24 \
	   --dev_batch_size 48 \
	   --test_batch_size 48 \
	   --learning_rate 0.00005 \
	   --dropout_rate 0.2 \
	   --display_step 0 \
	   --validation_step 1 \
       --summary_secs 60 \
       --lm_binary_path "/data/rw/home/en/lm-${bytes}.binary" \
       --lm_trie_path "/data/rw/home/en/trie_utf8-${bytes}" \
       --alphabet_config_path "/data/rw/home/en/alphabet-${bytes}.txt"
