第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > HTK搭建大词汇量连续语音识别系统(三)

HTK搭建大词汇量连续语音识别系统(三)

时间:2019-02-12 16:14:48

相关推荐

HTK搭建大词汇量连续语音识别系统(三)

今天七夕节,祝大家七夕快乐!

但这与我这种秃头女程序猿又有什么瓜系.jpg,继续搭建模型。。

由于昨天关闭了电脑,今天打开cmd之后要先做运行VCVARS32和连接bin.win32两步,具体操作见第一个教程开头

十、绑定三音素

首先,制作一个脚本文件mktri.led,放在data/scripts文件夹中,内容为:

WB sp

WB sil

TC

!!!!记得最后要有一行换行

执行命令:

HLEd -n labels/triphones1 -i labels/wintry.mlf scripts/mktri.led labels/aligned.mlf

得到triphones1和wintry.mlf两个文件。

这里要对wintry.mlf用python代码处理,将路径修改为“*/XXXX”。代码如下:

a1=open("d:/data/labels/wintry.txt",'r+')b=[]str='S'txt1=a1.readlines()a1.close()for lines in txt1:a=linesc=aif a.find(str)>=0:b=a.split('S',1)c='"*/S'+b[1]#print(c)a2=open("d:/data/labels/wintry_new.txt",'a')a2.write(c)a2.close()

再把wintry_new.txt修改为wintry.mlf即可。

执行命令:

perl scripts/maketrihed monophones0 labels/triphones1

在data文件夹中找到mktri.hed文件,并放入scripts文件夹中

执行命令:

HHEd -H hmms/hmm9/macros -H hmms/hmm9/hmmdefs -M hmms/hmm10 scripts/mktri.hed monophones0

似乎有warning,不过应该不重要

重估两次:

HERest -A -D -T 1 -C configs/config -I labels/wintry.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm10/macros -H hmms/hmm10/hmmdefs -M hmms/hmm11 labels/triphones1

HERest -A -D -T 1 -C configs/config -I labels/wintry.mlf -t 250.0 150.0 1000.0 -s stats -S scps/train.scp -H hmms/hmm11/macros -H hmms/hmm11/hmmdefs -M hmms/hmm12 labels/triphones1

接着,使用脚本生成fullist和tielist文件

首先制作脚本文件global3.ded,内容如下:

RS cmu

MP sil sil sp

TC

!!!!记得最后要有一行换行

然后,在dict3的基础上制作新发音字典dict4。去掉了以下内容:

SILEN sil

SEND-END [] sil

SEND-START [] sil

执行如下命令:

HDMan -b sp -n lists/fullist -g global3.ded -l floag dict/dict4-tri dict/dict4

可能会有如下报错:

ERROR [+1452] ReadDictProns: word – out of order in dict dict/dict4

FATAL ERROR - Terminating program HDMan

把dict4里面的“-- sp”这一行换到“A”的上面就好了。之后在data/lists中生成fullist文件。

然后对fullist文件进行处理。用记事本打开fullist,在最后添加如下内容:

sil

ay

em

ow

ax

!!!!记得最后要有一行换行

接下来生成tree.hed文件

首先,在HTK samples文件夹中找到mkclscript.prl,将其复制到data/scripts文件夹中,再执行以下命令:

perl scripts/mkclscript.prl TB 350.0 monophones0>tree.hed

在data文件夹中找到生成的tree.hed,但这个文件还缺少一些内容,因为生成的tree.hed只有TB开头。

按照路径打开HTK\samples\RMHTK\libquests.hed文件,ctrl+a复制全部内容,粘贴在生成的tree.hed的前面,然后在开头、中间、结尾分别按如下形式添加:

(添加)RO 100 stats

(添加)TR 0

QS “R_NonBoundary” {+}

QS “R_Silence” {+sil }

QS “R_Stop” {+p,+pd,+b,+t,+td,+d,+dd,+k,+kd,+g }

………………….

QS “L_y” { y-}

QS “L_z” { z-* }

(添加)TR 2

TB 350.0 “ST_ax_2_” {(“ax”,"-ax+",“ax+","-ax”).state[2]}

TB 350.0 “ST_b_2_” {(“b”,"-b+",“b+","-b”).state[2]}

TB 350.0 “ST_r_2_” {(“r”,"-r+",“r+","-r”).state[2]}

……………………

TB 350.0 “ST_sil_4_” {(“sil”,"-sil+",“sil+","-sil”).state[4]}

TB 350.0 “ST_sp_4_” {(“sp”,"-sp+",“sp+","-sp”).state[4]}

(添加)TR 1

(添加)AU lists/fullist

(添加)CO lists/tiedlist

(添加)ST trees

新建hmms/hmm13,hmms/hmm14,hmms/hmm15,执行如下命令:

HHEd -H hmms/hmm12/macros -H hmms/hmm12/hmmdefs -M hmms/hmm13 tree.hed labels/triphones1>log

这时你会发现在lists文件夹中生成了tiedlist文件

然后重估两次:

HERest -C configs/config -I labels/wintry.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm13/macros -H hmms/hmm13/hmmdefs -M hmms/hmm14 lists/tiedlist

知道你看到了很多WARNING,但不要怕,继续重估 。

HERest -C configs/config -I labels/wintry.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm14/macros -H hmms/hmm14/hmmdefs -M hmms/hmm15 lists/tiedlist

仍然有很多WARNING,但没有关系,做到这里,我们就可以进行最后的评估步骤了。

————————————————————————————————————————————

分割线。重估的时候要用到新的配置文件,是在data/configs/config的基础上添加如下两行内容:

FORCECXTEXP = T

ALLOWXWRDEXP = F

得到新的配置文件config2

!!!!记得最后要有一行换行

最后,执行评估命令:

HVite -C configs/config2 -H hmms/hmm15/macros -H hmms/hmm15/hmmdefs -S scps/test.scp -l * -i results/recout_hmm15.mlf -w dict/wdnet -p 0.0 -s 5.0 dict/dict3 lists/tiedlist

然后耐心等待结果,这里用时大概1个小时。。。

来康康recout_hmm15.mlf长什么样子,这里还放了右图语音原句做对比。

很好!!句子识别成功!!

再来康康具体数据,使用如下命令:

HResults -I test/testwords.mlf lists/tiedlist results/recout_hmm15.mlf

可以看到优化效果还是蛮显著的,句正确率提升10.00%,词正确率提升15.59%,词准确率提升20.16%。

至此,用HTK搭建大词汇量连续语音识别系统系列教程结束~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。