虛擬機: Ubuntu 14.04 Ubuntu下載地址
gcc 建議安裝4.8以上版本 ,登陸最好是root, 廢話不多說,開始,首先安裝虛擬機, 虛擬機安裝 , 完成的示意圖,快捷鍵Ctrl+Alt+t打開終端:
在終端中鍵入sudoapt-get update 命令然後輸入密碼 回車
kaldi項目現在託管在github上,需要使用git命令將其下載到本地,安裝git 在終端中鍵入sudoapt-get install git
獲取kaldi源碼在終端中鍵入 gitclone https://github.com/kaldi-asr/kaldi.git kaldi-trunk 如圖所示:
cd kaldi-trunk目錄 鍵入gitcheckout命令檢查源碼一致性
在終端鍵入cd kaldi-trunk/tools/extras,鍵入ls 命令列出當前目錄所有文件,鍵入./check_dependencies.sh執行該腳本檢查包依賴情況, 根據提示安裝所需要的包
鍵入sudo apt-get install g++ zlib1g-dev automake autoconf libtool subversion
sudo apt-get install libatlas3-base
sudo ln -s -f bash bin/sh (該命令獲取shell腳本的執行權)
(1)sudo apt-get install libtool
(2)sudo apt-get install autoconf
(3)sudo apt-get install wget
(4)sudo apt-get install perl
(5)sudo apt-get install subversion
(6)sudo apt-get install build-essential
(7)sudo apt-get install gfortran
(8)sudo apt-get install libatlas-dev
(9)sudo apt-get install libatlas-base-dev
(10)sudo apt-get install zlib1g-dev(中間是數字1)
如果安裝出現 function gensub never defined,則需要安裝gawk
sudo apt-get install gawk.
在終端鍵入cd kaldi-trunk/tools,鍵入ls命令列出當前目錄文件, 鍵入make 進行編譯,如下圖所示:
這裏出現警告IRSTLM庫沒有安裝,其他一切OK,如下圖:
根據提示:鍵入cd kaldi-trunk/tools/extras ,鍵入 ./install_irstlm.sh安裝IRSTLM
kaldi-trunk/tools目錄下主要是一些外部庫,這部分準備完成,編譯kaldi的源碼,在終端鍵入cd kaldi-trunk/src
鍵入ls命令列出當前目錄的文件
鍵入./configure檢查外部庫安裝情況,根據提示進行安裝
鍵入make depend 進行預編譯(make depend -j 4)
鍵入make 進行編譯(make -j 4)
make 耗時較長請耐心等待.............
注意:這裏是虛擬機,所以CUDA不存在
檢測kaldi是否編譯成功,使用kaldi-trunk/egs/yesno例子進行測試
yesno是關於yes和no兩個孤立詞的識別
在終端鍵入cd kaldi-trunk/egs/yesno/s5 進入yesno樣例目錄
鍵入ls命令查看該目錄下有哪些文件
conf文件夾裏是一些配置文件例如MFCC的參數 HMM的拓撲結構
local文件夾裏主要是一些準備數據的腳本供頂層腳本run.sh調用
steps和utils文件夾裏主要是一些運行時調用的腳本
data文件夾裏主要存放語言模型、發音字典和音素信息等等。
鍵入./run.sh該腳本執行孤立詞識別流程,結果如下圖:
說明我們已經安裝成功了!!!!!
下面可以測試timit數據了(timit的數據需要自己下載,對應的腳本加載數據路徑也要相應的修改,這裏不多說)
說一下我個人安裝時遇到的坑吧:
1. 因爲編譯的時候需要的內存會很大的,所以在創建虛擬機時,最好分配較大的內存,以防編譯過程中,內存不足
2. gcc版本,這個ubuntu下面默認的是gcc4.8,這個版本的gcc有bug,會導致kaldi編譯失敗,而kaldi編譯好像是需要4.7以上的版本(我記得好像是),所以這裏最好安裝較高版本,怎麼裝就自己百度吧
3. python庫最好是2.7(這個版本比較穩定)
4.還有一個錯誤是編譯的時候,出現了internal compiler error:Killed 具體解決方案是:
internal compiler error: Killed (program cc1plus)
在 640M 內存的 vps 做編譯的時候出現了上述錯誤.
幾經搜索, 才發可能是系統沒有交換分區, 編譯過程中內存耗盡, 導致了編譯中斷 …
解決方式也很簡單, 就是增加一個交換分區:
1. 創建分區文件, 大小 2G
dd if=/dev/zero of=/swapfile bs=1k count=2048000
2. 生成 swap 文件系統
mkswap /swapfile
3. 激活 swap 文件
swapon /swapfile
這樣就木有問題了, 但是這樣並不能在系統重啓的時候自動掛載交換分區, 這樣我們就需要修改 fstab.
修改 /etc/fstab 文件, 新增如下內容:
/swapfile swap swap defaults 0 0
這樣每次重啓系統的時候就會自動加載 swap 文件了.
執行命令是最好是管理員權限
看了一下run.sh裏面具體是調用其它的一些shell文件,下面準備好好學習下!