2014-01-21
如果我们要修改或者说调试HTK工具,那就要自己建工程文件了。
偷懒的话可以用Microsoft Visual Studio或者Xcode,但我想找一个跨平台的,轻量级的开发工具,尝试了几个:
Code::Blocks 功能很多,但在OSX下界面比较凌乱,菜单文字大小都不一。优点是配置比较齐全,默认就有Cygwin和MinGW的设置。
CodeLite 界面算整齐,不过默认就只有MinGW的设置,Cygwin的设置还要自己添加。Windows下compiler问题较多,不知道为何会执行一个makedir的命令,而这个命令是找不到的。OSX下用自带的GNU GCC Compiler就很好。
NetBeans 居然一定要用Java7,OSX下只能有一个版本的Java,装了Java7后,Chrome不支持了,因为Java7是64位的...果断放弃。
最后还是用CDT,因为eclipse用得比较熟了,快捷键也不用重新记了,而且ADT也是eclipse,过渡比较好。
对于编译器的选择,个人建议用MinGW,Windows下的CodeBlocks和CodeLite都直接把MinGW叫GNU GCC Compiler。
选好IDE和compiler后,就建一个GNU GCC的C项目,然后从HTK里面copy以下文件到项目里:
esig_asc.c
esig_edr.c
esig_nat.c
esignal.c
esignal.h
HAdapt.c
HAdapt.h
HArc.c
HArc.h
HAudio.c
HAudio.h
HCopy.c
HDict.c
HDict.h
HExactMPE.c
HExactMPE.h
HFB.c
HFB.h
HFBLat.c
HFBLat.h
HLabel.c
HLabel.h
HLat.c
HLat.h
HLM.c
HLM.h
HMap.c
HMap.h
HMath.c
HMath.h
HMem.c
HMem.h
HModel.c
HModel.h
HNet.c
HNet.h
HParm.c
HParm.h
HRec.c
HRec.h
HShell.c
HShell.h
HSigP.c
HSigP.h
HTrain.c
HTrain.h
HUtil.c
HUtil.h
HVQ.c
HVQ.h
HWave.c
HWave.h
在Windows下找不到一些头文件,可以在opensource.apple.com里面找到,你没看错,是苹果的开源项目!下载了放在compiler的include文件夹下面。
include\i386\_types.h
include\machine
include\machine\_types.h
include\ppc
include\ppc\_types.h
include\sys
include\sys\_types.h
include\sys\cdefs.h
include\sys\filio.h
include\sys\ioccom.h
最后还有一个编译错误,就是esignal.c里一个变量ARCH没有定义,我就自己加了一个。
Windows:
char *ARCH="win32";
OSX:
char *ARCH="linux";
这样就能成功编译了,编译出来的HCopy可执行文件(Windows7和OSX Mavericks下都成功编译),和之前用nmake编译的用法是一样的,用同样的文件测试,结果基本一致,只是有几个数字的小数点后2位不同,像是4舍5入的误差。
不过当要debug的时候,OSX Mavericks就悲剧了,gdb被apple去掉了,lldb取而代之。但eclipse对lldb支持不太好,只能求助网络,硬是把gdb装上了,最后OSX下也能debug了。Windows下问题就少很多,只要装compiler的时候包括gdb就没问题了。