Kaldi學習手記(一):Kaldi的編譯安裝

by21010發表於2015-10-12

Kaldi是一款基於C++編寫的開源語音識別工具箱。這款工具既可以在Windows下編譯也可以在Linux下編譯。不過聽學姐說以後還是在Linux下做開發多一些,我就想幹脆順便把Linux環境熟悉熟悉,於是就安了個虛擬機器裝上了Ubuntu。文件裡面也說還是建議在Linux下使用Kaldi。好久沒用過Linux了,也不習慣在命令列下操作,編譯Kaldi還真是費了我一番功夫。下面把過程記錄一下。

一、下載

下載直接利用git版本控制系統就可以了,開啟終端,直接在你的實驗目錄下輸入命令:

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

不一會就從github上下載下來了。當然,首先得確保你安裝了git。要是沒安裝的話,就先輸入:

sudo apt-get install git

安裝git版本控制軟體。

二、各目錄功能

下載完畢以後,cd kaldi-trunk進去看看下載了一些什麼東西。
Kaldi目錄
其中,./tools,./src和./egs這三個目錄是比較重要的。

./tools目錄下面全部都是Kaldi依賴的包。其中主要有:

  1. OpenFST:Weighted Finite State Transducer library,是一個用來構造有限狀態自動機的庫。我們知道隱馬爾科夫模型就可以看成是一個有限狀態自動機的。這是最終要的一個包,Kaldi的文件裡面說:If you ever want to understand Kaldi deeply you will need to understand OpenFst.誒,要學的好多。
  2. ATLAS:這是一個C++下的線性代數庫。做機器學習自然是需要很多矩陣運算的。
  3. IRSTLM:這是一個統計語言模型的工具包。
  4. sph2pipe:這是賓夕法尼亞大學linguistic data consortium(LDC)開發的一款處理SPHERE_formatted數字音訊檔案的軟體,它可以將LDC的sph格式的檔案轉換成其它格式。

./src目錄存放的是Kaldi的原始碼。./egs存放的是Kaldi提供的一些例子。我們現在要做的就是編譯安裝Kaldi依賴的各種庫,然後編譯安裝Kaldi。

三、Kaldi的編譯

安裝之前需要確保你安裝了這些軟體

apt-get
subversion
automake
autoconf
libtool
g++
zlib
libatal
wget

Ubuntu裡面都有,所以直接開始安裝。
首先安裝依賴包。在./tool目錄下輸入make,開始編譯,輸入make -j 4命令可以加快速度(多核並行處理)。
之後切換到./src目錄下,輸入./configure進行配置,然後輸入make depend,完成之後輸入make進行編譯。當然這個過程也可以並行處理加速,輸入make -j 4。經過漫長的編譯過程以後,就安裝完畢了。

四、執行一個例子

Kaldi自帶的例子都放在./egs目錄下。
這裡寫圖片描述
其中最簡單的就是yesno這個例子了。這是一個非常小的資料集,每一條記錄都是一系列yes或者no的語音,標註是由檔名來標註的。先執行一下。切換到./egs/yesno/s5目錄下,執行sudo ./run.sh命令。
這裡寫圖片描述
經過一段時間的訓練和測試,可以看到執行結果。
這裡寫圖片描述
WER為0.00。看來這個例子識別的還是挺準的。

PS:WER(Word Error Rate)是字錯誤率,是一個衡量語音識別系統的準確程度的度量。其計算公式是WER=(I+D+S)/N

下面進入./waves_yesno目錄瞧一瞧。
這裡寫圖片描述
全部都是.wav格式的音訊檔案。可以開啟一個檔案聽一聽,發現是一個老男人連續不停地說yes或者no,每個檔案說8次。檔名中,0代表那個位置說的是no,1代表說的是yes。這個實驗沒有單獨的標註檔案,直接採用的是檔名來標註的。

相關文章