kaldi的yesno樣例分析

這篇文章是根據yesno樣例下的run.sh腳本寫出來的,當然腳本里還有許多附帶工具暫時就來不及一一詳解,看以後有沒有時間和興趣了。

1.

train_cmd="utils/run.pl"
decode_cmd="utils/run.pl"

定義機器運作方式,這裏是本地多任務處理工作方式,而不是gpu.

2. 

if [ ! -d waves_yesno ]; then
  wget http://www.openslr.org/resources/1/waves_yesno.tar.gz || exit 1;
  # was:
  # wget http://sourceforge.net/projects/kaldi/files/waves_yesno.tar.gz || exit 1;
  tar -xvzf waves_yesno.tar.gz || exit 1;
fi

train_yesno=train_yesno
test_base_name=test_yesno

判斷是否有yesno音頻,有的話直接解壓,沒有的話,下載再解壓;命名訓練集和測試集。

3.

local/prepare_data.sh waves_yesno
local/prepare_dict.sh
utils/prepare_lang.sh --position-dependent-phones false data/local/dict "<SIL>" data/local/lang data/lang
local/prepare_lm.sh

根據音頻,準備適應kaldi框架的數據格式;準備字典,並生成相應的fst文件, L_disambig.fst(具有消歧的作用);準備語言模型,並聲稱相應的fst文件,G.fst。

4.

for x in train_yesno test_yesno; do
 steps/make_mfcc.sh --nj 1 data/$x exp/make_mfcc/$x mfcc
 steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x mfcc
 utils/fix_data_dir.sh data/$x
done

對訓練集和測試集分別提取特徵,並倒譜均值方差歸一化(去除噪聲,提高音頻質量)。

5.

steps/train_mono.sh --nj 1 --cmd "$train_cmd" \
  --totgauss 400 \
  data/train_yesno data/lang exp/mono0a

單因素訓練,使用400個高斯。

6.

utils/mkgraph.sh data/lang_test_tg exp/mono0a exp/mono0a/graph_tgpr

生成HCLG.fst,解碼網絡。

7.

steps/decode.sh --nj 1 --cmd "$decode_cmd" \
    exp/mono0a/graph_tgpr data/test_yesno exp/mono0a/decode_test_yesno
for x in exp/*/decode*; do [ -d $x ] && grep WER $x/wer_* | utils/best_wer.sh; done

利用測試集進行解碼測試,並輸出word級別最優錯誤率。

END


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章