bw gives me the following error when I run
./scripts_pl/07.cd-schmm/slave_convg.pl
as documented in tinydoc.txt
INFO: main.c(188): Reading /ide/speech/ahcpr/model_architecture/ahcpr.6000.mdef
WARN: "model_def_io.c", line 442: Unable to open /ide/speech/ahcpr/model_architecture/ahcpr.6000.mdef for reading; No such file or directory
I ran all of the steps in order and they all ran successfully, what is responsible for creating this file, or do I have to create it myself?
Thanks,
Stephen
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Isn't this what mk_mdef_gen is for? Admittedly, I've never had to use this prog because I've always had a mdef file available in the models I've used. I would paste the one I have here except for the fact that it's 8 megs long :-).
Heh, i know that is the program that generates the .mdef files. But, what exactly do I pass to it? The docs said nothing about creating this file, I figured one of the steps before this should have created it. I could be mistaken, but I don't think just arbitrarily downloading another mdef file in it's place will work.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think I found the problem, I had an entry in the phonelist, 'CH', that did not appear in the dictionary, which made one of the earlier steps fail. Grr, the check_all script should really check for that.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Sorry this is late, hope it's helpful. I cannibalised make_untied_mdef.pl into two scripts to make tied mdefs and alltriphone mdefs.
If you ran only the scripts in tinydoc, you may only have made untied.mdefs. Do you have any alltriphones.mdef files?
If you have CFG_N_TIED_STATES = "untied" (e.g. in etc/sphinx_train.cfg), then sphinxtrain will only build untied models.
In any case, looking at the list of perl scripts in tinydoc, untied mdefs only are built by 03.makeuntiedmdef/make_untied_mdef.pl but later scripts (e.g. 07.cd-schmm/slave_config.pl) require tied mdefs (e.g. xxx.6000.mdef).
I also got an error when 06.prunetree/prunetree.pl (and tiestate.pl) expected an alltriphones.mdef file that-one had not been made. Did anyone else get that one?
My solution was to hack together two new scripts (below) to build the required mdefs and run them at the '03' stage.
Summary
1. set CFG_N_TIED_STATES = 6000 (or whatever is appropriate for your data)
2. add the scripts below to scripts_pl
3. run new expanded set of scripts (from scripts_pl/RunAll_new.pl):
bw gives me the following error when I run
./scripts_pl/07.cd-schmm/slave_convg.pl
as documented in tinydoc.txt
INFO: main.c(188): Reading /ide/speech/ahcpr/model_architecture/ahcpr.6000.mdef
WARN: "model_def_io.c", line 442: Unable to open /ide/speech/ahcpr/model_architecture/ahcpr.6000.mdef for reading; No such file or directory
I ran all of the steps in order and they all ran successfully, what is responsible for creating this file, or do I have to create it myself?
Thanks,
Stephen
Isn't this what mk_mdef_gen is for? Admittedly, I've never had to use this prog because I've always had a mdef file available in the models I've used. I would paste the one I have here except for the fact that it's 8 megs long :-).
I think one may be available at
http://www.speech.cs.cmu.edu/sphinx/models/hmm/hub4-2000-11-17-1.tgz
if you are unable to generate one yourself.
Heh, i know that is the program that generates the .mdef files. But, what exactly do I pass to it? The docs said nothing about creating this file, I figured one of the steps before this should have created it. I could be mistaken, but I don't think just arbitrarily downloading another mdef file in it's place will work.
Actually, it does work, but it may not be right :-). I too tried looking for documentation on mk_mdef_gen but couldn't find it.
If you type mk_mdef_gen, it outputs its usage. Perhaps you can figure it out.
Sorry.
Near as I can tell, it should be generated by scripts_pl/06.prunetree/tiestate.pl. Go check the appropriate log. Good luck!
cheers,
jerry
Ahh, I see the problem
FATAL: "main.c", line 122: Unable to open /ide/speech/ahcpr/trees/ahcpr.6000/AA-0.dtree for reading; No such file or directory
Now, to see why that file wasn't created...
I think I found the problem, I had an entry in the phonelist, 'CH', that did not appear in the dictionary, which made one of the earlier steps fail. Grr, the check_all script should really check for that.
Dear Stephen,
Sorry this is late, hope it's helpful. I cannibalised make_untied_mdef.pl into two scripts to make tied mdefs and alltriphone mdefs.
If you ran only the scripts in tinydoc, you may only have made untied.mdefs. Do you have any alltriphones.mdef files?
If you have CFG_N_TIED_STATES = "untied" (e.g. in etc/sphinx_train.cfg), then sphinxtrain will only build untied models.
In any case, looking at the list of perl scripts in tinydoc, untied mdefs only are built by 03.makeuntiedmdef/make_untied_mdef.pl but later scripts (e.g. 07.cd-schmm/slave_config.pl) require tied mdefs (e.g. xxx.6000.mdef).
I also got an error when 06.prunetree/prunetree.pl (and tiestate.pl) expected an alltriphones.mdef file that-one had not been made. Did anyone else get that one?
My solution was to hack together two new scripts (below) to build the required mdefs and run them at the '03' stage.
Summary
1. set CFG_N_TIED_STATES = 6000 (or whatever is appropriate for your data)
2. add the scripts below to scripts_pl
3. run new expanded set of scripts (from scripts_pl/RunAll_new.pl):
"$CFG_SCRIPT_DIR/00.verify/verify_all.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/01.vector_quantize/slave.VQ.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/02.ci_schmm/slave_convg.pl -cfg $cfg_file 1",
"$CFG_SCRIPT_DIR/03.makeuntiedmdef/make_untied_mdef.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/03.make_mdef/make_mdef.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/03.make_mdef/make_alltri_mdef.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/04.cd_schmm_untied/slave_convg.pl -cfg $cfg_file 1",
"$CFG_SCRIPT_DIR/05.buildtrees/make_questions.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/05.buildtrees/slave.treebuilder.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/06.prunetree/slave.state-tie-er.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/07.cd-schmm/slave_convg.pl -cfg $cfg_file 1",
"$CFG_SCRIPT_DIR/08.deleted-interpolation/deleted_interpolation.pl -cfg $cfg_file",
"$CFG_SCRIPT_DIR/09.make_s2_models/make_s2_models.pl -cfg $cfg_file"
*** ADDING SCRIPTS ***
mkdir scripts_pl/03.make_mdef && put these new scripts there.
*** 03.make_mdef/make_mdef.pl
This is basically just make_untied_mdef.pl with 'untied' replaced with ${CFG_N_TIED_STATES} and a change of output format:
diff 03.makeuntiedmdef/make_untied_mdef.pl 03.make_mdef/make_mdef.pl
77c77
< $logdir = "$CFG_LOG_DIR/03.makeuntiedmdef";
---
> $logdir = "$CFG_LOG_DIR/03.make_mdef";
82c82
< &ST_Log ("MODULE: 03 Make Untied mdef\n");
---
> &ST_Log ("MODULE: 03 Make mdef\n");
86c86,87
< $untiedmdef = "${CFG_BASE_DIR}/model_architecture/${CFG_EXPTNAME}.untied.mdef"
;
---
> $output_format_arg = "-ocimdef";
> $out_mdef = "${CFG_BASE_DIR}/model_architecture/${CFG_EXPTNAME}.${CFG_N_TIED_S
TATES}.mdef";
93c94
< system ("$MAKE_MDEF -phnlstfn $CFG_RAWPHONEFILE -dictfn $CFG_DICTIONARY -fdict
fn $CFG_FILLERDICT -lsnfn $CFG_TRANSCRIPTFILE -ountiedmdef $untiedmdef -n_state
_pm $CFG_STATESPERHMM -maxtriphones 10000 2>$logfile");
---
> system ("$MAKE_MDEF -phnlstfn $CFG_RAWPHONEFILE -dictfn $CFG_DICTIONARY -fdict
fn $CFG_FILLERDICT -lsnfn $CFG_TRANSCRIPTFILE $output_format_arg $out_mdef -n_s
tate_pm $CFG_STATESPERHMM -maxtriphones 10000 2>$logfile");
*** 03.make_mdef/make_alltri_mdef.pl
I added this as because a later script (06.prunetree/prunetree.pl) expected an alltriphones.mdef file that no-one else seemed to be making.
diff 03.makeuntiedmdef/make_untied_mdef.pl 03.make_mdef/make_alltri_mdef.pl
77c77
< $logdir = "$CFG_LOG_DIR/03.makeuntiedmdef";
---
> $logdir = "$CFG_LOG_DIR/03.make_mdef";
82c82
< &ST_Log ("MODULE: 03 Make Untied mdef\n");
---
> &ST_Log ("MODULE: 03 Make mdef\n");
86,90c86,87
< $untiedmdef = "${CFG_BASE_DIR}/model_architecture/${CFG_EXPTNAME}.untied.mdef";
<
< ## awb: replace with
< ## mk_mdef_gen -phnlstfn $phonelist TRANSCRIPTFILE DICTIONARY -ountiedmdef .. n_sta
tes ..
< # -minocc 1 Min occurances of a triphone must occur for inclusion in md
ef file
---
> $output_format_arg = "-oalltphnmdef";
> $out_mdef = "${CFG_BASE_DIR}/model_architecture/${CFG_EXPTNAME}.alltriphones.mdef";
93c90
< system ("$MAKE_MDEF -phnlstfn $CFG_RAWPHONEFILE -dictfn $CFG_DICTIONARY -fdictfn $CFG
_FILLERDICT -lsnfn $CFG_TRANSCRIPTFILE -ountiedmdef $untiedmdef -n_state_pm $CFG_STAT
ESPERHMM -maxtriphones 10000 2>$logfile");
---
> system ("$MAKE_MDEF -phnlstfn $CFG_RAWPHONEFILE -dictfn $CFG_DICTIONARY -fdictfn $CFG
_FILLERDICT -lsnfn $CFG_TRANSCRIPTFILE $output_format_arg $out_mdef -n_state_pm $CFG_
STATESPERHMM -maxtriphones 10000 2>$logfile");