timit實例的運行

首先安裝ubuntu14.04平臺,安裝好後就開始安裝各種kaldi需要的組件,代開終端,在其中輸入如下代碼

安裝前的配置

   sudo apt-get install libtool

   sudo apt-get install autoconf

  sudo apt-get install wget

  sudo apt-get install perl

  sudo apt-get install subversion

  sudo apt-get install build-essential

  sudo apt-get install gfortran

  sudo apt-get install libatlas-dev

  sudo apt-get install libatlas-base-dev

  sudo apt-get install zlib1g-dev (中間有一個數字1)

  如果報function gensubnever defined ,則需要安裝gwak

    安裝辦法:apt-get install gwak

安裝以上的配置環境後,就可以裝kaldi平臺了

     1.svn co svn://svn.code.sf.net/p/kaldi/code/trunk kalid-trunk

     2.安裝完成後,編譯安裝使用到的工具

cd kaldi-trunkt/tools

make

     3.配置kaldi

         cd ../src

         ./configure

   4.編譯kaldi

    make all

完成上述步驟後如果沒有出現錯誤,那麼基本可以確定安裝成功了,這時候在測試一個小例子yesno

    cd ../egs/yesno/s5

    ./run.sh

參考結果:

    decode.sh: feature type is delta

    %WER 0.00[0/240,0 ins,0 del,0 sub]exp/mono0a/decode_test_yesno/wer_1

 

接下來通過運行一個實例timit(這個實例我傳到自己的百度網盤上了,隨時可以下載)

    運行程序的過程如下:

   1.將下載好的語料庫解壓後放到kaldi-trunk/egs/timit目錄下,然後文件夾可以設置爲data,data下存放的就是下載好的timit語料。

   2.把timit.rar裏面的東西拷貝到kaldi-trunk/egs/timit/data中,我的數據是rar格式的,所以在windows下解壓,然後winscp拷貝

 

   3.完成步驟1後,然後進入timit/s5目錄下,打開run.sh,找到以下內容

timit就是設置timit數據庫的路徑下的環境變量

我們將第一步放置語料的數據庫路徑填入即可,我的路徑爲

   timit=~/kaldi-trunk/egs/data

 4.修改運行環境:修改kaldi-trunk/egs/timit/s5中的cmd.sh,默認是運行#a)JHU cluster,改成運行#c)run it local

#a) JHU cluster options

#export train_cmd="queue.pl -l arch=*64"

#export decode_cmd="queue.pl -larch=*64,mem_free=2G,ram_free=2G"

#export mkgraph_cmd="queue.pl -larch=*64,ram_free=4G,mem_free=4G"

#export cuda_cmd=run.pl

 

#b) BUT cluster options

#export train_cmd="queue.pl -q all.q@@blade -lram_free=1200M,mem_free=1200M"

#export decode_cmd="queue.pl -q all.q@@blade-l ram_free=1700M,mem_free=1700M"

#export decodebig_cmd="queue.pl -qall.q@@blade -l ram_free=4G,mem_free=4G"

#export cuda_cmd="queue.pl -q long.q@@pco203-l gpu=1"

#export cuda_cmd="queue.pl -qlong.q@pcspeech-gpu"

#export mkgraph_cmd="queue.pl -qall.q@@servers -l ram_free=4G,mem_free=4G"

 

#c) run it locally...

export train_cmd=run.pl

export decode_cmd=run.pl

export cuda_cmd=run.pl

export mkgraph_cmd=run.pl

 

5.運行以後,發現,報錯了。。。。。。

 

怎麼回事呢?因爲這個例程建立語言模型是用irstlm工具建立的,但是在最新版本的kaldi裏面,irstlm不是默認編譯的。所以我們先得自行編譯irstlm。

 

首先進入kaldi目錄下的tools/extras目錄,執行install_irstlm.sh腳本。安裝完成以後,目錄下出現irstlim目錄。由於timit例程裏面的引用irstlm工具的路徑是tools目錄,所以把這個目錄拷貝到tools/目錄下。回到egs/timit/s5目錄,執行./run.sh腳本,於是timit例程就跑起來了。

  特別注意的情況是:在tools/extras生成irstlm文件夾後,一定要將其拷貝到tools目錄下,我之前就是沒注意看,導致一直報錯誤,這樣就可以運行timit實例了。

6.上面的步驟都完成後,就可以運行了,在~/kaldi-trunk/egs/timit/s5目錄下右鍵打開終端,然後輸入./run.sh就可以看到程序了。

    cd

    cdkaldi-trunk/egs/timit/s5

    ./run.sh

