Menu

./scripts_pl/07.cd-schmm/slave_convg.pl faill

Help
2002-12-17
2012-09-22
  • Stephen Crowley

    Stephen Crowley - 2002-12-17

    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

     
    • robert b

      robert b - 2002-12-17

      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.

       
      • Stephen Crowley

        Stephen Crowley - 2002-12-18

        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.

         
        • robert b

          robert b - 2002-12-18

          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.

           
    • Anonymous

      Anonymous - 2002-12-18

      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

       
      • Stephen Crowley

        Stephen Crowley - 2002-12-19

        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...

         
        • Stephen Crowley

          Stephen Crowley - 2002-12-19

          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.

           
    • Ivan Uemlianin

      Ivan Uemlianin - 2002-12-19

      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");

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.