Visual Studio 2019调试HTK代码

这篇博客介绍了如何在VisualStudio中调试HTK的源码,以HDMan工具为例。首先创建一个新的空项目,然后添加HTKLib源代码和头文件,排除部分特定文件。接着配置项目属性,包括附加包含目录、警告等级、命令行选项和链接器的附加依赖项。完成设置后,生成解决方案得到HDMan.exe。通过设置断点和命令参数,即可开始调试过程。
摘要由CSDN通过智能技术生成

在上一篇博客的最后,利用HDMan工具生成dict和monophone1文件,利用到了beep、names、wlist等文件。下面借这个机会来调试跟踪下这个工具是如何一步步完成上述任务的。重点说明如何在Visual Studio下调试HTK的代码,后面遇到更加复杂任务,比如GMM建模、HMM模型训练、解码等任务时,跟踪代码看看它是如何实现的。

步骤一:

打开VS,点击文件——新建——项目,

Visual Studio

选择空项目,点下一步。

Visual Studio

截图已经说明清楚了。点击新建后了,在界面上的解决方案资源管理器里出现新建的项目和解决方案。

Visual Studio

再看一下,解决方案存储位置的情况:

Visual Studio

HTK.sln就是解决方案的文件,它是一个XML文件,描述这个方案的一些情况。比如Visual Studio的版本信息,平台配置信息等等

看一下它的内容吧。


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29020.237
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HDMan", "HDMan\HDMan.vcxproj", "{C42A149F-374E-4454-9E08-0FC8FBBA43F9}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Debug|x64.ActiveCfg = Debug|x64
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Debug|x64.Build.0 = Debug|x64
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Debug|x86.ActiveCfg = Debug|Win32
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Debug|x86.Build.0 = Debug|Win32
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Release|x64.ActiveCfg = Release|x64
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Release|x64.Build.0 = Release|x64
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Release|x86.ActiveCfg = Release|Win32
		{C42A149F-374E-4454-9E08-0FC8FBBA43F9}.Release|x86.Build.0 = Release|Win32
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {92EF52E3-085B-4682-AAE8-6222B4F67B41}
	EndGlobalSection
EndGlobal

这个容器包含了一个Project,名字叫“HDMan”,它对应的Visual Studio版本是Visual Studio Version 16。非特殊情况下,不要手动修改这个XML文件。跟HTK.sln同级的还有文件夹HDMan,里面包含三个文件。这个文件夹就是HDMan项目的根目录。其中HDMan.vcxproj描述了该项目的配置信息,感兴趣的可以看一看。

Visual Studio

步骤二:添加源代码。

HTK代码结构包括两个方面和两个层次。一是关于语音模型,包括库文件HTKLib和工具HTKTools,其中HTKLib包含比如wave文件处理、signal信号处理、标注处理函数、训练依赖的函数库等等,而HTKTools是具体利用库函数生成的可执行文件,能够在命令行调用的工具,例如HDMan.exe、HERest.exe、Hinit.exe、HVite.exe等等,这些文件中都包含一个main函数。另一方面是关于语言模型的,HLMLib和HLMTools。目前只关于语音模型,因此主要考虑HTKLib和HTKTools两个文件夹下的代码。

将下载的htk源码里的HTKLib文件夹复制到解决方案的目录下,也就是HTK.sln文件所在的目录。因为后面还要添加更多项目都需要用到这个库,只要是HTKTools里的工具。

现在给HDMan项目添加源文件和头文件。

以添加源文件为例,右键单击“源文件”,选择“添加”——“现有项”,系统打开一个文件选择窗口,找到刚才复制过来的HTKLib文件夹,选择所有的.c文件,除了下面五个:“HArc.c”, “HExactMPE.c”, “HFBLat.c”, “HGraf.c” “HGraf.null”,原因是什么暂时不清楚,当作一个彩蛋,最后来揭晓吧。

与添加源文件类似,还要添加代码涉及到的头文件,将HTKLib中的头文件加入进“头文件”中来,除去“HArc.h”, “HExactMPE.h” “HFBLab.h”三个文件。

配置属性->C/C++->常规->附加包含目录中加: D:\vscode\source\repos\HTK\HTKLib

配置属性->C/C++->常规->警告等级设置为:关:关闭所有警告(/W0)

配置属性->C/C++->命令行->附加选项中加: /wd4335 /D "WIN32_AUDIO" /D ARCH=\"WIN32\" /D isnan=_isnan /D WIN32 /D _CRT_SECURE_NO_WARNINGS 

SDL检查为“否”

配置属性->链接器->输入->附加依赖项中加: winmm.lib

设置完成后,生成解决方案

看看我们的输出文件夹中是否有期待的结果。

 红圈的文件就是生成的HDMan.exe工具。找到“源文件”下的HDMan.c,打点断,在配置文件的“调试”项中,添加命令参数。

执行调试,或者直接点“F5”键,就开始调试了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值