#!/bin/bash

set -xe

_LANG="de"
CV="${SHARED_DIR}/data/mozilla/CommonVoice/v2.0"

# check HTTP_PROXY
if ! (( $( env | grep -iq "^http_proxy=" ) )); then
    source /etc/profile
fi

# venv
apt-get update -y
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.0-rc2

###############################
### INSTALL KENLM + DECODER ###
###############################

pip install "/data/rw/home/ds_ctcdecoder-0.5.0a1-cp36-cp36m-manylinux1_x86_64.whl"
python util/taskcluster.py --arch gpu --target ../tmp/native_client


## kenlm Dependencies
#apt-get install -y build-essential cmake libboost-all-dev zlib1g-dev libbz2-dev liblzma-dev libeigen3-dev



### CREATE ALPHABET / LM / TRIE ###


# # alphabet.txt
# mkdir /data/rw/home/${_LANG}
# python util/check_characters.py \
#         -csv "${CV}/${_LANG}/clips/train.csv","${CV}/${_LANG}/clips/dev.csv","${CV}/${_LANG}/clips/test.csv" \
#         -alpha \
#     > /data/rw/home/${_LANG}/alphabet.txt
#
# lm.arpa
# #TEXT="${SHARED_DIR}/data/wikipedia/${_LANG}/wiki.txt"
# cut -d',' -f3 "${CV}/${_LANG}/clips/train.csv" > /data/rw/home/${_LANG}/text.txt
# TEXT="/data/rw/home/${_LANG}/text.txt"

# /data/rw/home/kenlm/build/bin/lmplz \
#     --skip_symbols \
#     --order 2 \
#     --text "${TEXT}" \
#     --arpa /tmp/lm.arpa

# # # lm.binary
# /data/rw/home/kenlm/build/bin/build_binary \
#     -a 255 \
#     -q 8 \
#     trie \
#     /tmp/lm.arpa \
#     /data/rw/home/${_LANG}/lm.binary

# # # trie
# /data/rw/home/generate_trie \
#     /data/rw/home/${_LANG}/alphabet.txt \
#     /data/rw/home/${_LANG}/lm.binary \
#     /data/rw/home/${_LANG}/trie_utf8

# rm /tmp/lm.arpa


########################
### TRAIN DEEPSPEECH ###
########################

mkdir -p ../keep/summaries

  # --noearly_stop \

    python -u DeepSpeech.py \
  --train_files "${CV}/${_LANG}/clips/train.csv" \
  --dev_files "${CV}/${_LANG}/clips/dev.csv" \
  --test_files "${CV}/${_LANG}/clips/test.csv" \
  --train_batch_size 24 \
  --dev_batch_size 48 \
  --test_batch_size 48 \
  --n_hidden 2048 \
  --learning_rate 0.0001 \
  --dropout_rate 0.2 \
  --earlystop_nsteps 10 \
  --epoch 1000 \
  --display_step 0 \
  --validation_step 1 \
  --checkpoint_dir "../keep" \
  --summary_dir "../keep/summaries" \
  --export_dir "../keep/model" \
  --report_count 100 \
  --test_output_file "../keep/RESULTS.json" \
  --lm_binary_path "/data/rw/home/${_LANG}/lm.binary" \
  --lm_trie_path "/data/rw/home/${_LANG}/trie_utf8" \
  --alphabet_config_path "/data/rw/home/${_LANG}/alphabet.txt"
