当前位置: 首页 > 工具软件 > HTK > 使用案例 >

Ubuntu编译/运行HTK

罗睿识
2023-12-01

Ubuntu 14.04 64位

HTK 3.4.1


参考网页:http://htk.eng.cam.ac.uk/docs/inst-nix.shtml


编译错误及解决方法:

1.找不到头文件 sys/cdefs.h

Ubuntu的cdefs.h在目录/usr/include/x86_64-linux-gnu/sys/cdefs.h中,在/usr/include目录下建个符号链接sys指向/usr/include/x86_64-linux-gnu/sys/

之后还有一些头文件找不到,也用此方法解决

修改环境变量C_INCLUDE_PATH,把/usr/include/x86_64-linux-gnu添加进去


2.找不到头文件gnu/stubs-32.h

gnu目录下有stubs-64.h但没有32位的,apt-get安装libc6-dev-i386


3.找不到头文件X11/Xlib.h

安装X11的开发包libx11-dev


4.链接找不到-lX11

编译的HTK是32位的,所以不能用64位的X11库,搜索到http://aravindev.blogspot.com/2013/08/installing-htk-34-on-ubuntu-64-bit-os.html,但我用他的方法还是不行,所以只好重新configure --without-x --disable-hslab,这样能编译通过


使用:

在HTKDemo目录下执行如下命令

[HTKDemo]$ perl runDemo.pl configs/monPlainM1S1.dcf


1.提示“Must be in directory HTKDemo to run this script”,但当前目录就是HTKDemo目录

打开runDemo.pl,找到出错位置

$NT_dir = `cd`;
$NT_dir =~ tr/a-z/A-Z/;
chomp($NT_dir);

$dir_pos = index($NT_dir, "HTKDEMO");
$get_dir = substr($NT_dir, $dir_pos, 7);


($get_dir =~ "HTKDEMO") || die "Must be in directory HTKDemo to run this script\n";
把$NT_dir打印出来发现是空的,把$NT_dir = `cd`;改成$NT_dir = `pwd`;,然后这里就OK了


cd是windows命令,这怎么回事。

runDemo.pl应该是windows下使用的脚本,同级目录下有一个runDemo,这个才是在Linux上用的。无语,官网上的教程也有错啊。


2.

Can't open proto at ./MakeProtoHMMSet line101, <> line 21.

Can't open hmms/hmm.0

Can't open hmms/hmm.1

Can't open hmms/hmm.2

cp: target ‘hmms/tmp’ is not a directory

Can't open test

 

需要自己建立这些目录


之后的结果就与官网一样了

 类似资料: