初跑timit數據

  1. 把壓縮包解壓到對應的文件夾~/kaldi/egs/timit/s5/data

  2. 首先我們需要修改數據集的目錄:

#timit=/export/corpora5/LDC/LDC93S1/timit/TIMIT # @JHU
#timit=/mnt/matylda2/data/TIMIT/timit # @BUT
# 上面兩行是代碼中原有的數據集位置,我們需要執行定製爲下面的路徑:
timit=/home/yangqing/kaldi/egs/timit/s5/data/TIMIT

 

接下來 運行sudo ./run.sh

我出現了錯誤如下:

local/timit_prepare_dict.sh: Error: the IRSTLM is not available or compiled
local/timit_prepare_dict.sh: Error: We used to install it by default, but.
local/timit_prepare_dict.sh: Error: this is no longer the case.
local/timit_prepare_dict.sh: Error: To install it, go to /home/yangqing/kaldi/egs/timit/s5/../../../tools
local/timit_prepare_dict.sh: Error: and run extras/install_irstlm.sh

於是在網上找到三個解決方法針對不同的問題 

1)“awk:line12:function gensub never defined” 
解決: sudo apt-get install gawk

2)“Error: and run extras/install_irstlm.sh” 
解決:因爲這個例程建立語言模型是用irstlm工具建立的,但是在最新版本的kaldi裏面,irstlm不是默認編譯的。首先進入kaldi目錄下的tools/extras目錄,執行install_irstlm.sh腳本。安裝完成以後,目錄下出現irstlim目錄。由於timit例程裏面的引用irstlm工具的路徑是tools目錄,所以把這個目錄拷貝到tools/目錄下。回到egs/timit/s5目錄,執行./run.sh腳本,於是timit例程就跑起來了。

3)“Error: the IRSTLM is not available or compiled” 
解決:cd kaldi-master/tools/extras 
./install_irstlm.sh 
將生成的env.sh複製到tools文件夾下即可。

我用的是第三種方法,搞定

但是又出現也第二個錯誤:

error: qsub not found.

 

這是因爲 TIMIT 的這個例子部署在多機器上,我們想要在本地運行所有的任務,需要修改 cmd.sh 中的內容:

# no GridEngine
export train_cmd=run.pl
export decode_cmd=run.pl
export cuda_cmd=run.pl
export mkgraph_cmd=run.pl

# 下面的內容均爲多機器任務的命令,依賴 Sun GridEngine,我們註釋掉所有的內容並使用上面的四行。

# export train_cmd="queue.pl --mem 4G"
# export decode_cmd="queue.pl --mem 4G"
# export mkgraph_cmd="queue.pl --mem 8G"

# the use of cuda_cmd is deprecated but it's still sometimes used in nnet1
# example scripts.
# export cuda_cmd="queue.pl --gpu 1"

# if [ "$(hostname)" == "fit.vutbr.cz" ]; then
#   #b) BUT cluster options
#   queue="all.q@@blade,all.q@@speech"
#   gpu_queue="long.q@@gpu"
#   storage="matylda5"
#   export train_cmd="queue.pl -q $queue -l ram_free=1.5G,mem_free=1.5G,${storage}=0.5"
#   export decode_cmd="queue.pl -q $queue -l ram_free=2.5G,mem_free=2.5G,${storage}=0.1"
#   export cuda_cmd="queue.pl -q $gpu_queue -l gpu=1"
# fi

 

使用Kaldi運行了timit的S5實例,只運行到了“tri3 : LDA + MLLT + SAT Training & Decoding”這一步,後面的”SGMM2”,”MMI+SGMM2”,”DNN + SGMM2”都沒有運行成功,原因是在跑SGMM2的時候可能是由於機器配置不夠,導致資源消耗完,就卡住了,此時內存佔用率達到90%,我的主機是4G內存,分配給虛擬機是2G,以後想辦法在更好的機器上跑一下。下面貼出tr3及其前面的tr2,tr1,單音素等的識別錯誤率,效果貌似還不錯。 
輸入以下代碼來看一下部分結果:

#!/bin/bash
for x in exp/{mono,tri,sgmm,dnn,combine}*/decode*; do [ -d $x ] && echo $x | grep "${1:-.*}" >/dev/null && grep WER $x/wer_* 2>/dev/null | utils/best_wer.sh; done
for x in exp/{mono,tri,sgmm,dnn,combine}*/decode*; do [ -d $x ] && echo $x | grep "${1:-.*}" >/dev/null && grep Sum $x/score_*/*.sys 2>/dev/null | utils/best_wer.sh; done

得到結果如下:

%WER 33.10 [ 4984 / 15057, 398 ins, 1673 del, 2913 sub ] exp/mono/decode_dev/wer_3  
%WER 34.05 [ 2457 / 7215, 186 ins, 839 del, 1432 sub ] exp/mono/decode_test/wer_3 
%WER 28.98 [ 4363 / 15057, 547 ins, 1244 del, 2572 sub ] exp/tri1/decode_dev/wer_6  
%WER 30.71 [ 2216 / 7215, 328 ins, 588 del, 1300 sub ] exp/tri1/decode_test/wer_5 
%WER 26.41 [ 3977 / 15057, 487 ins, 1150 del, 2340 sub ] exp/tri2/decode_dev/wer_6  
%WER 27.36 [ 1974 / 7215, 178 ins, 685 del, 1111 sub ] exp/tri2/decode_test/wer_8  
%WER 23.32 [ 3511 / 15057, 480 ins, 1002 del, 2029 sub ] exp/tri3/decode_dev/wer_4  
%WER 26.98 [ 4062 / 15057, 552 ins, 1092 del, 2418 sub ] exp/tri3/decode_dev.si/wer_5 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章