我想說的是不知道是不是我裝的kaldi-trunk版本的問題,導致在timit運行的過程出現了各種各樣的錯誤,而這些錯誤都不是設置的問題,都是相應的文件缺少各種完成代碼,這時候的解決辦法是,找到該文件後,然後在kaldi-trunk/egs目錄下搜索一樣的文件名,然後找到那個代碼完整的文件,接着拷貝進去即可,這樣就可以解決是kaldi-trunk自身安裝過程中文件代碼不完整的過程,當然,希望大家不會出現這樣的問題。

這是別人總結的可能出現的錯誤,可以借鑑(我暫時沒有遇到):

一、svn co https://svn.code.sf.net/p/kaldi/code/trunk kaldi-trunk 出錯

  1、未安裝subversion

 解決:sudoapt-get install subversion

2、找不到https://kaldi.svn.sourceforge.net/svnroot/kaldi/trunk 

 解決:換成https://svn.code.sf.net/p/kaldi/code/trunk

二、tools裏面make出錯

 1、 sctk-2.4.0-20091110-0958.tar.bz2解壓出錯。這個是因爲壓縮工具不支持bz2的解壓。

 解決:修改Makefile,將所有的    sctk-2.4.0-20091110-0958.tar.bz2改成sctk-2.4.0-20091110-0958.tar.gz

 2、缺少gcc,automake,autoconf,gfortran,libtool

解決:安裝相應的軟件包。

三、src裏面./configure 或者make出錯

1、Couldnot find libatlas.so in any of the obvious places, will most likely try static 

  找不到libatlas.so 

解決:sudoapt-get install libatlas-base-dev ,libatlas-dev

四、運行yesno例子出錯

1、找不到libfstscript.so.1

fstarcsort: error while loading sharedlibraries: libfstscript.so.1: cannot open shared object file: No such file ordirectory

解決:findlibfstscript.so.1 然後把這個文件拷貝到/usr/lib

2、找不到libfst.so.1

fstarcsort: error while loading sharedlibraries: libfst.so.1: cannot open shared object file: No such file ordirectory

解決:findlibfst.so.1然後把這個文件拷貝到/usr/lib

五、運行timit例子出錯:

1、找不到測試數據

timit_data_prep.sh: Spot check of commandline argument failed

Command line argument must be absolutepathname to TIMIT directory

with name like/export/corpora5/LDC/LDC93S1/timit/TIMIT

   解決:修改run.sh中的 timit=/export/corpora5/LDC/LDC93S1/timit/TIMIT,使他指向你的數據位置

2、找不到qsub

 qsub not found.

解決:修改cmd.sh:註釋掉#a)下面的命令,打開#c)下面的選項。

下面一段是從網上博客中摘抄的,但是我是初學者,還沒怎麼研究,先留着備用,

下面講解下run.sh腳本的一些處理流程:

local/timit_data_prep.sh    ----- 從訓練數據庫/u01/kaldi/egs/timit/s5/data/timit中抽取出訓練數據的目錄位置並寫到/u01/kaldi/egs/timit/s5/data/local/data,這裏使用的命令/u01/kaldi/src/featbin/wav-to-duration

local/timit_prepare_dict.sh-----   生成字典數據並放至到/u01/kaldi/egs/timit/s5/data/local/dict,使用的命令/u01/kaldi/tools/irstlm/bin/compile-lm,/u01/kaldi/tools/irstlm/bin/build-lm.sh,

utils/prepare_lang.sh  ----- 藉助字典數據生成語言模型並放至 /u01/kaldi/egs/timit/s5/data/lang,使用的命令utils/make_lexicon_fst.pl,utils/sym2int.pl, fstcompile, fstaddselfloops, fstarcsort,

steps/make_mfcc.sh,  steps/compute_cmvn_stats.sh  ---- 藉助local/timit_data_prep.sh生成的數據位置抽取出MFCC特徵,數據放到到/u01/kaldi/egs/timit/s5/data/train,使用的命令compute-mfcc-feats, compute-cmvn-stats,copy-feats,  copy-matrix

 

單音素訓練與解碼

steps/train_mono.sh---- 藉助前兩步生成的mfcc和語言模型生成單音素,使用命令gmm-init-mono, compile-train-graphs , align-equal-compiled,gmm-acc-stats-ali, gmm-est, gmm-align-compiled

utils/mkgraph.s----  生成decoding graph, 使用的命令fsttablecompose,fstminimizeencoded, fstisstochastic, fstcomposecontext, make-h-transducer, fstdeterminizestar,fstrmsymbols, fstrmepslocal, add-self-loops

steps/decode.sh----  解碼數據,使用命令gmm-latgen-faster, gmm-decode-faster,compute-wer

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