注:所需工具与教程完整版链接 http://pan.baidu.com/s/1qWn3JjQ 密码: da32
一. 下载HTK文件并阅读README介绍
到官网下载 HTK 和 HTK – samples 两个压缩文件,保存至F:\dialect\htk\HTK目录下(并解压)。http://htk.eng.cam.ac.uk/download.shtml
阅读README介绍(我用的写字板),重要的内容截图如下(内容是在windows下的编辑及安装):
这里翻译一下第一部分,即在windows下安装的一些先决条件(参考《windows下编译htk3.4 傻瓜式教程》——ICT superyang):
(1) HTK在visual studio 下编译测试通过(主要是为了使用nmake)
(2) 测试demo时,需要安装ActivePerl(Perl解释器,为了运行测试脚本)
(3) 需要7-zip或winzip解压工具
(4) 需要理解一些DOS命令行知识
(5) Path中需要包含路径C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin(Visual Studio.NET 2003)或者C:\Program Files\Microsoft Visual Studio\VC98\bin(VC6.0)
——>推荐使用vc++6.0。但是就我个人的理解,这一步的要求应该是能够使用vs在命令行下编译即可,所以使用哪个版本的vs应该不是什么大问题。
例如使用vs2012自带的命令行,无需配置即可直接编译。如下图:
或者不使用vs自带命令行的话,自己设置一下,可以参考http://m.blog.csdn.net/blog/weiqubo/13279221进行设置,本文中使用的VC++6.0进行htk工具的编译。
第二部分即是后面编译时做的内容。
由上可知,我们需要安装ActivePerl和vc++6.0。
二. 安装ActivePerl和vc++6.0
VC++6.0的下载与安装可以参考
教你如何在win8/8.1上安装Visual C++6.0
http://jingyan.baidu.com/article/7908e85c753858af481ad200.html
ActivePerl直接百度搜索安装即可。
关于这步,很多教程中都提到需要安装UltraEdit(一个非常强大的文本编辑器)
由于我在做的过程中没有出现傻瓜式教程中的如下问题,故而没有用到该编辑器。
三. 检查编译工具是否就绪(使用vc++6.0)
Vc6.0环境变量的设置如下(按照该教程一步步做即可):
cl测试时报错找不到mspdb60.dll,解决方式:
找到mspdb60.dll,在C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
复制到C:\Program Files\Microsoft Visual Studio\VC98\Bin(此为path中设置的路径)
原因(参考http://bbs.csdn.net/topics/360166065 五楼):
VC6 cl.exe 编译的时候,还要 到 MSDEV目录下调用几个动态库的
不然会提示缺少动态库
VC2010 应该也这样的,如果把动态库 复制到
BIN 目录下,就不用 设定 MSDEV的 环境变量了
编译准备工作的测试结果如图:
四. 开始编译
HTKBOOK中的相关内容如下:
5. Create a directory for the library and tools. Type:
mkdir bin.win32
6. Run VCVARS32 (it should be in your path, see prerequisites above) 7. Build the HTK Library, which provides the common functionality used by the HTK Tools. Enter the following commands:
cd HTKLib nmake /f htk_htklib_nt.mkf all cd .. 8. Build the HTK Tools
cd HTKTools nmake /f htk_htktools_nt.mkf all cd .. cd HLMLib nmake /f htk_hlmlib_nt.mkf all cd .. cd HLMTools nmake /f htk_hlmtools_nt.mkf all cd .. |
首先在HTK目录新建bin.win32文件夹。
1) 编译HTKLib
进入到HTKLib目录:cd HTKLib,在命令行里输入nmake/f htk_htklib_nt.mkf all进行编译
输入后,DOS窗口会出现如下情况(截取其中部分):
2)编译HTKTools
在命令行中输入cd..,表示返回上一层目录,再输入 cd HTKTools,进入HTKTools目录,输入nmake/f htk_htktools_nt.mkf all 编译该目录下的文件。
LINK : warning LNK4089: all references to "WINMM.dll" discarded by /OPT:REF
这不是错误,只是你的程序没有用到WINMM中的函数而已
所以连接程序为了优化你的程序就把对WINMM的引用去掉了
debug中不优化(没有/OPT:REF开关),所以就不作这件事
3)编译HLMLib
输入cd..,再输入cd HLMLib,进入HLMLib目录,输入:nmake/f htk_hlmlib_nt.mkf all编译该目录下的文件。
4)编译HLMTools
输入cd..,再输入cd HLMTools,进入HLMTools目录,输入:nmake/f htk_hlmtools_nt.mkf all编译该目录下的文件。
这时候我们已经编译完所有exe程序,我们打开bin.win32文件夹看一下,如果如下图所示,则证明已经编译成功。
五. 测试编译生成的程序是否正确
1) 为了能在DOS命令行中使用我们编译生成的工具,要将生成的工具路径加入到path中。
在cmd中输入path=%path%; F:\dialect\htk\HTK\HTK-3.4.1\htk\bin.win32
回车,再输入path查看添加后的结果:
我们接下来输入HInit查看一下能否成功运行编译后的程序,如果如下图所示,则证明path已经被正确的添加进来了~
(不知为何,在我的机子里在cmd中添加path虽然能够在输入path时显示,却没有真正起作用,系统环境变量中也并没有真正添加该path,只有自己手动到环境变量中添加,才有效果,且添加后需要重新打开cmd)
2)为了运行perl测试脚本,我们需要在机器中安装perl解释器,也就是一开始让大家安装的ActivePerl(安装后检测perl -失败,需要自己在环境变量中添加安装目录下的bin目录到path中,然后重新打开cmd测试。)
3)进入到HTKDemo目录(在HTK-samples文件夹下),输入perl runDemo.pl configs\monPlainM1S1.dcf运行测试脚本,如下图:
解决办法:
手动添加以下的文件夹。 HTKDemo/hmms/ (给HRest用) HTKDemo/test/ (给HVite用) HTKDemo/proto/ (给./MakeProtoHMMSet用) HTKDemo/accs
在accs以下添加 HTKDemo/accs/hmm.2
在hmms文件夹里,还要创建以下文件夹: HTKDemo/hmms/hmm.0/ (给HInit用) HTKDemo/hmms/hmm.1/ (给HRest用) HTKDemo/hmms/hmm.2/ (给HRest,HVite用) HTKDemo/hmms/hmm.3/ HTKDemo/hmms/tmp/ |
<</span>来源:http://bingxinye1.blog.163.com/blog/static/16879709820122308157101/ >
按照解决办法,仍旧是进入到HTKDemo目录(在HTK-samples文件夹下),输入perl runDemo.pl configs\monPlainM1S1.dcf运行测试脚本。
安装HTK结束~
在此感谢梨小落同学http://blog.sina.com.cn/s/blog_436992740102uw1j.html