亲自动手用HTK实现YES NO孤立词识别

很久以前的发在研学论坛的帖子了,再重新整理了一下,希望对新手有用。

完整版链接:http://yun.baidu.com/s/1hapcE

第一步 创建语音文件 录音

命令:HSLab any_name.sig

第二步:声学分析

抽取yes和no的mfcc特征参数。保存在data/train/lab与data/train/sig下。

命令:HCopy.exe -A -D -C analysis.conf  -S targetlist.txt

第三步:HMM原型定义

建立文件yes.hmm、no.hmm、sil.hmm保存在model/下。

第四步:HMM训练

1.初始化:(建立文件夹yn/train/init)

 命令: HInite.exe  -A –D –T 1 –H model/yes.hmm –S trainlist.txt –M mode/proto yes

 2.训练

 命令: HRest.exe -A -D -T 1 -H model/proto/yes.hmm -S trainlist.txt -M model/proto yes

第五步:任务定义

1.          建立语法规则和字典

建立语法规则文件gram.txt(在yn文件夹下),内容为:

/*

* Task grammar

*/

$WORD = YES | NO;

( { SIL } [ $WORD ] { SIL } )

 

建立字典文件dict.txt(在yn文件夹下),内容为:

YES [yes] yes

NO [no] no

SIL [sil] sil

 

2.          建立任务网络

命令:HParse gram.txt net.slf

      HSGen -s net.slf dict.txt

 

第六步:识别

1.  建立文件hmmlist.txt(在yn文件夹下)文件,内容为:

yes

no

sil

注意每一列最后留一个空格。

2.          创建待识别信号并抽取mfcc参数(文件为yes01.mfcc)

3.          命令:Hvite.exe -H model/proto/yes.hmm -H model/proto/ no.hmm -H model/proto/sil.hmm -i reco.mlf -w net.slf dict.txt hmmlist.txt yes.mfcc

(是model/proto/no.hmm 中间没有空格)

 

识别结果自动存放在文件reco.mlf

#!MLF!#

"yes01.rec"

0 34300000 yes -17771.425781

 

第七步:识别自己写的一个perl脚本,做了一个简单的统计

亲自动手用HTK实现YES NO孤立词识别

.

 

你可能感兴趣的:(实现)