Now I have two sil phones which are aimed to deal with different silence conditions in speech, and for some reason I need to assign to them different kinds of HMM topologies, i.e. different #State and transition probabilities. I tried to modify utils/gen_topo.pl and successfully created a new topo file I desire, but while running prepare_lang.sh it shows me an error message below:
ERROR: data/lang/topo's silence section doesn't correspond to silence.txt
Which seemed remind me that different topo types of silence phones is not allowed, am I right?
If yes, though I know this may not easy to achieve, but is there other plan to implement this?
If any possible alternative is proposed, I would like to try it no matter what.
Thanks for advice.
ERROR (gmm-init-mono:GetStubMap():build-tree-utils.cc:906) Assertion failed: len > 0
I'm not sure whether this involves my setting of topo:
<Topology>
<TopologyEntry>
<ForPhones>
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
</ForPhones>
<State> 0 <PdfClass> 0 <Transition> 0 0.75 <Transition> 1 0.25 </State>
<State> 1 <PdfClass> 1 <Transition> 1 0.75 <Transition> 2 0.25 </State>
<State> 2 <PdfClass> 2 <Transition> 2 0.75 <Transition> 3 0.25 </State>
<State> 3 </State>
</TopologyEntry>
<TopologyEntry>
<ForPhones>
1
</ForPhones>
<State> 0 <PdfClass> 0 <Transition> 0 0.25 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 </State>
<State> 1 <PdfClass> 1 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 <Transition> 4 0.25 </State>
<State> 2 <PdfClass> 2 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 <Transition> 4 0.25 </State>
<State> 3 <PdfClass> 3 <Transition> 1 0.25 <Transition> 2 0.25 <Transition> 3 0.25 <Transition> 4 0.25 </State>
<State> 4 <PdfClass> 4 <Transition> 4 0.75 <Transition> 5 0.25 </State>
<State> 5 </State>
</TopologyEntry>
</Topology>
<TopologyEntry>
<ForPhones>
2
</ForPhones>
<State> 0 <PdfClass> 0 </State>
<State> 0 <PdfClass> 0 <Transition> 0 0.75 <Transition> 1 0.25 </State>
<State> 1 </State>
</TopologyEntry>
</Topology>
The phone unit with ID 2 is another sil phone I talked about (just call it "sil_2") which differs from original sil phone (phone ID=1, called "sil") in HMM topology. Yes it has only one state, which may not be a good idea but just want to try this for some reason.
Also, I had my prepared file involving sil, including lexicon.txt, silence_phones.txt and optional_silence.txt, as follows:
lexicon.txt:
zhi zh FNULL1
chi ch FNULL1
...
...
ei eh yi3
me m e
sil sil
sil_2 sil_2
silence_phones.txt:
sil
sil_2
optional_silence.txt:
sil_2
Did I miss something to successfully train a monophone model?
Thanks.