Files
2026-07-13 12:45:58 +08:00

103 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
. ./cmd.sh
. ./path.sh
stage=-1
stop_stage=100
. utils/parse_options.sh
# Data preparation
if [ ${stage} -le 0 ] && [ ${stop_stage} -ge 0 ]; then
data_url=www.openslr.org/resources/31
lm_url=www.openslr.org/resources/11
database=corpus
mkdir -p $database
for part in dev-clean-2 train-clean-5; do
local/download_and_untar.sh $database $data_url $part
done
local/download_lm.sh $lm_url $database data/local/lm
local/data_prep.sh $database/LibriSpeech/train-clean-5 data/train
local/data_prep.sh $database/LibriSpeech/dev-clean-2 data/test
fi
# Dictionary formatting
if [ ${stage} -le 1 ] && [ ${stop_stage} -ge 1 ]; then
local/prepare_dict.sh data/local/lm data/local/dict
utils/prepare_lang.sh data/local/dict "<UNK>" data/local/lang data/lang
fi
# Extract MFCC features
if [ ${stage} -le 2 ] && [ ${stop_stage} -ge 2 ]; then
for task in train; do
steps/make_mfcc.sh --cmd "$train_cmd" --nj 10 data/$task exp/make_mfcc/$task $mfcc
steps/compute_cmvn_stats.sh data/$task exp/make_mfcc/$task $mfcc
done
fi
# Train GMM models
if [ ${stage} -le 3 ] && [ ${stop_stage} -ge 3 ]; then
steps/train_mono.sh --nj 10 --cmd "$train_cmd" \
data/train data/lang exp/mono
steps/align_si.sh --nj 10 --cmd "$train_cmd" \
data/train data/lang exp/mono exp/mono_ali
steps/train_lda_mllt.sh --cmd "$train_cmd" \
2000 10000 data/train data/lang exp/mono_ali exp/tri1
steps/align_si.sh --nj 10 --cmd "$train_cmd" \
data/train data/lang exp/tri1 exp/tri1_ali
steps/train_lda_mllt.sh --cmd "$train_cmd" \
2500 15000 data/train data/lang exp/tri1_ali exp/tri2
steps/align_si.sh --nj 10 --cmd "$train_cmd" \
data/train data/lang exp/tri2 exp/tri2_ali
steps/train_lda_mllt.sh --cmd "$train_cmd" \
2500 20000 data/train data/lang exp/tri2_ali exp/tri3
steps/align_si.sh --nj 10 --cmd "$train_cmd" \
data/train data/lang exp/tri3 exp/tri3_ali
fi
# Train TDNN model
if [ ${stage} -le 4 ] && [ ${stop_stage} -ge 4 ]; then
local/chain/run_tdnn.sh
fi
# Decode
if [ ${stage} -le 5 ] && [ ${stop_stage} -ge 5 ]; then
utils/format_lm.sh data/lang data/local/lm/lm_tgsmall.arpa.gz data/local/dict/lexicon.txt data/lang_test
utils/mkgraph.sh --self-loop-scale 1.0 data/lang_test exp/chain/tdnn exp/chain/tdnn/graph
utils/build_const_arpa_lm.sh data/local/lm/lm_tgmed.arpa.gz \
data/lang data/lang_test_rescore
for task in test; do
steps/make_mfcc.sh --cmd "$train_cmd" --nj 10 data/$task exp/make_mfcc/$task $mfcc
steps/compute_cmvn_stats.sh data/$task exp/make_mfcc/$task $mfcc
steps/online/nnet2/extract_ivectors_online.sh --nj 10 \
data/${task} exp/chain/extractor \
exp/chain/ivectors_${task}
steps/nnet3/decode.sh --cmd $decode_cmd --num-threads 10 --nj 1 \
--beam 13.0 --max-active 7000 --lattice-beam 4.0 \
--online-ivector-dir exp/chain/ivectors_${task} \
--acwt 1.0 --post-decode-acwt 10.0 \
exp/chain/tdnn/graph data/${task} exp/chain/tdnn/decode_${task}
steps/lmrescore_const_arpa.sh data/lang_test data/lang_test_rescore \
data/${task} exp/chain/tdnn/decode_${task} exp/chain/tdnn/decode_${task}_rescore
done
bash RESULTS
fi