六、提取特征参数,生成.mfc文件

在data/configs文件中编写配置文件wav_config,内容:

SOURCEFORMAT=NIST
TARGETKIND=MFCC_0_D_A
TARGETRATE=100000.0
SAVECOMPRESSED=T
USEHAMMING=T
WINDOWSIZE=250000.0
SAVEWITHCRC=T
PREEMCOEF=0.97
NUMCHANS=26
CEPLIFTER=22
NUMCEPS=12

最后有一行换行
使用python编写生成.mfc文件的路径文件codetrain.scp,如下:

D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SA1.WAV D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SA1.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SA2.WAV D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SA2.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI1027.WAV D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI1027.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI1657.WAV D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI1657.MFC

python代码为

import osfor root,dirs,files in os.walk(r"D:\HTK\dataset_TIMIT\TIMIT\TRAIN"):for file in files:if file.endswith('.WAV'):root_txt=os.path.join(root,file)     #文本路径root_txt1=os.path.join(root)  a=file.split('.',1)#print(root_txt+' '+root_txt1+'\\'+a[0]+'.MFC\n')a1=open("D:\HTK\dataset_TIMIT\codetrain.txt",'a')a1.write(root_txt+' '+root_txt1+'\\'+a[0]+'.MFC\n')a1.close()

将codetrain.txt后缀改为scp,在data文件中新建scps文件夹,并将codetrain.scp放在scps文件夹中。
执行命令:

HCopy -T 1 -C configs/wav_config -S scps/codetrain.scp

之后,就会在train文件中wav文件所在位置产生相应的mfc特征文件。

七、定义模型,生成文件:hmms/hmm0/proto,hmms/hmm0/vFloors

先定义一个原始的HMM模型文件proto,放在data文件,内容如下:

~o 39 <MFCC_0_D_A>
~h “proto”

5
2
39
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
39
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
3
39
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
39
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
4
39
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
39
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
5
0.0 1.0 0.0 0.0 0.0
0.0 0.6 0.4 0.0 0.0
0.0 0.0 0.6 0.4 0.0
0.0 0.0 0.0 0.7 0.3
0.0 0.0 0.0 0.0 0.0

最后有一行换行
然后编写新的配置文件config,放在data/configs文件中,内容如下:

#SOURCEFORMAT=NIST
TARGETKIND=MFCC_0_D_A
TARGETRATE=100000.0
SAVECOMPRESSED=T
USEHAMMING=T
WINDOWSIZE=250000.0
SAVEWITHCRC=T
PREEMCOEF=0.97
NUMCHANS=26
CEPLIFTER=22
NUMCEPS=12
ENORMALISE=F

最后有一行换行
这里和wav_config文件唯一的区别是没有了SOURCEFORMAT=NIST这句。
再使用python编写mfc位置文件train.scp。

import osfor root,dirs,files in os.walk(r"D:\HTK\dataset_TIMIT\TIMIT\TRAIN"):for file in files:if file.endswith('.MFC'):root_txt=os.path.join(root,file)     #文本路径  #a=file.split('.',1)#print(root_txt+'\ '+os.path.join(root)+a[0]+'.mfc')a1=open("D:\HTK\dataset_TIMIT\scp_xunlian.txt",'a')a1.write(root_txt+'\n')a1.close()

将生成的scp_xunlian.txt文件名称修改为train.scp,放在data/scps文件夹中。
train.scp中的部分内容如下:

D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SA1.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SA2.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI1027.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI1657.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SI648.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SX127.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SX217.MFC
D:\HTK\dataset_TIMIT\TIMIT\TRAIN\DR1\FCJF0\SX307.MFC

执行以下命令:

