当前位置: 代码网 > it编程>硬件开发>stm32 > HTK语音识别处理流程和环境搭建

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

2024年08月04日 stm32 我要评论
HTK语音识别处理流程和安装编译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”后可说话,回车出现识别结果。如下:

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com