From fa81b70b27f1909b807c56decdc8af0485169ae8 Mon Sep 17 00:00:00 2001 From: yemaozi88 <428968@gmail.com> Date: Thu, 7 Mar 2019 22:16:50 +0100 Subject: [PATCH] monophone training is completed. --- .vs/acoustic_model/v15/.suo | Bin 100864 -> 103424 bytes acoustic_model/fame_hmm.py | 115 +++++++++++++++++------------------- 2 files changed, 55 insertions(+), 60 deletions(-) diff --git a/.vs/acoustic_model/v15/.suo b/.vs/acoustic_model/v15/.suo index 96899cb98ddd6e7708d34b29a0a50a9133e53c15..b545ca0d012cfbacdf8292681333d1af94215c62 100644 GIT binary patch delta 3857 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 delta 3405 zcmds(dr(x@9mntQ?6UF_7g!Y)aX}C?usj3=L|9N!TTB;3nl?xT13t2WEl8u)hQ&w4 zXza2_a`d7d7G#^;aJT2mRVv~wtd$P& z`)n)K@Qu1nV^6@QCqY^(N+2hFWUCn^4B(4|n*3!WbUFy|*B_&Q2Fg)j5{L#{481Qt*Q#)DTtICu`c3dVp50K>NWQc(y6g1#78DI%00kZF?bZr4Di@;*A6cm71@H~)4-+@K| z8z=+iU>T?Yl|b6O;MWwt%C=mTSAc5p5{T(2doK6eD0~Y@gGRp!zsffGwD{{AMzsHk z-wc?d??j86*@Ikp$Ma=??V|%c{s=6F0z5dH&o}mIpk;t%OU;N;W&OJ&>Z1cJ`-h&N zz;0xK>rj^gmi;@RGQhID8!7`V%W@;h_|BKBAR9&pShj8V8;=ffJlbCdGQiSKKBEI% zi#{3PhK{nxlpqui0~ydk^TFSd0hL=>J`o*dQ&z}5Eh{ViS`Rh&%l{QQw0#fA{ri2e z2FR_s8oCOs1t1F9+vny`g5E zJGkO&8V8%H%ebD=L9HdCl?=_8`FgnaC^Cs@aZyinnmMMI+!5>j{gZx*{u?qvc%Hh4 zpRFjjW8Jv9Aty+>v=0qA9c9yKOGnv6`Z?d<&`eJ{YVN5H=AJM>pK1>$B$8&f^^!Ux zuq$&7Q72!UCDb&%J9>b9LE58e1F6{tbum*5n0sQJ7MI^cY9$k_gfc|TT8a=cq5xd{UPJ+C-Zq4(`(jpuTI34QUXt~d}v&4Ip{g?czfvI zKmJou==-lZ_(l78ZcOdt&M-{!!V`G44PI3-w`+h-Y7bpwNY0t9Wv}cG5yd5B(o9?K zka|i#=*qb_DMqtdPm^exPkCD2`VYyyXGLw+$6NZ3_5G#q#QD13rHOwl8o63kOi@x0 zv&cY2X+y_(Xg4$xyH2L8YtTPKZzC^#4!h;ZX%5tV(9cjmHx|c-1eMS{?caO!q;6p9 zWY$q()Qt8V%3k;T_ujU<;?8s(zhH})x#%|D91c_&hK|+a6onzlV}Gj1(=$*{oWx&$ zb&L8sQ%?t~G3-PEQS>Yvy!fPDh#7s!|2bCQwdO1MC8Cf;~X)`GY*y zJlB|m+7@sO$kpQ8%=MX{~ zZ$xX+H*S%d%toB5Pg&O+8;I8Mjk|UTLk&e~Q3n?hcMO<#<>ADTtmLfOn@ei!&2`nh ztSN@~wFmN-4xOjk;hJMWFB~QcQD0rw!TjmCaGydCVz~btUV1d%z%%*e}Keb@h6QPV$R43)Rn= z`Yu!NF!d~R_h*JSB5~K@>rk&WD!gb$l&~(O&Dz!eWEv5)l{i=v(5|XTIHhM z9%~}?>%xuLTZ2!McPh%0#78E&s{T_ijzwY2-kk>V*YUI?e5#Dy$j5UxnP$?nBHKp1 zt19jpVWnb0E-Dmrh^Bks%OMg+qbW!nF;K84GLXI`^#(i3$g3M(Kpy^8qNgX64CG0P zq(2(4nkS;MT-JMfuJ2F#KWiEyGyAg_QVSSRb^mj2ap}dRlz(yq>N5O$Z z(SZBqQ)hXryG>XNDT$wX5M}K7byD#=C08%etx4UN(!VGbws{nlRG*uXHmA0>?#IO` z%PNp?kaA{c*3HQtZQZ$p94Cs2edGSq0t%M@OT;Z9i^pQ4D?0JnLMj)%%g7+^tRj=g zzJT_UC@&?u$6iT$b)vtX3OofRbV(>> adding sp state to the last model in the previous step...') fh.make_new_directory(model1sp_dir, existing_dir='leave') + niter = chtk.get_niter_max(model1_dir) modeln_dir_pre = os.path.join(model1_dir, 'iter'+str(niter)) - - ## update hmmdefs and macros. - print('>>> adding sp to the model...') - modeln_dir = os.path.join(model1sp_dir, 'iter0') + modeln_dir = os.path.join(model1sp_dir, 'iter0') chtk.add_sp(modeln_dir_pre, modeln_dir) + print("elapsed time: {}".format(time.time() - timer_start)) - -## ======================= train model with short pause ======================= -if train_model_with_sp: - print('==== train model with sp ====') - for niter in range(20, 50): - timer_start = time.time() - hmm_n = 'iter' + str(niter) - hmm_n_pre = 'iter' + str(niter-1) - modeln_dir = os.path.join(model1_dir, hmm_n) - modeln_dir_pre = os.path.join(model1_dir, hmm_n_pre) - - # re-estimation - fh.make_new_directory(modeln_dir) - pyhtk.re_estimation( - config_train, - os.path.join(modeln_dir_pre, hmmdefs_name), - modeln_dir, - hcompv_scp_train, phonelist_txt, - mlf_file=mlf_file_train, - macros=os.path.join(modeln_dir_pre, 'macros')) - print("elapsed time: {}".format(time.time() - timer_start)) + niter = chtk.re_estimation_until_saturated( + model1sp_dir, modeln_dir, improvement_threshold, hcompv_scp_train, + os.path.join(htk_stimmen_dir, 'mfc'), + 'mfc', + os.path.join(htk_stimmen_dir, 'word_lattice.ltc'), + mlf_file=mlf_file_train, + lexicon_file=os.path.join(htk_stimmen_dir, 'lexicon_recognition.dic'), + model_type='monophone_with_sp' + ) -## ======================= train model with short pause ======================= -if train_model_with_sp_align_mlf: - print('==== train model with sp with align.mlf ====') - for niter in range(50, 60): - timer_start = time.time() - hmm_n = 'iter' + str(niter) - hmm_n_pre = 'iter' + str(niter-1) - modeln_dir = os.path.join(model1_dir, hmm_n) - modeln_dir_pre = os.path.join(model1_dir, hmm_n_pre) - - # re-estimation - fh.make_new_directory(modeln_dir) - pyhtk.re_estimation( - config_train, - os.path.join(modeln_dir_pre, hmmdefs_name), - modeln_dir, - hcompv_scp_train, phonelist_txt, - mlf_file=mlf_file_train_aligned, - macros=os.path.join(modeln_dir_pre, 'macros')) - print("elapsed time: {}".format(time.time() - timer_start)) +## ======================= train model with re-aligned mlf ======================= +if train_model_with_re_aligned_mlf: + print('==== traina model with re-aligned mlf ====') + + print('>>> re-aligning the training data... ') + timer_start = time.time() + niter = chtk.get_niter_max(model1sp_dir) + modeln_dir = os.path.join(model1sp_dir, 'iter'+str(niter)) + chtk.make_aligned_label( + os.path.join(modeln_dir, 'macros'), + os.path.join(modeln_dir, 'hmmdefs'), + mlf_file_train_aligned, + os.path.join(label_dir, 'train_word.mlf'), + hcompv_scp_train) + print("elapsed time: {}".format(time.time() - timer_start)) + + print('>>> re-estimation... ') + timer_start = time.time() + fh.make_new_directory(model1sp2_dir, existing_dir='leave') + niter = chtk.get_niter_max(model1sp_dir) + niter = chtk.re_estimation_until_saturated( + model1sp2_dir, + os.path.join(model1sp_dir, 'iter'+str(niter)), + improvement_threshold, + hcompv_scp_train, + os.path.join(htk_stimmen_dir, 'mfc'), + 'mfc', + os.path.join(htk_stimmen_dir, 'word_lattice.ltc'), + mlf_file=mlf_file_train, + lexicon_file=os.path.join(htk_stimmen_dir, 'lexicon_recognition.dic'), + model_type='monophone_with_sp' + ) + print("elapsed time: {}".format(time.time() - timer_start)) -# train triphone. +## ======================= train triphone ======================= if train_triphone: triphone_mlf = os.path.join(default.htk_dir, 'label', 'train_triphone.mlf') macros = os.path.join(model_dir, 'hmm1_tri', 'iter0', 'macros')