HTK 安装、编译以及测试——Ubuntu 14.04

时间: 2023-07-10 admin IT培训

HTK 安装、编译以及测试——Ubuntu 14.04

HTK 安装、编译以及测试——Ubuntu 14.04

想向师兄学习使用HMM的使用,

HMM 有HTK 的这个实现平台,包含很多有用的工具,看起来相当强大。


HTK 的下载地址(需要注册)

.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

然而仍然是这个错误,链接错误

参考:

我来试试吧!!


经过我一番思考(其实电脑已经安装了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,这个包的下载地址为

.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 2015Ref : labels/bcplabs/monRec : 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]
===================================================================

这是结果的最后几行,应该就说明安装成功啦