天天看點

Kaldi學習手記:Kaldi的編譯安裝 Kaldi學習手記:Kaldi的編譯安裝

Kaldi學習手記:Kaldi的編譯安裝

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           
  • 1

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

sudo apt-get install git           
  • 1

安裝git版本控制軟體。

二、各目錄功能

下載下傳完畢以後,cd kaldi-trunk進去看看下載下傳了一些什麼東西。 

Kaldi學習手記:Kaldi的編譯安裝 Kaldi學習手記: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目錄下。 

Kaldi學習手記:Kaldi的編譯安裝 Kaldi學習手記:Kaldi的編譯安裝

其中最簡單的就是yesno這個例子了。這是一個非常小的資料集,每一條記錄都是一系列yes或者no的語音,标注是由檔案名來标注的。先運作一下。切換到./egs/yesno/s5目錄下,運作sudo ./run.sh指令。 

Kaldi學習手記:Kaldi的編譯安裝 Kaldi學習手記:Kaldi的編譯安裝

經過一段時間的訓練和測試,可以看到運作結果。 

Kaldi學習手記:Kaldi的編譯安裝 Kaldi學習手記:Kaldi的編譯安裝

WER為0.00。看來這個例子識别的還是挺準的。

PS:WER(Word Error Rate)是字錯誤率,是一個衡量語音識别系統的準确程度的度量。其計算公式是 WER=(I+D+S)/N ,其中I代表被插入的單詞個數,D代表被删除的單詞個數,S代表被替換的單詞個數。也就是說把識别出來的結果中,多認的,少認的,認錯的全都加起來,除以總單詞數。這個數字當然是越低越好。

下面進入./waves_yesno目錄瞧一瞧。 

Kaldi學習手記:Kaldi的編譯安裝 Kaldi學習手記:Kaldi的編譯安裝

全部都是.wav格式的音頻檔案。可以打開一個檔案聽一聽,發現是一個老男人連續不停地說yes或者no,每個檔案說8次。檔案名中,0代表那個位置說的是no,1代表說的是yes。這個實驗沒有單獨的标注檔案,直接采用的是檔案名來标注的。

AI

繼續閱讀