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

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