Hi,
I am currently using sphinx3.7. Until now it worked perfectly in training and
decoding. However, when I use a model topology of 5 sates with skips, I get
the following error messages.
INFO: srch_time_switch_tree.c(344): Lextrees (2) for lm 0, its name is
default, it has 144252 nodes(ug)
INFO: srch_time_switch_tree.c(351): Time for building trees, 1.0841 CPU 1.0873
Clk
INFO: srch_time_switch_tree.c(373): Lextrees(0), 1 nodes(filler)
INFO: srch_time_switch_tree.c(373): Lextrees(1), 1 nodes(filler)
INFO: srch_time_switch_tree.c(373): Lextrees(2), 1 nodes(filler)
INFO: vithist.c(169): Initializing Viterbi-history module
INFO: Initialization of srch_t, report:
INFO: Operation Mode = 4, Operation Name = fwdtree
INFO:
0 (1476342644); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 2, best HMM score >
0 (536798668); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 3, best HMM score >
0 (536773697); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 4, best HMM score >
0 (536749713); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 5, best HMM score >
0 (536736858); int32 wraparound?
ERROR: "lextree.c", line 1624: out.history==-1, error
ERROR: "srch_time_switch_tree.c", line 1039: Propagation Failed for
lextree_hmm_propagate_leave at tree 0
..............................................................................
...............................................
INFO: fast_algo_struct.c(397): HMMHist(d501021): 1253(100)
INFO: lm.c(950): 0 tg(), 0 tgcache, 0 bo; 0 fills, 0 in mem (0.0%)
INFO: lm.c(954): 0 bg(), 0 bo; 0 fills, 0 in mem (0.0%)
ERROR: "srch.c", line 494: s->funcs->utt_end failed
INFO: corpus.c(661): d501021: 5.3 sec CPU, 5.3 sec Clk; TOT: 5.3 sec CPU, 5.3
sec Clk
I also tried to run the decoder with -mode fwdflat option so as to get the
function of sphinx3_decode_anytopo, but without success. I have got the
following error.
It feels like you HMM topology is corrupted and doesn't have a way from
initial state to exit. Most likely you defined skips in a wrong way somehow.
Share you transition_matrices to check that in each matrix there is a way from
start to exit. How did you train with skips?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The matrix wasn't trained properly because you didn't have sufficient data to
train matrix with skips. Without skips there are less parameters to train. To
solve this problem you can remove phone number 162 from training (see mdef
files for details which phone is it) or somehow increase the size of training
database.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
As per your suggestions, I found the corrupted phone from the mdef and removed
it from the phone list and dictionary. Then, I trained another acoustic model
(again with a topology of 5 states with skips), but I still get the same error
message as before.
0 (1476347165); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 2, best HMM score >
0 (536803724); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 3, best HMM score >
0 (536765095); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 4, best HMM score >
0 (536743897); int32 wraparound?
ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 5, best HMM score >
0 (536732062); int32 wraparound?
ERROR: "lextree.c", line 1624: out.history==-1, error
ERROR: "srch_time_switch_tree.c", line 1039: Propagation Failed for
lextree_hmm_propagate_leave at tree 0
..............................................................................
...............................................
INFO: fast_algo_struct.c(397): HMMHist(d501021): 1253(100)
INFO: lm.c(950): 0 tg(), 0 tgcache, 0 bo; 0 fills, 0 in mem (0.0%)
INFO: lm.c(954): 0 bg(), 0 bo; 0 fills, 0 in mem (0.0%)
ERROR: "srch.c", line 494: s->funcs->utt_end failed
INFO: corpus.c(661): d501021: 4.6 sec CPU, 4.6 sec Clk; TOT: 4.6 sec CPU, 4.6
sec Clk
I checked the transition_matrices (with printp) and there is no corrupted
phone this time. Just in case, I uploaded the new transition_matrices on the
following website. You can find the transition_matrices at the end of the
page.
It's usually very easy to debug. Most likely some other transition matrix is
wrong and floored due to small values. I don't see anything offhand but it
would be easier to find the problem if you provide a full model not just the
transition_matrices file.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The problem was in phone number 169, the transition matrix had zero in
position 4,4
You could find that out with setting breakpoint in hmm.c on line 441 in the
end of
hmm_vit_eval_5st_lr and printing tmatid. For more information on debugging
check the gdb
documentation:
I recommend you to remove that phone or increase training data but I also
committed
the fix to sphinx3 trunk right now. If you will rebuild the snapshot there
will be no
wraparound.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I am currently using sphinx3.7. Until now it worked perfectly in training and
decoding. However, when I use a model topology of 5 sates with skips, I get
the following error messages.
INFO: srch_time_switch_tree.c(344): Lextrees (2) for lm 0, its name is
default, it has 144252 nodes(ug)
INFO: srch_time_switch_tree.c(351): Time for building trees, 1.0841 CPU 1.0873
Clk
INFO: srch_time_switch_tree.c(373): Lextrees(0), 1 nodes(filler)
INFO: srch_time_switch_tree.c(373): Lextrees(1), 1 nodes(filler)
INFO: srch_time_switch_tree.c(373): Lextrees(2), 1 nodes(filler)
INFO: vithist.c(169): Initializing Viterbi-history module
INFO: Initialization of srch_t, report:
INFO: Operation Mode = 4, Operation Name = fwdtree
INFO:
INFO: utt.c(196): Processing: d501021
INFO: feat.c(1148): At directory ./feat
INFO: feat.c(378): Reading mfc file:
'./feat/AmhSyllBasedASRtest_adapwav/d501021.mfc'
INFO: cmn.c(175): CMN: 11.39 0.23 -0.63 0.08 -0.28 -0.25 -0.08 -0.16 -0.07
-0.05 -0.02 -0.15 -0.04
.ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 1, best HMM score
I also tried to run the decoder with -mode fwdflat option so as to get the
function of sphinx3_decode_anytopo, but without success. I have got the
following error.
INFO: utt.c(196): Processing: d501021
INFO: feat.c(1148): At directory ./feat
INFO: feat.c(378): Reading mfc file:
'./feat/AmhSyllBasedASRtest_adapwav/d501021.mfc'
INFO: cmn.c(175): CMN: 11.39 0.23 -0.63 0.08 -0.28 -0.25 -0.08 -0.16 -0.07
-0.05 -0.02 -0.15 -0.04
............INFO: vithist.c(1463):
Lattice size(32768) exceeded; increasing to 65536
..............................................................................
...............INFO: vithist.c(1463):
Lattice size(65536) exceeded; increasing to 98304
.....................
INFO: lm.c(950): 0 tg(), 0 tgcache, 0 bo; 9416 fills, 6455 in mem (0.3%)
INFO: lm.c(954): 0 bg(), 0 bo; 7325 fills, 450854 in mem (40.4%)
INFO: srch_flat_fwd.c(92):
lt-sphinx3_decode: vithist.c:1576: lat_seg_lscr: Assertion `bw2 ==
dict->startwid' failed.
Abandon
By the way there is no problem when the hmm topology is without skips.
I have no idea how I can solve the problem. Any idea?
Thanks in advance.
Hello
It feels like you HMM topology is corrupted and doesn't have a way from
initial state to exit. Most likely you defined skips in a wrong way somehow.
Share you transition_matrices to check that in each matrix there is a way from
start to exit. How did you train with skips?
Thanks a lot for your instant reply.
I just set $CFG_SKIPSTATE = 'yes' in the sphinx_train.cfg file. I uploaded the
transition_matrices on the following web page. You can get the file at the end
of the page as an attachment.
https://nats-www.informatik.uni-hamburg.de/view/User/MarthaTachbelie
Hope to get a solution.
If you run
you'll see the warning
It means that the matrix 162 is corrupted. It is indeed so:
The matrix wasn't trained properly because you didn't have sufficient data to
train matrix with skips. Without skips there are less parameters to train. To
solve this problem you can remove phone number 162 from training (see mdef
files for details which phone is it) or somehow increase the size of training
database.
Thanks you very much for identifying the problem and for your suggested
solutions.
Have a good day.
Hi,
As per your suggestions, I found the corrupted phone from the mdef and removed
it from the phone list and dictionary. Then, I trained another acoustic model
(again with a topology of 5 states with skips), but I still get the same error
message as before.
INFO: utt.c(196): Processing: d501021
INFO: feat.c(1148): At directory ../AmhSyllBasedASR/feat
INFO: feat.c(378): Reading mfc file:
'../AmhSyllBasedASR/feat/AmhSyllBasedASRtest_adapwav/d501021.mfc'
INFO: cmn.c(175): CMN: 11.39 0.23 -0.63 0.08 -0.28 -0.25 -0.08 -0.16 -0.07
-0.05 -0.02 -0.15 -0.04
.ERROR: "srch_time_switch_tree.c", line 849: ERROR Fr 1, best HMM score
I checked the transition_matrices (with printp) and there is no corrupted
phone this time. Just in case, I uploaded the new transition_matrices on the
following website. You can find the transition_matrices at the end of the
page.
https://nats-www.informatik.uni-hamburg.de/view/User/MarthaTachbelie
Where can be the problem, any other idea?
Thanks a lot in advance.
Hello
It's usually very easy to debug. Most likely some other transition matrix is
wrong and floored due to small values. I don't see anything offhand but it
would be easier to find the problem if you provide a full model not just the
transition_matrices file.
Hi,
Thanks a lot for your reply. I uploaded the full model (in a compressed
directory ) on the same web site https://sourceforge.net/projects/cmusphinx/f
orums/forum/5471/topic/4711034
I can also debug it if you tell me how to do that. Thanks a lot once again and
waiting for your reply.
Sorry, I did not gave you the correct link in the above post. Here is the
correct link to the website to which I uploaded the model.
http://nats-www.informatik.uni-hamburg.de/User/MarthaTachbelie
The problem was in phone number 169, the transition matrix had zero in
position 4,4
You could find that out with setting breakpoint in hmm.c on line 441 in the
end of
hmm_vit_eval_5st_lr and printing tmatid. For more information on debugging
check the gdb
documentation:
http://www.gnu.org/s/gdb/documentation/
I recommend you to remove that phone or increase training data but I also
committed
the fix to sphinx3 trunk right now. If you will rebuild the snapshot there
will be no
wraparound.
Thank you very much for all.