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
需要自己建立这些目录
之后的结果就与官网一样了