最近有几个人在群里问我kaldi的问题,不巧的是最近我在忙我的开题。我对kaldi的了解也就是语音识别+深度学习。如果不是kaldi有dnn模型,或许我更愿意用htk吧。其实,基本的都差不多吧。kaldi可以说是更加丰富吧。本来准备开题开语音识别,但是由于导师的反对,不得不做现在的歌曲人声分离。进入到这个新的领域,我不得不怀疑自己的学习能力,现在的我变的不淡定了。很久没有写博文,也许很忙,也许自己懒……等开题结束,我应该好好规划吧。此外,学长要和我在kaldi上用深度学习模块做下汉语的语音识别。等做好了,我一定会公开给大家。
现在先说说kaldi的安装吧。我一般都会在虚拟机上弄。大家在实现前的平台可以是物理机或者虚拟机。然后大家安装网上的教程安装好linux。我就从安装好平台开始把。前一段时间,我根据/install.html中下载的时候有install.sh文件。安装时直接就./install.sh,然后make就可以了。但是今天我重新下载时就直接make就可以了。具体步骤:
1. svn co svn://svn./p/kaldi/code/trunk kaldi-trunk
2.到tools文件夹下,直接make就可以了。
你安装的时候最好看下tools里的install文档,里面说的很清楚。如果不出意外,基本就安装好了。如果你想实验下自己到底安装成功没,那就来个例子吧。
下面的是例子。kaldi里的例子很多,在egs目录下。因为数据库的原因,一般可以做些简单的实验把。如果你有大量的数据库,如果愿意跟我分享,那我就非常感谢你了。里面的wsj数据库是LDC的。一般大家可以做timit和yesno实验。下面我演示下yesno实验,希望你可以学到更多吧。
步骤和结果如下:
1.把waves_yesno.zip.gz复制到yesno/s3目录下,然后使用
sudo yumzip waves_yesno.zip.gz
tar –xvf waves_yesno.tar
2.运行./run.sh。
测试呈现在linux上的结果:
book@book-desktop:~/kaldi-trunk/egs/yesno/s3$ sudo ./run.sh
[sudo] password for book:
Data preparation succeeded
Dictionary preparation succeeded
Preparing train and test data
Preparing word lists etc.
fstaddselfloops 'echo 4 |' 'echo 4 |'
Preparing language models for test
arpa2fst -
\data\
Processing 1-grams
Connected 0 states without outgoing arcs.
fstisstochastic data/lang_test_tg/G.fst
1.20397 0
Succeeded in formatting data.
Succeeded creating MFCC features for train_yesno
Succeeded creating MFCC features for test_yesno
Computing cepstral mean and variance statistics
Initializing monophone system.
Compiling training graphs
Aligning data equally (pass 0)
Pass 1
Aligning data
Pass 2
Aligning data
Pass 3
Aligning data
Pass 4
Aligning data
Pass 5
Aligning data
Pass 6
Aligning data
Pass 7
Aligning data
Pass 8
Aligning data
Pass 9
Aligning data
Pass 10
Aligning data
Pass 11
Pass 12
Aligning data
Pass 13
Pass 14
Aligning data
Pass 15
Pass 16
Aligning data
Pass 17
Pass 18
Aligning data
Pass 19
Pass 20
Aligning data
Pass 21
Pass 22
Pass 23
Aligning data
Pass 24
Pass 25
Pass 26
Aligning data
Pass 27
Pass 28
Pass 29
Aligning data
Pass 30
Pass 31
Pass 32
Aligning data
Pass 33
Pass 34
Pass 35
Aligning data
Pass 36
Pass 37
Pass 38
Aligning data
Pass 39
1 warnings in exp/mono0a/log/update.3.log
1 warnings in exp/mono0a/log/update.7.log
Done
fstminimizeencoded
fstdeterminizestar --use-log=true
fsttablecompose data/lang_test_tg/L_disambig.fst data/lang_test_tg/G.fst
fstisstochastic data/lang_test_tg/tmp/LG.fst
1.20412 -2.34608e-05
warning: LG not stochastic.
fstcomposecontext --context-size=1 --central-position=0 --read-disambig-syms=data/lang_test_tg/tmp/disambig_phones.list --write-disambig-syms=data/lang_test_tg/tmp/disambig_ilabels_1_0.list data/lang_test_tg/tmp/ilabels_1_0
fstisstochastic data/lang_test_tg/tmp/CLG_1_0.fst
1.20412 -2.34608e-05
warning: CLG not stochastic.
make-h-transducer --disambig-syms-out=exp/mono0a/graph_tgpr/disambig_tid.list --transition-scale=1.0 data/lang_test_tg/tmp/ilabels_1_0 exp/mono0a/tree exp/mono0a/final.mdl
fstminimizeencoded
fsttablecompose exp/mono0a/graph_tgpr/Ha.fst data/lang_test_tg/tmp/CLG_1_0.fst
fstdeterminizestar --use-log=true
fstrmsymbols exp/mono0a/graph_tgpr/disambig_tid.list
fstrmepslocal
fstisstochastic exp/mono0a/graph_tgpr/HCLGa.fst
1.20412 -2.34608e-05
HCLGa is not stochastic
add-self-loops --self-loop-scale=0.1 --reorder=true exp/mono0a/final.mdl
Decoding with num-jobs = 1
简单吧。其实很简单。那个waves_yesno.zip.gz数据可以在/projects/kaldi/files/上下载。里面还有些其他的数据。此外,有时不需要下载,run.sh里就帮你做好了。所以我上面的步骤也许就不一样。你在实验前可以看下里面的说明文档。
当然,学习kaldi最重要的资料就是/index.html。全是英文,而且很多。也许由于没有htk有名或者是最新的开源程序的原因,他的中文资料很少,可以说基本没有吧。希望有志之士能够翻译的话记得跟我分享。呵呵……
还有,如果大家做研究的话timit就可以吧,你也可以去voxforge上去收集更多的资料。
写这个博文,希望可以帮助大家解决一些问题。如果大家遇到什么问题,可以找我。希望在我们的共同学习下能够学到更多的东西。谢谢你的阅读……