HTK 安裝、編譯以及測試——Ubuntu 14.04

想向師兄學習使用HMM的使用,

HMM 有HTK 的這個實現平臺,包含很多有用的工具,看起來相當強大。


HTK 的下載地址(需要註冊)

http://htk.eng.cam.ac.uk/download.shtml 

還有HTK 手冊什麼的


配置環境:

gcc 4.8.2

ubuntu 14.04 x64

可能還有一些庫,曾經安裝過了


下載好了 HTK-3.4.1.tar.gz

先解壓:

cd HTK_directory
tar -xf HTK-3.4.1.tar.gz -C your_destination_directory

解壓完成了,看手冊說明需要:

./configure 
make all
sudo make install

這裏安裝到了默認路徑 /usr/local/bin,如果需要修改,在configure時增加-prefix

./configure -prefix=your_direcotry

本應該一帆風順的,這時出現了錯誤:

/usr/include/features.h:374:25: fatal error: sys/cdefs.h: 沒有那個文件或目錄


很顯然是缺少依賴了,讚我大谷歌:

sudo apt-get install libc6-dev
sudo apt-get install libc6-dev:i386
其中第二行是爲了以防萬一(果然就是這個問題呀!)。

然而出了一個問題,萬惡的163源

W: Failed to fetch gzip:/var/lib/apt/lists/partial/us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources  Hash Sum mismatch, 
E: Some index files failed to download. They have been ignored, or old ones used instead.

需要刪除已經有的list信息

sudo rm -r /var/lib/apt/lists/*
sudo apt-get update


然後把源換成aliyun的了,阿里雲啦~

阿阿阿阿,結果C編譯器不見啦!!見鬼啦!

只好又重裝gcc 

這樣一來,終於可以裝

sudo apt-get install libc6-dev:i386

裝完之後

./configure 

make all

又出錯了啊,出錯了啊,摔!!!!!

/usr/bin/ld: cannot find -lX11
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s
/usr/bin/ld: cannot find -lgcc_s

我還有什麼話可說呢,我懂得linux之所以沒人使用的緣由了,

目測又是缺庫了,缺什麼呢?讓我們來問谷哥吧

PS:其實目測就能看到了 incompatible libgcc.a

這是嘛呢!這是嘛呢!

回顧一下,我安裝的是64位系統,什麼時候gcc會不對頭了呢?當然是安裝了32位(i386)的庫。。。。。。

是不是我剛纔裝的。。。

sudo apt-get install libc6-dev:i386
就是這個吧,我猜就是這個吧,肯定是這個啊啊啊啊啊!名字這麼像

然而卸載這個包並不能編譯,又回到了上上上個錯誤

查看configure文件,原來我的電腦被識別爲x86_64_linux了,能改成linux嗎。。。。

當然不行啦當然不行啦當然不行啦

那怎麼辦呢,我又把i386包裝回來了,重新configure, make all

/usr/bin/ld: cannot find -lX11

然而仍然是這個錯誤,鏈接錯誤

參考:http://eminzhang.blog.51cto.com/5292425/1285705

我來試試吧!!


經過我一番思考(其實電腦已經安裝了libx11-dev)

我認爲這個configure最後給我編成了32位的HTK(我我我一點都不想這樣呀!!!)

大概仍然是缺少了x11 32位的!!!!

sudo apt-get install libx11-dev:i386

--------------------------------------------------------

終於可以編譯、鏈接啦!

總結需要的庫

sudo apt-get install libx11-dev:i386
sudo apt-get install libc6-dev:i386


我想是因爲configure時,認爲我的電腦是x86_64的,所以默認選擇了32位編譯

在configure文件中,gcc包含了-m32的選項足以證明這點(如果去掉了似乎難以編譯)

接下來就是一帆風順了

make all
sudo make install

另外需要額外安裝一個HDencode,這個包的下載地址爲

http://htk.eng.cam.ac.uk/ftp/software/hdecode/HDecode-3.4.1.tar.gz

使用tar解壓可以看到內部內容實際上是htk目錄下的一部分

把它拷到對應的目錄下

即可在HTK目錄下繼續執行

make hdencode
sudo make install hdencode

------------------------------------

測試,

下載HTK-samples-3.4.1.tar.gz

解壓得到samples文件夾

進入samples\HTKDemo\

執行

mkdir hmms
mkdir hmms/{tmp,hmm.{0,1,2,3}} proto acc test
./runDemo ./configs/monPlainM1S1.dcf 
如果出現

====================== HTK Results Analysis =======================
  Date: Thu Jun 18 22:43:11 2015
  Ref : labels/bcplabs/mon
  Rec : test/te1.rec
      : test/te2.rec
      : test/te3.rec
------------------------ Overall Results --------------------------
SENT: %Correct=0.00 [H=0, S=3, N=3]
WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133]
===================================================================

這是結果的最後幾行,應該就說明安裝成功啦




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章