MaggieYou - 2005-05-10

Recently, I have used Sphinx4 and Sphinxtrain to do Speech Recogniton test.
I need help so much,because this system puzzled me too long time.I tried to solve it by myself.BUT so for, I still do not know where the error is.
please read it with patience ,because it seems long :-)

1.At the beginning,I trained an CI model by SphinxTrain.I just followed the scriptman1.htm which describes the procedures for training acoustic models using the Sphinx3 trainer.My model just had two phones:IH [b(i)t] and UH [b(oo)k].They were both record in windows . Each of them were just record about 100 times.
Before train, the data files should be prepared.So as follows:

1)the audio files  to feature files  :use the command  wave2feat in SphinxTrain, set -mswav yes.So I    have got    the feature files.

(The files belowed are generated manually)


control file:
IH1
IH2
....
IH7
UH1
...
UH7


dictionary:
IH IH
UH UH


transcript:
<s> IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH </s> (IH0)
<s> IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH </s> (IH1)
............
<s> IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH IH </s> (IH7)
<s> UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH </s> (UH1)
<s> UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH </s> (UH2)
............
<s> UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH UH </s> (UH7)


fillerdict:
<s> SIL
</s> SIL
<sil> SIL


phonelist:
SIL - - -
IH - - -
UH - - -


Then, I just used those files to do training. I put the commands into one perl files.
The perl files is:


!/usr/bin/perl

$comman="./mk_model_def -moddeffn /train/model/test_8gau_13dCep_16k_40mel_130Hz_6800Hz.mdef -phonelstfn /train/phonelist/phone.list -n_state_pm 5";
system $comman;

$comman="./mk_flat -moddeffn /train/model/test_8gau_13dCep_16k_40mel_130Hz_6800Hz.mdef -topo /train/topofile/topofile -mixwfn /train/mixwfn/m_w -tmatfn /train/tmatfn/t_m -nstream 1 -ndensity 1 ";
system $comman;

$comman="./init_gau -accumdir /train/init_gau_accumdir -ctlfn /train/ctl/ctl.ctl -part 1 -npart 1 -cepdir /train/feature -cepext mfcc -feat 1s_c_d_dd -ceplen 13";
system $comman;

$comman="./norm -accumdir /train/init_gau_accumdir -meanfn /train/meanfn/mean -feat 1s_c_d_dd -ceplen 13";
system $comman;

$comman="./init_gau -accumdir /train/init_gau_accumdir -ctlfn /train/ctl/ctl.ctl -part 1 -npart 1 -cepdir /train/feature -cepext mfcc -feat 1s_c_d_dd -ceplen 13 -meanfn /train/meanfn/mean";
system $comman;

$comman="./norm -accumdir /train/init_gau_accumdir -varfn /train/varfn/var -feat 1s_c_d_dd -ceplen 13";
system $comman;

$comman="./cp_parm -cpopsfn /train/cpopsfn/cpopsfile -igaufn /train/meanfn/mean -ncbout 20 -ogaufn /train/ogaufile/ogau_mean -feat 1s_c_d_dd";
system $comman;

$comman="./cp_parm -cpopsfn /train/cpopsfn/cpopsfile -igaufn /train/varfn/var -ncbout 20 -ogaufn /train/ogaufile/ogau_var -feat 1s_c_d_dd";
system $comman;

$comman="./bw -moddeffn /train/model/test_8gau_13dCep_16k_40mel_130Hz_6800Hz.mdef -ts2cbfn .cont. -mixwfn /train/mixwfn/m_w -tmatfn /train/tmatfn/t_m -meanfn /train/ogaufile/ogau_mean -varfn /train/ogaufile/ogau_var -dictfn /train/dict/dictionary -fdictfn /train/filler/fillerdict -ctlfn /train/ctl/ctl.ctl -part 1 -npart 1 -cepdir /train/feature -cepext mfcc -lsnfn /train/lsnfn/digits.transcript -accumdir /train/bw_accumdir -varfloor 0.0001 -topn 1 -feat 1s_c_d_dd ";
system $comman;

$comman="./norm -accumdir /train/bw_accumdir -feat 1s_c_d_dd -mixwfn /train/result/mixture_weights -tmatfn /train/result/transition_matrices -meanfn /train/result/means -varfn /train/result/variances -ceplen 13 ";
system $comman;

for ( $i=1 ; $i<15; $i++ )
{
$comman="./bw -moddeffn /train/model/test_8gau_13dCep_16k_40mel_130Hz_6800Hz.mdef -ts2cbfn .cont. -mixwfn /train/result/mixture_weights -tmatfn /train/result/transition_matrices -meanfn /train/result/means -varfn /train/result/variances -dictfn /train/dict/dictionary -fdictfn /train/filler/fillerdict -ctlfn /train/ctl/ctl.ctl -part 1 -npart 1 -cepdir /train/feature -cepext mfcc -lsnfn /train/lsnfn/digits.transcript -accumdir /train/bw_accumdir -varfloor 0.0001 -topn 1 -feat 1s_c_d_dd ";
system $comman;

$comman="./norm -accumdir /train/bw_accumdir -feat 1s_c_d_dd -mixwfn /train/result/mixture_weights -tmatfn /train/result/transition_matrices -meanfn /train/result/means -varfn /train/result/variances -ceplen 13 ";
system $comman;
}


2 Training worked .After that ,I got the model and 4 files.Then ,I followed" Using SphinxTrain Models in Sphinx-4",So,The system worked.
BUT,The recognition ratio is so poor!!How to solve that!
Is my Training procedure right? The Procedure is enough for CI model?