Ubuntu编译/运行HTK

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

 

需要自己建立这些目录

 

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值