Kaldi學習(二)

愛國者002發表於2018-06-11

今天直接進入第二個主題,如何安裝kaldi。由於我的是mac,所以我這裡使用虛擬機器,用ubuntu 16進行操作,其他的系統我不做講解。首先進入我要安裝的目錄,如下圖:


然後我們開始git拉取專案:

git clone https://github.com/kaldi-asr/kaldi.git kaldi --origin upstream

我們的檢視工作空間如下,多了我們想要的檔案(如果提示沒安裝git的,sudo apt install git 自己安裝一下):


我們進入該目錄:

cd kaldi

官方文件告訴我們,詳細的安裝過程在INSTALL檔案中描述,那麼進入kaldi後,我們可以看到如下檔案:


我們檢視INSTALL檔案如下:


我個人認為這裡有兩種方式來安裝,一種是使用工具的方式,一種是原始碼的方式。我這畢竟第一次初體驗,我們使用工具的方式把,所以我們進入tools然後檢視INSTALL如下:


那我在這裡對上面的內容進行一下翻譯:為了檢查kaldi的所依賴,首先我們執行extras/check_dependencies.sh很明顯這是個bash指令碼,應該是對依賴包的一些檢查操作(更智慧點,如果缺包的化,提示我們安裝,當然,這是我的想法,我們後面實驗到了的化再說),以此來檢查我們是否需要安裝一些系統級別的安裝包。注意檢查結果的輸出,在這個階段安裝我們所缺能讓我們的生活都變得美好起來(意思是如果此階段沒安裝的化,後面可能會搞死我們)。如果你的系統不支援預設c++編譯器,你可以使用其他的c++編譯器通過控制cxx環境變數,比如:cxx=g++-4.8 extras/check_dependencies.sh.

接下來,我們執行make命令(也就是說所缺包都已經安裝完畢,開始進行編譯),這個命令會預設安裝ATLAS 標頭檔案,OpenFst,SCTK和sph2pipe,其中OpenFst需要相應的c++ 編譯器支援c++11,比如g++>=4.7,Apple clang >=5.0,LLVM clang>=3.3。如果你的系統預設編譯器並不支援c++11,你可以顯示的制定編譯器如下:

make cxx=g++-4.8

如果你有多個CPUS並且想要進行加速,你可以進行並行編譯通過使用"-j",比如你有四個CPUs,那麼使用如下命令:

make -j 4

在extras/檔案中,同樣有各種各樣的指令碼來安裝額外的點點滴滴,這些可能會被相對獨立的例子指令碼所使用。如果示例指令碼需要你執行其中一個指令碼,他會告訴你怎麼做的。

以上關於翻譯部分完畢,我們開始進行,我不打算在這裡詳細介紹指令碼具體在做什麼,第一遍我們更期望是穩健的先走一遍,所以我們直接開始,我下面所述均為我自己的筆記本的情況,可能會與讀者的不一樣,這是可以理解的,畢竟大家的環境各不相同,那麼我們開始。

執行

./check_dependencies.sh得到如下圖所示:


那麼我接下來要安裝各個包了。至於如何安裝,圖片的最後已經給出了作者的建議,按照這個做就可以。那麼安裝完畢後,我再次檢查一下,執行 ./check_dependencies.sh 如下:


證明我們目前已經沒有所缺,很好,可以往下進行。

我們接下來開始進行編譯,使用上面提示的命令:

make cxx=g++-4.8 然後進行一段時間的等待。【PS:這裡其實坑挺大,尤其對於使用虛擬機器的人來說,比如我,一直編譯報錯,看錯誤應該是記憶體不夠,後來給虛擬機器分配更多的記憶體才過去,我用的4g。所以只要上述都做的沒問題,這裡問題不大。還有,我第一次跑總有兩個網站無法連結,所以我用了lantern翻牆,第二次才順利過去,並不確定是不是翻牆的問題。】

成功後如下:


其實到目前並沒有安裝完畢,仍然需要手動安裝IRSTLM,你可以利用extras/install_irstlm來進行。然後我們進入kaldi/src 目錄下執行./configure 這樣會生成一個kaldi.mk檔案。開始編程式碼,先開啟kaldi.mk檔案,讓程式編譯的時候帶上-fPIC選項,然後 make -j8,編譯完成後進入egs/yesno/s5 執行 ./run.sh 執行如果沒報錯有識別結果那麼安裝就成功啦。

相關文章