簡介
Kaldi是什么大家百度一下就知道了拨匆。大概就是一堆語音識別和處理有關的程序包啦朗兵。里面各個例子的.sh腳本也是來系統(tǒng)地執(zhí)行這些程序來得到最終結果的孝扛,所以如果我們想要利用這些程序搭建自己的一個語音識別或者語音識別相關的程序,或是想要研究其內(nèi)部算法是怎么實現(xiàn)語音識別的教馆,可以來學習一下它馋缅。
自己的學習路徑
首先是看了一下語音識別的原理扒腕,然后了解到了傳統(tǒng)的HMM-GMM模型,并研究Kaldi的sh腳本萤悴,研究它各個階段是做什么的瘾腰;接著閱讀到Kaldi的Online Decoder之后我終于開竅了,sh腳本只是來調(diào)用一些可執(zhí)行程序的覆履,所以后面就開始修改這些可執(zhí)行程序的源碼來為自己的項目所用蹋盆。當然了,看sh腳本都蒙蔽硝全,修改C++源碼更是蒙蔽了栖雾,所以這一部分涉及到在Windows平臺上使用VS編譯調(diào)試Kaldi。最終伟众,投入到項目中析藕,這一部分涉及到把Kaldi的功能移植到Android平臺。
Ref
- Kaldi官網(wǎng) http://kaldi-asr.org/doc/index.html 包括一大堆原理和工具的使用說明凳厢,有什么問題請首先看這個账胧。
- Kaldi Lecture http://www.danielpovey.com/kaldi-lectures.html 相比于上一個會給一個更簡略的原理、流程介紹数初。
- Kaldi中文翻譯1 如果感覺英語讀起來比較頭疼的話建議搜一下這個來看看找爱,是對官網(wǎng)上文件的翻譯。這個文檔來源于一個學習交流Kaldi的QQ群泡孩。
- Kaldi中文翻譯2 https://shiweipku.gitbooks.io/chinese-doc-of-kaldi/content/index.html
- 《語音識別實踐》俞棟 大概是唯一能get到的中文參考書籍了吧- -涉及到初步的原理介紹。
1寺谤、Kaldi運行環(huán)境
Linux仑鸥, Windows均可吮播,在這里國產(chǎn)的Deepin和Ubuntu都試過,Deepin用起來軟件多一些眼俊,安裝比較友好意狠。
Windows下編譯調(diào)試請參考另外一篇文章。
Linux安裝
使用UltraISO制作Ubuntu的U盤疮胖,使用Deepin自帶的軟件制作安裝U盤环戈。
安裝分區(qū)教程
主要是分區(qū)掛載的問題,包括/,/home,SWAP,Boot
分區(qū)等澎灸。
2院塞、Kaldi代碼下載
安裝git后運行
git clone https://github.com/kaldi-asr/kaldi.git kaldi-trunk --origin golden
速度過慢可以參考
github下載提速
通過http://git.oschina.net/離線下載的方式
git clone https://gitee.com/cocoon_zz/kaldi.git kaldi-trunk --origin golden
3、Kaldi編譯及測試
如何安裝參考下載好的目錄內(nèi)INSTALL
文件
This is the official Kaldi INSTALL. Look also at INSTALL.md for the git mirror installation.
[for native Windows install, see windows/INSTALL]
(1)
go to tools/ and follow INSTALL instructions there.
(2)
go to src/ and follow INSTALL instructions there.
出現(xiàn)問題首先查看各個目錄下面的INSTALL
文件性昭,有些配置的問題(例如gcc
的版本以及CUDA
等)都可以查看該文檔進行解決拦止。
依賴文件編譯
首先檢查依賴項
cd extras
sudo bash check_dependencies.sh
注意make -j4
可以多進程進行
cd kaldi-trunk/tools
make
配置Kaldi源碼
cd ../src
#如果沒有GPU請查閱configure,設置不使用CUDA
./configure --shared
編譯Kaldi源碼
make all
#注意在這里有可能關于CUDA的編譯不成功糜颠,原因是configure腳本沒有正確的找出CUDA的位置汹族,需要手動編輯configure查找的路徑,修改CUDA庫的位置
測試安裝是否成功
cd ../egs/yesno/s5
./run.sh
解碼的結果放置在
exp
目錄(export)下其兴,例如我們查看一下~/kaldi-bak/egs/yesno/s5/exp/mono0a/log$ vim align.38.1.log
這里面0,1就分別代表說的是no還是yes啦顶瞒。