HTK语音识别处理流程和环境搭建

  • 第一步:下载HTK:

登录HTK Speech Recognition Toolkit ,需注册账号才可下载。

进入htk路径下:cd /d D:\jiankang\htk,前提是已经完成了相关环境变量的配置,其中包括HTKLib,HTKTools等路径。

  • 第二步:运行VCVARS32

出现Visual Studio的版本号,操作位数即表示成功。

  • 第三步:编译HTK

  • 1.编译Library

输入以下代码:

cd HTKLib(进入路径)

nmake /f htk_htklib_nt.mkf all

  • 2.同理编译HTK TOOLS

前提是cd..返回htk目录下输入以下命令:

cd HTKTools

nmake /f htk_htktools_nt.mkf all

运行成功不报错会出现一些工具版本号等等信息意味编译成功。

  • 3.验证HTK编译

在编译完这些工具后,在htk所在路径下运行HInit后若出现以下界面,则表示编译成功

  • 第四步:使用HSLAB录音

  • 1.终端打开HSLAB工具

完成环境搭建后,使用HTK自带的工具HSLAB,运行cmd,在工作目录中输入hslab zisha.sig 则可弹出以下页面,然后进行点击rec录音,save保存即可。

  • 2.提取特征文件

  1. 在htk路径下建一个test文件夹,在test文件夹内新建一个analysis.conf文件,文件内容如下:

  1. 在def文件夹中新建一个targetlist.txt,内容如下:

  1. 完成上面后,输入Hcopy -A -D -C test/analysis.conf -S def/targetlist.txt,运行成功后得到以下界面和20个mfcc文件。

  • 第五步:初始化HMM模型

  • 1.models文件夹配置

  1. 在models文件夹下新建三个无后缀文件hmm_zisha、hmm_yiyu、hmm_sil。在test文件中新建trainlist.txt文件。

  • 2.hmm文件配置

  1. 在hmms文件夹中新建hmm0文件夹

  2. 执行以下命令:                 

Hinit -A -D -T 1 -S test/trainlist.txt -M hmms/hmm0 -H models/hmm_zisha -l zisha -L lab zisha

Hinit -A -D -T 1 -S test/trainlist.txt -M hmms/hmm0 -H models/hmm_yiyu -l yiyu -L lab yiyu

Hinit -A -D -T 1 -S test/trainlist.txt -M hmms/hmm0 -H models/hmm_sil -l sil -L lab sil

3.输出结果

运行成功后可以在hmm0文件夹内得到hmm_zisha、hmm_yiyu、hmm_sil 这三个文件。

  • 4.这一步我遇到的问题

  1. EROR [+2121]  HInit: Too Few Observation Sequences [0]FATAL ERROR - Terminating program Hinit

  1. 当然这过程到这一步出了个小插曲:EROR [+2121]  HInit: Too Few Observation Sequences [0]FATAL ERROR - Terminating program Hinit这个错误信息通常出现在使用HInit初始化模型时,表示没有足够的观测序列用于初始化模型。观测序列是用于训练模型的数据序列,如果没有足够的数据来训练模型,就会导致这个错误。可能的原因包括:训练数据集中没有足够的观测序列,导致无法初始化模型。数据集中的观测序列数量非常少,不足以提供足够的信息来训练模型。数据集中的数据格式不正确,导致无法正确读取观测序列。
  2. 于是我又重新录入数据,录入多一点的数据试试(我不知是环境没配置完全,还是咋地,但是按照书上步骤运行前面也没报错也都能正常运行),也修改了定义的参数,也报错。然后就查阅了些许资料然后还是解决了这步,得到以下结果(hmm0内自动生成了三个文件):

  • 第六步:HMM模型训练

  • 1.hmms文件夹配置

  1. 前面步骤完成后就到了HMM模型训练,在hmms文件中新建三个文件夹hmm1、hmm2、hmm3.使用以下命令:

HRest -A -D -T 1 -S test/trainlist.txt -M hmms/hmm1 -H hmms/hmm0/hmm_zisha -l zisha -L lab zisha

HRest -A -D -T 1 -S test/trainlist.txt -M hmms/hmm2 -H hmms/hmm1/hmm_zisha -l zisha -L lab zisha

HRest -A -D -T 1 -S test/trainlist.txt -M hmms/hmm3 -H hmms/hmm2/hmm_zisha -l zisha -L lab zisha

       2.重复替代操作

将上述命令中的“zisha”替换为“yiyu”和“sil”,分别运行一次。运行成功后可以在hmm3文件夹中得到hmm_zisha、hmm_yiyu和hmm_sil三个文件。

  • 3.建立语法和字典

  • 1.def文件夹配置

在def中新建gram.txt文件,在def文件夹建立dict.txt,内容如下:

 2.建立工作网络

然后建立工作网络,输入以下命令:Hparse -A -D -T 1 def/gram.txt def/net.slf

3.result文件夹和test文件夹配置 

 识别results文件夹中新建reco.mlf文件。在test文件夹中新建hmmsdef.mmf文件,其内容为hmms/hmm3文件夹中的所有hmm_xxx文件的数据,第一个复制进去的文件保留全部数据,剩下的文件从第一个~h开始复制,即只保留第一个~o。在test文件中新建hmmlist.txt,内容如下:zishayiyu sil 然后输入命令:

Hvite -A -D -T 1 -H test/hmmsdef.mmf -i result/reco.mlf -w def/net.slf def/dict.txt test/hmmlist.txt mfcc/test_01.mfcc

4.test文件中新建hmmlist.txt

在test文件中新建hmmlist.txt,然后输入命令:

Hvite -A -D -T 1 -H test/hmmsdef.mmf -i result/reco.mlf -w def/net.slf def/dict.txt test/hmmlist.txt mfcc/test_01.mfcc 重复完成多次,成功即得到如下结果。

5.test文件夹中建一个directin.conf文件

在test文件夹中建一个directin.conf文件,然后输入命令:Hvite -A -D -T 1 -H test/directin.conf -g -H test/hmmsdef.mmf -w def/net.slf def/dict.txt test/hmmlist.txt,出现“ready”后可说话,回车出现识别结果。如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值