HCompV -C configs/config -f 0.01 -m -S scps/train.scp -M hmms/hmm0 proto`

之后,在hmms/hmm0中生成新的proto文件和一个vFloors文件。
新建一个macros.txt文件,内容是把vFloors文件复制过来,在开头加两行内容:

~o
39 <MFCC_0_D_A>

最后有一行换行
再把文件后缀去掉,得到全局宏文件macros。
然后在hmm0文件夹中新建主宏文件hmmdefs,内容为把新生成的proto文件内容复制进来,复制data /monophone1为data /monophone0,并去掉“sp”,并把~h “proto”替换成data /monophone0文件中的所有音素,并在hmms新建hmm1,hmm2,hmm3。具体如下:

  • 新建一个hmmdefs.txt文件
  • 复制hmm0文件中的proto文件内容
  • 打开monophones0文件,由于里面共有47个音素,所以把刚刚拷贝的内容粘贴47次,然后把每一段中的~h “proto”里的proto替换成这47个音素
  • 将hmmdefs.txt文件的后缀删去

示例:

~h "ax"
<BEGINHMM>
<NUMSTATES> 5
<STATE> 2
<MEAN> 39-1.012254e+01 -7.264227e+00 -5.370607e+00 -9.712223e+00 -8.047406e+00 -5.681802e+00 -5.715535e+00 -8.866675e-01 -3.691200e+00 -1.679092e+00 -2.372118e+00 -1.992837e+00 5.435896e+01 3.500741e-03 3.751603e-03 -3.257724e-04 8.666575e-04 4.723777e-03 -5.870705e-04 2.242970e-04 -5.077751e-03 -4.136840e-03 -6.560303e-04 -4.315044e-03 -2.692410e-03 3.635510e-03 -9.592961e-05 -2.103102e-04 1.351059e-04 -1.660344e-05 -3.384981e-04 -2.177452e-04 -1.438189e-04 1.636954e-04 2.628736e-04 5.670929e-06 2.228742e-04 2.034476e-04 -1.622332e-05
<VARIANCE> 391.019788e+02 5.942492e+01 7.969104e+01 8.208924e+01 7.801925e+01 7.487221e+01 7.644019e+01 6.621938e+01 6.555125e+01 4.695238e+01 4.796210e+01 3.524434e+01 1.175212e+02 4.562052e+00 3.524029e+00 3.336635e+00 4.190800e+00 4.308127e+00 4.198910e+00 4.401061e+00 4.303517e+00 3.945029e+00 3.243077e+00 2.985245e+00 2.440660e+00 5.602145e+00 6.298037e-01 5.834211e-01 5.080931e-01 6.770242e-01 7.052048e-01 7.098501e-01 7.490554e-01 7.594700e-01 6.945509e-01 5.957313e-01 5.417513e-01 4.463944e-01 8.994046e-01
<GCONST> 1.383838e+02
<STATE> 3
<MEAN> 39-1.012254e+01 -7.264227e+00 -5.370607e+00 -9.712223e+00 -8.047406e+00 -5.681802e+00 -5.715535e+00 -8.866675e-01 -3.691200e+00 -1.679092e+00 -2.372118e+00 -1.992837e+00 5.435896e+01 3.500741e-03 3.751603e-03 -3.257724e-04 8.666575e-04 4.723777e-03 -5.870705e-04 2.242970e-04 -5.077751e-03 -4.136840e-03 -6.560303e-04 -4.315044e-03 -2.692410e-03 3.635510e-03 -9.592961e-05 -2.103102e-04 1.351059e-04 -1.660344e-05 -3.384981e-04 -2.177452e-04 -1.438189e-04 1.636954e-04 2.628736e-04 5.670929e-06 2.228742e-04 2.034476e-04 -1.622332e-05
<VARIANCE> 391.019788e+02 5.942492e+01 7.969104e+01 8.208924e+01 7.801925e+01 7.487221e+01 7.644019e+01 6.621938e+01 6.555125e+01 4.695238e+01 4.796210e+01 3.524434e+01 1.175212e+02 4.562052e+00 3.524029e+00 3.336635e+00 4.190800e+00 4.308127e+00 4.198910e+00 4.401061e+00 4.303517e+00 3.945029e+00 3.243077e+00 2.985245e+00 2.440660e+00 5.602145e+00 6.298037e-01 5.834211e-01 5.080931e-01 6.770242e-01 7.052048e-01 7.098501e-01 7.490554e-01 7.594700e-01 6.945509e-01 5.957313e-01 5.417513e-01 4.463944e-01 8.994046e-01
<GCONST> 1.383838e+02
<STATE> 4
<MEAN> 39-1.012254e+01 -7.264227e+00 -5.370607e+00 -9.712223e+00 -8.047406e+00 -5.681802e+00 -5.715535e+00 -8.866675e-01 -3.691200e+00 -1.679092e+00 -2.372118e+00 -1.992837e+00 5.435896e+01 3.500741e-03 3.751603e-03 -3.257724e-04 8.666575e-04 4.723777e-03 -5.870705e-04 2.242970e-04 -5.077751e-03 -4.136840e-03 -6.560303e-04 -4.315044e-03 -2.692410e-03 3.635510e-03 -9.592961e-05 -2.103102e-04 1.351059e-04 -1.660344e-05 -3.384981e-04 -2.177452e-04 -1.438189e-04 1.636954e-04 2.628736e-04 5.670929e-06 2.228742e-04 2.034476e-04 -1.622332e-05
<VARIANCE> 391.019788e+02 5.942492e+01 7.969104e+01 8.208924e+01 7.801925e+01 7.487221e+01 7.644019e+01 6.621938e+01 6.555125e+01 4.695238e+01 4.796210e+01 3.524434e+01 1.175212e+02 4.562052e+00 3.524029e+00 3.336635e+00 4.190800e+00 4.308127e+00 4.198910e+00 4.401061e+00 4.303517e+00 3.945029e+00 3.243077e+00 2.985245e+00 2.440660e+00 5.602145e+00 6.298037e-01 5.834211e-01 5.080931e-01 6.770242e-01 7.052048e-01 7.098501e-01 7.490554e-01 7.594700e-01 6.945509e-01 5.957313e-01 5.417513e-01 4.463944e-01 8.994046e-01
<GCONST> 1.383838e+02
<TRANSP> 50.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+000.000000e+00 6.000000e-01 4.000000e-01 0.000000e+00 0.000000e+000.000000e+00 0.000000e+00 6.000000e-01 4.000000e-01 0.000000e+000.000000e+00 0.000000e+00 0.000000e+00 7.000000e-01 3.000000e-010.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
<ENDHMM>

之后,复制monophones0,去掉里面的“sp”音素,得到新的音素文件monophones1。
在hmms文件夹中新建hmm1文件夹,之后执行以下命令:

HERest -A -D -T 1 -C configs/config -I labels/phones0.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm0/macros -H hmms/hmm0/hmmdefs -M hmms/hmm1 monophones1

修改-H和-M两项的参数,分别得到如下两个命令:

HERest -A -D -T 1 -C configs/config -I labels/phones0.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm1/macros -H hmms/hmm1/hmmdefs -M hmms/hmm2 monophones1
HERest -A -D -T 1 -C configs/config -I labels/phones0.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm2/macros -H hmms/hmm2/hmmdefs -M hmms/hmm3 monophones1

最终结果有两个文件hmmsdef和macros放在hmm3下。

八、绑定静音

首先复制hmm3中的两个文件到新建的hmm4中。打开hmm4中的hmmdefs文件,复制“sil”的那一部分内容,往下粘贴一个,再修改为sp,相当于借用“sil”的模型增添了一个“sp”模型。
然后在data/scripts文件夹中新建sil.txt文件,内容如下:

AT 2 4 0.2 {sil.transP}
AT 4 2 0.2 {sil.transP}
AT 1 3 0.3 {sp.transP}
TI silst {sil.state[3],sp.state[2]}

最后有一行换行,之后将该文件的后缀名改为hed。
执行以下命令:

HHEd –A –D –T  1 –H hmms/hmm4/macros –H hmms/hmm4/hmmdefs –M hmms/hmm5 scripts/sil.hed monophones0

再使用HERest命令进行两次重估。
在hmms文件夹中新建hmm6和hmm7,修改-H和-M两项的参数,分别得到如下两个命令:

HERest -A -D -T 1 -C configs/config -I labels/phones0.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm5/macros -H hmms/hmm5/hmmdefs -M hmms/hmm6 monophones0
HERest -A -D -T 1 -C configs/config -I labels/phones0.mlf -t 250.0 150.0 1000.0 -S scps/train.scp -H hmms/hmm6/macros -H hmms/hmm6/hmmdefs -M hmms/hmm7 monophones0

最终结果有两个文件hmmsdef和macros放在hmm7下。

九、重新校正训练数据

首先,制作新发音字典dict2。复制data/dict/dict1内所有内容,粘贴在dict/dict2.txt文件中,并按照字母顺序添加“SILEN sil”一项,之后将后缀名删去。如图:

处理labels/trainwords.mlf文件。需要把里面的所有路径改为“*/XXXX”格式。将原trainwords.mlf备份,然后复制一份得到trainwords.txt。python代码如下:

a1=open("D:\HTK\data/labels/trainwords.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('*\S'+b[1])a2=open("D:\HTK\data/labels/trainwords_new.txt",'a')a2.write(c)a2.close()

得到trainwords_new.txt文件,然后修改文件名为trainwords.mlf。trainwords.mlf部分内容为:

接着,执行如下命令:

HVite -A -D -l * -o SWT -b SILEN -C configs/config -H hmms/hmm7/macros -H hmms/hmm7/hmmdefs -i labels/aligned.mlf -m -t 250.0 150.0 1000.0 -y lab -a -I labels/trainwords.mlf -S scps/train.scp dict/dict2 monophones0

其中dict2是SILEN sil加入发音字典dict1后的新发音字典,aligned.mlf是将要生成的新的音素级标音文件。
然后使用HERest重估两次,放在hmm9中,其中,用aligned.mlf代替phones0.mlf,命令如下:

HERest –A –D –T 1 –C configs/config –I labels/aligned.mlf –t 250.0 150.0 1000.0 –S scps/train.scp –H hmms/hmm7/macros –H hmms/hmm7/hmmdefs –M hmms/hmm8 monophones0
HERest –A –D –T 1 –C configs/config –I labels/aligned.mlf –t 250.0 150.0 1000.0 –S scps/train.scp –H hmms/hmm8/macros –H hmms/hmm8/hmmdefs –M hmms/hmm9 monophones0

注意:生成的aligned.mlf文件中需要把路径的”’*’”替换成” *”(如果有这个单引号的话),还有就是sp sp不能连一块出现。
到这里就可以进行识别率的测试了。首先需要建立gram任务语法,并生成wdnet任务网络语法。其次在test目录下生成.mfc文件方法同train下生成.mfc,并制作mfcc路径文件test.scp,使用命令进行测试。

-------------------------------------------------------------------------------------------------

一、建立gram,生成词网络文件wdnet

可以利用前面生成的wlist文件进行建立。
将wlist复制一份,并将后缀改为txt,然后使用如下代码进行处理:

def delblankline(infile, outfile):infopen = open(infile, 'r',encoding="utf-8")outfopen = open(outfile, 'w',encoding="utf-8")db = infopen.read()outfopen.write(db.replace('\n','|'))infopen.close()outfopen.close()delblankline("wlist.txt", "gram.txt")

生成gram.txt文件,打开后在开头加上 "$ W D = " , 在 结 尾 加 上 ; ( S E N D − S T A R T < WD=" , 在结尾加上;(SEND-START< WD=",在结尾加上;(SEND−START<$WD >SEND-END)[不要忘记这个分号],最终得到gram文件如下:

W D = ′ E M ∣ – ∣ A ∣ A B B R E V I A T E ∣ A B I D E S ∣ A B I L I T Y ∣ A B L E ∣ A B L Y ∣ A B O L I S H ∣ A B O R I G I N E ∣ A B O R I G I N E S ∣ A B O U T ∣ A B O V E ∣ A B R U P T L Y ∣ A B S E N T ∣ A B S O L U T I O N ∣ A B S O R P T I O N ∣ A B S U R D ∣ A B S U R D L Y ∣ A C A D E M I C ∣ A C C E L E R O M E T E R ∣ A C C E L E R O M E T E R S ∣ A C C E P T ∣ … ∣ Z O N E S ∣ Z O O ∣ Z O O L O G I S T ∣ Z O O S ; ( S E N D − S T A R T < WD='EM|–|A|ABBREVIATE|ABIDES|ABILITY|ABLE|ABLY|ABOLISH|AB ORIGINE|ABORIGINES|ABOUT|ABOVE|ABRUPTLY|ABSENT|ABSOLUTI ON|ABSORPTION|ABSURD|ABSURDLY|ACADEMIC|ACCELEROMETE R|ACCELEROMETERS|ACCEPT|…|ZONES|ZOO|ZOOLOGIST|ZOOS; (SEND-START< WD=′EM∣–∣A∣ABBREVIATE∣ABIDES∣ABILITY∣ABLE∣ABLY∣ABOLISH∣ABORIGINE∣ABORIGINES∣ABOUT∣ABOVE∣ABRUPTLY∣ABSENT∣ABSOLUTION∣ABSORPTION∣ABSURD∣ABSURDLY∣ACADEMIC∣ACCELEROMETER∣ACCELEROMETERS∣ACCEPT∣…∣ZONES∣ZOO∣ZOOLOGIST∣ZOOS;(SEND−START<$WD>SEND-END)

最后有一行换行
把gram.txt复制到data文件中,并去掉后缀,执行以下命令:

HParse gram wdnet

生成词网络文件wdnet。

二、生成test集的mfc特征文件,并生成mfc路径文件test.scp

首先使用python编写生成.mfc文件的路径文件codetest.scp,代码如下:

import osfor root,dirs,files in os.walk(r"D:\HTK\dataset_TIMIT\TIMIT\TEST"):for file in files:if file.endswith('.WAV'):root_txt=os.path.join(root,file)     #文本路径root_txt1=os.path.join(root)  a=file.split('.',1)#print(root_txt+' '+root_txt1+'\\'+a[0]+'.MFC\n')a1=open("D:\HTK\dataset_TIMIT\mask_test.txt",'a')a1.write(root_txt+' '+root_txt1+'\\'+a[0]+'.MFC\n')a1.close()

得到mask_test.txt,修改文件名为codetest.scp,并放置在data/scps文件中。
执行如下命令:

HCopy -T 1 -C configs/wav_config -S scps/codetest.scp

之后,就会在test文件中wav文件所在位置产生相应的mfc特征文件。
接着再使用python编写mfc位置文件test.scp,代码如下:

import osfor root,dirs,files in os.walk(r"D:\HTK\dataset_TIMIT\TIMIT\TEST"):for file in files:if file.endswith('.MFC'):root_txt=os.path.join(root,file)     #文本路径  #a=file.split('.',1)#print(root_txt+'\ '+os.path.join(root)+a[0]+'.mfc')a1=open("D:\HTK\dataset_TIMIT\scp_test.txt",'a')a1.write(root_txt+'\n')a1.close()

将生成的scp_test.txt文件名称修改为test.scp,放在data/scps文件夹中。
test.scp的部分内容如下:

D:\HTK\dataset_TIMIT\TIMIT\TEST\DR1\FAKS0\SA1.MFC
D:\HTK\dataset_TIMIT\TIMIT\TEST\DR1\FAKS0\SA2.MFC
D:\HTK\dataset_TIMIT\TIMIT\TEST\DR1\FAKS0\SI1573.MFC
D:\HTK\dataset_TIMIT\TIMIT\TEST\DR1\FAKS0\SI2203.MFC
D:\HTK\dataset_TIMIT\TIMIT\TEST\DR1\FAKS0\SI943.MFC

接着制作新发音字典dict3。需要对dict2进行复制,增加如下两行内容:

SEND-END [] sil
SEND-START [] sil

如图:

三、制作训练数据的抄本文件testprompts。

使用代码如下:

import os
import re# make English text clean
def clean_en_text(text):# keep English space '-' ''' and spacecomp = re.compile('[^A-Z^a-z^\-^\' ]')return comp.sub('', text)for root,dirs,files in os.walk(r"D:\HTK\dataset_TIMIT\TIMIT\TEST"):for file in files:if file.endswith('.TXT'):root_txt=os.path.join(root,file)     #文本路径 a=root_txt.split('.',1)abs_path = os.path.join(root,file)with open(abs_path) as f:txt=clean_en_text(f.read())    #文本内容#print(root_txt+txt.upper())a1=open("D:\HTK\dataset_TIMIT\mask_testprompts.txt",'a')a1.write(a[0]+txt.upper()+'\n')a1.close()

将mask_testprompts.txt复制到data文件夹中,并改名为testprompts。
接着在data文件夹中新建test文件夹,执行以下命令:

perl scripts/prompts2mlf test/testwords.mlf testprompts

在test文件夹中生成testwords.mlf文件。这里同样要对testwords.mlf进行处理,需要把里面的所有路径改为“*/XXXX”格式,将原testwords.mlf备份,然后复制一份得到testwords.txt。python代码如下:

a1=open("D:\HTK\data/test/testwords.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('*\S'+b[1])a2=open("D:\HTK\data/test/testwords_new.txt",'a')a2.write(c)a2.close()

得到testwords_new.txt文件,之后修改文件名为testwords.mlf。
得到的testwords.mlf的部分内容如下:

#!MLF!#
“/SA1.lab"
SHE
HAD
YOUR
DARK
SUIT
IN
GREASY
WASH
WATER
ALL
YEAR
.
"/SA2.lab”
DON’T
ASK
ME
TO
CARRY
AN
OILY
RAG
LIKE
THAT
.

然后就可以使用HVite命令进行测试了,这里把wdnet文件放在了dict文件夹中。

HVite –H hmms/hmm9/macros –H hmms/hmm9/hmmdefs –S scps/test.scp  -l * -i results/recout_hmm9.mlf –w dict/wdnet –p 0.0 –s 5.0 dict/dict3 monophones0

生成结果所需要的时间很长,需要耐心等待。
对比一下原句子,左图为识别结果,右图为原句内容:

再执行以下命令:

HResults -I test/testwords.mlf monophones0 results/recout_hmm9.mlf

得到识别率结果。
可以看到识别率并没有很高,下节采用三音素模型改进。

使用HTK搭建英文大词汇量连续语音识别系统(二)相关推荐

  1. 使用HTK搭建英文大词汇量连续语音识别系统(一)

    在整个语音识别系统的搭建中,参考了博客https://blog.csdn.net/qq_43150721/article/details/98646889,自己动手搭建时,遇到了博客中没提到的问题,故 ...

  2. 使用HTK搭建英文大词汇量连续语音识别系统(三)

    接下来采用三音素模型进行改进. 一.绑定三音素 首先,制作一个脚本文件mktri.led,放在data/scripts文件夹中,内容为: WB sp WB sil TC 最后有一行换行 执行命令: H ...

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

    使用HTK搭建大词汇量语音识别系统,这里使用的是timit语音库. 本人python小白,只学了两三天,代码写的有点菜..希望多多包涵 一.建立抄本文件trainprompts 所使用的python版 ...

  4. 一种连续语音识别系统的制作方法

    本发明涉及一种连续语音识别系统,属于语音识别设备领域. 背景技术: 近五十年的时间里,自动语音识别一直是一个活跃的研究领域,它一直被认为是促进人类与机器,人类与人类通信的一个重要的桥梁.近些年,语音识 ...

  5. 高并发的大数据量查询导致系统频繁死机

    我们的大数据量查询是数据库分页的, 但是导出和打印功能是基于全部数据的. 系统投入使用后,对于导出和打印功能的使用远远要高于我们的预期. 而我们的系统的硬件设备是有限的 不能再升级了. 抓取内存大对象 ...

  6. oracle 删除主键_大数据量删除的思考 4

    译者  汤健 · 沃趣科技数据库技术专家 出品  沃趣科技 在本系列的前一期文章中,我制作了一些图,突出显示了按表扫描执行大量删除操作和按索引范围扫描执行大量删除之间的主要区别.根据所涉及的数据模式, ...

  7. 制作在线单词测试的软件,Test Your Vocabulary:号称是最准的英语词汇量测试网站...

    网站介绍 今天给大家介绍一个号称是最准的英语词汇量测试网站Test Your Vocabulary . Test your vocabulary 是一个美裔巴西联盟组织开发的在线英语词汇量自我测评系统 ...

  8. 小学英语词汇量测试软件好,Test Your Vocabulary:号称是最准的英语词汇量测试网站...

    网站介绍 今天给大家介绍一个号称是最准的英语词汇量测试网站Test Your Vocabulary . Test your vocabulary 是一个美裔巴西联盟组织开发的在线英语词汇量自我测评系统 ...

  9. BBC教学人员谈如何增加英语词汇量

    随着一天天.一年年地过去,你可能发觉你的词汇量越来越有限,以至于不足于表达你想要表达的想法. 这种情况一般发生在人们的英语达到中等水平.而英语词汇量却停滞不前的时候.那是因为他们基本已经拥有了日常交流 ...

最新文章

  1. 【转】 一些NET的实用类,不错
  2. Windows10 对系统盘C 有效清理
  3. c++ DirectShow播放任意格式的视频
  4. 如何配置能让fiddler抓去https的请求?
  5. cr2032和br2032区别_钮扣电池CR2016和CR2032有什么区别?
  6. 【Elasticsearch】关于 Analyzers 的一切,第一部分
  7. Java数据结构的知识体系
  8. 2020年研究生入学考试991考试大纲
  9. Python 爬虫 —— 网页内容解析(lxml)
  10. java 学习笔记-基础算法(七)
  11. HDU 5046 Airport ( Dancing Links 反复覆盖 )
  12. 带外壳版本4G LTE模块,包括华为ME909系列、移远EC20系列、移远EC200T系列
  13. JavaScript之Ajax Util
  14. mac怎么用ntfs硬盘 NTFS移动硬盘怎么在mac上使用
  15. 2013年春节 放假通知 悲催的很,只有七天。
  16. 中国十大最具影响力黑客
  17. java 订单号生成器
  18. java excel 边框颜色_poi生成excel整理(设置边框/字体/颜色/加粗/居中/)[转]
  19. 网络通信技术--设置IP地址
  20. 什么是编码?什么是解码?为什么要编码.解码?

热门文章

  1. SpringBoot创建项目生成的maven-wrapper(mvnw)
  2. 死表燃气费引争议 业主称没用气凭啥要收费
  3. 【编程马拉松】【022-网页浏览历史】
  4. C#根据枚举值获取枚举
  5. educoder平台哪里有答案_新功能 | OPPO开放平台工单系统上线,效率升级只为更好服务你!...
  6. Kubernetes-docker集群
  7. CNNIC第47次调查报告:调查支持单位
  8. 田间作物高通量表型信息获取与分析技术研究进展(论文笔记)
  9. 计算机课玩手机检讨500,教室上课玩手机检讨书500字
  10. 树莓派4b深度学习心得