⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_info.c

📁 julius version 4.12.about sound recognition.
💻 C
📖 第 1 页 / 共 2 页
字号:
/** * @file   m_info.c *  * <JA> * @brief  システム攫鼠の叫蜗 * </JA> *  * <EN> * @brief  Output system informations. * </EN> *  * @author Akinobu Lee * @date   Thu May 12 14:14:01 2005 * * $Revision: 1.9 $ *  *//* * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology * All rights reserved */#include <julius/julius.h>/**  * <EN> * Output module overview in a global configuration variables to log. * </EN> * <JA> * 链挛肋年パラメ〖タ柒のモジュ〖ル菇喇の车妥をログに叫蜗する.  * </JA> *  * @param jconf [in] global configuration variables * * @callgraph * @callergraph *  */voidprint_jconf_overview(Jconf *jconf){  JCONF_AM *amconf;  JCONF_LM *lmconf;  JCONF_SEARCH *sconf;  GRAMLIST *g;  int i, n;  jlog("------------------------------------------------------------\n");  jlog("Configuration of Modules\n\n");  jlog(" Number of defined modules:");  i = 0; for(amconf=jconf->am_root;amconf;amconf=amconf->next) i++;  jlog(" AM=%d,", i);  i = 0; for(lmconf=jconf->lm_root;lmconf;lmconf=lmconf->next) i++;  jlog(" LM=%d,", i);  i = 0; for(sconf=jconf->search_root;sconf;sconf=sconf->next) i++;  jlog(" SR=%d\n", i);    jlog("\n");    jlog(" Acoustic Model (with input parameter spec.):\n");  for(amconf=jconf->am_root;amconf;amconf=amconf->next) {    if (amconf->name[0] != '\0') {      jlog(" - AM%02d \"%s\"\n", amconf->id, amconf->name);    } else {      jlog(" - AM%02d\n", amconf->id);    }    jlog("\thmmfilename=%s\n",amconf->hmmfilename);    if (amconf->mapfilename != NULL) {      jlog("\thmmmapfilename=%s\n",amconf->mapfilename);    }    if (amconf->hmm_gs_filename != NULL) {      jlog("\thmmfile for Gaussian Selection: %s\n", amconf->hmm_gs_filename);    }  }  jlog("\n");    jlog(" Language Model:\n");  for(lmconf=jconf->lm_root;lmconf;lmconf=lmconf->next) {    if (lmconf->name[0] != '\0') {      jlog(" - LM%02d \"%s\"\n", lmconf->id, lmconf->name);    } else {      jlog(" - LM%02d\n", lmconf->id);    }    if (lmconf->lmtype == LM_PROB) {      jlog("\tvocabulary filename=%s\n",lmconf->dictfilename);      if (lmconf->ngram_filename != NULL) {	jlog("\tn-gram  filename=%s (binary format)\n", lmconf->ngram_filename);      } else {	if (lmconf->ngram_filename_rl_arpa != NULL) {	  jlog("\tbackward n-gram filename=%s\n", lmconf->ngram_filename_rl_arpa);	  if (lmconf->ngram_filename_lr_arpa != NULL) {	    jlog("\tforward 2-gram for pass1=%s\n", lmconf->ngram_filename_lr_arpa);	  }	} else if (lmconf->ngram_filename_lr_arpa != NULL) {	  jlog("\tforward n-gram filename=%s\n", lmconf->ngram_filename_lr_arpa);	}      }    }    if (lmconf->lmtype == LM_DFA) {      switch(lmconf->lmvar) {      case LM_DFA_GRAMMAR:	n = 1;	for(g = lmconf->gramlist_root; g; g = g->next) {	  jlog("\tgrammar #%d:\n", n++);	  jlog("\t    dfa  = %s\n", g->dfafile);	  jlog("\t    dict = %s\n", g->dictfile);	}	break;      case LM_DFA_WORD:	n = 1;	for(g = lmconf->wordlist_root; g; g = g->next) {	  jlog("\twordlist #%d: %s\n", n++, g->dictfile);	}	break;      }    }  }  jlog("\n");  jlog(" Recognizer:\n");  for(sconf=jconf->search_root; sconf; sconf=sconf->next) {    if (sconf->name[0] != '\0') {      jlog(" - SR%02d \"%s\"", sconf->id, sconf->name);    } else {      jlog(" - SR%02d", sconf->id);    }    jlog(" (AM%02d, LM%02d)\n", sconf->amconf->id, sconf->lmconf->id);  }  jlog("\n");}/**  * <JA> * エンジンインスタンスの链攫鼠をログに叫蜗する.  * </JA> * <EN> * Output all informations of an engine instance to log. * </EN> * * @param recog [in] engine instance *  * @callgraph * @callergraph */voidprint_engine_info(Recog *recog){  FILE *fp;  Jconf *jconf;  MFCCCalc *mfcc;  PROCESS_AM *am;  PROCESS_LM *lm;  RecogProcess *r;  jconf = recog->jconf;    /* set output file pointer to fp */  fp = jlog_get_fp();  if (fp == NULL) return;  jlog("----------------------- System Information begin ---------------------\n");  j_put_header(fp);  j_put_compile_defs(fp);  jlog("\n");    /* print current argument setting to log */  print_jconf_overview(jconf);  if (jconf->input.type == INPUT_WAVEFORM) {    /* acoustic parameter conditions for this model */    jlog("------------------------------------------------------------\n");    jlog("Speech Analysis Module(s)\n\n");        for(mfcc=recog->mfcclist;mfcc;mfcc=mfcc->next) {      jlog("[MFCC%02d]  for", mfcc->id);      for(am=recog->amlist;am;am=am->next) {	if (am->mfcc == mfcc) {	  jlog(" [AM%02d %s]", am->config->id, am->config->name);	}      }      if (recog->gmm != NULL) {	if (recog->gmmmfcc == mfcc) {	  jlog(" [GMM]");	}      }      jlog("\n\n");      put_para(fp, mfcc->para);      if (jconf->input.type == INPUT_WAVEFORM) {	jlog("    spectral subtraction = ");	if (mfcc->frontend.ssload_filename || mfcc->frontend.sscalc) {	  if (mfcc->frontend.sscalc) {	    jlog("use head silence of each input\n");	    jlog("\t     head sil length = %d msec\n", mfcc->frontend.sscalc_len);	  } else {			/* ssload_filename != NULL */	    jlog("use a constant value from file\n");	    jlog("         noise spectrum file = \"%s\"\n", mfcc->frontend.ssload_filename);	  }	  jlog("\t         alpha coef. = %f\n", mfcc->frontend.ss_alpha);	  jlog("\t      spectral floor = %f\n", mfcc->frontend.ss_floor);	} else {	  jlog("off\n");	}      }      jlog("  cepstral normalization = ");      if (mfcc->para->cmn || mfcc->para->cvn) {	if (jconf->decodeopt.realtime_flag) {	  jlog("real-time MAP-");	} else {	  jlog("sentence ");	}	if (mfcc->para->cmn) {	  jlog("CMN");	}	if (mfcc->para->cmn && mfcc->para->cvn) {	  jlog("+");	}	if (mfcc->para->cvn) {	  jlog("CVN");	}	jlog("\n");      } else {	jlog("no\n");      }      jlog("\t base setup from =");      if (mfcc->htk_loaded == 1 || mfcc->hmm_loaded == 1) {	if (mfcc->hmm_loaded == 1) {	  jlog(" binhmm-embedded");	  if (mfcc->htk_loaded == 1) {	    jlog(", then overridden by HTK Config and defaults");	  }	} else {	  if (mfcc->htk_loaded == 1) {	    jlog(" HTK Config (and HTK defaults)");	  }	}      } else {	jlog(" Julius defaults");      }      jlog("\n");      jlog("\n");      if (jconf->decodeopt.realtime_flag && (mfcc->para->cmn || mfcc->para->cvn)) {	jlog(" MAP-");	if (mfcc->para->cmn) jlog("CMN");	if (mfcc->para->cmn && mfcc->para->cvn) jlog("+");	if (mfcc->para->cvn) jlog("CVN");	jlog(":\n");	jlog("      initial cep. data   = ");	if (mfcc->cmn.load_filename) {	  jlog("load from \"%s\"\n", mfcc->cmn.load_filename);	} else {	  jlog("none\n");	}	jlog("      beginning data weight = %6.2f\n", mfcc->cmn.map_weight);	if (mfcc->cmn.update) {	  jlog("    beginning data update = yes, from last inputs at each input\n");	} else {	  jlog("    beginning data update = no, use default as initial at each input\n");	}	if (mfcc->cmn.save_filename) {	  jlog("        save cep. data to = file \"%s\" at end of each input\n", mfcc->cmn.save_filename);	}	jlog("\n");      }    }  }  if (recog->gmm != NULL) {    jlog("------------------------------------------------------------\n");    jlog("GMM\n");    jlog("\n");    jlog("     GMM definition file = %s\n", jconf->reject.gmm_filename);    jlog("          GMM gprune num = %d\n", jconf->reject.gmm_gprune_num);    if (jconf->reject.gmm_reject_cmn_string != NULL) {      jlog("     GMM names to reject = %s\n", jconf->reject.gmm_reject_cmn_string);    }#ifdef GMM_VAD    jlog("\n GMM-based VAD\n\n");    jlog("       backstep on trigger = %d frames\n", jconf->detect.gmm_margin);    jlog("    up-trigger thres score = %.1f\n", jconf->detect.gmm_uptrigger_thres);    jlog("  down-trigger thres score = %.1f\n", jconf->detect.gmm_downtrigger_thres);#endif    jlog("\n GMM");    print_hmmdef_info(fp, recog->gmm);    jlog("\n");  }  jlog("------------------------------------------------------------\n");  jlog("Acoustic Model(s)\n");  jlog("\n");  for(am = recog->amlist; am; am = am->next) {    if (am->config->name[0] != '\0') {      jlog("[AM%02d \"%s\"]\n\n", am->config->id, am->config->name);    } else {      jlog("[AM%02d]\n\n", am->config->id);    }    print_hmmdef_info(fp, am->hmminfo);    jlog("\n");    if (am->config->hmm_gs_filename != NULL) {      jlog("GS ");      print_hmmdef_info(fp, am->hmm_gs);      jlog("\n");    }    jlog(" AM Parameters:\n");    jlog("        Gaussian pruning = ");    switch(am->config->gprune_method){    case GPRUNE_SEL_NONE: jlog("none (full computation)"); break;    case GPRUNE_SEL_BEAM: jlog("beam"); break;    case GPRUNE_SEL_HEURISTIC: jlog("heuristic"); break;    case GPRUNE_SEL_SAFE: jlog("safe"); break;    case GPRUNE_SEL_USER: jlog("(use plugin function)"); break;    }    jlog("  (-gprune)\n");    if (am->config->gprune_method != GPRUNE_SEL_NONE	&& am->config->gprune_method != GPRUNE_SEL_USER) {      jlog("  top N mixtures to calc = %d / %d  (-tmix)\n", am->config->mixnum_thres, am->hmminfo->maxcodebooksize);    }    if (am->config->hmm_gs_filename != NULL) {      jlog("      GS state num thres = %d / %d selected  (-gsnum)\n", am->config->gs_statenum, am->hmm_gs->totalstatenum);    }    jlog("    short pause HMM name = \"%s\" specified", am->config->spmodel_name);    if (am->hmminfo->sp != NULL) {      jlog(", \"%s\" applied", am->hmminfo->sp->name);      if (am->hmminfo->sp->is_pseudo) {	jlog(" (pseudo)");      } else {	jlog(" (physical)");      }    } else {      jlog(" but not assigned");    }    jlog("  (-sp)\n");    jlog("  cross-word CD on pass1 = ");#ifdef PASS1_IWCD    jlog("handle by approx. ");    switch(am->hmminfo->cdset_method) {    case IWCD_AVG:      jlog("(use average prob. of same LC)\n");      break;    case IWCD_MAX:      jlog("(use max. prob. of same LC)\n");      break;    case IWCD_NBEST:      jlog("(use %d-best of same LC)\n", am->hmminfo->cdmax_num);      break;    }#else    jlog("disabled\n");#endif        if (am->hmminfo->multipath) {      jlog("   sp transition penalty = %+2.1f\n", am->config->iwsp_penalty);    }    jlog("\n");  }  jlog("------------------------------------------------------------\n");  jlog("Language Model(s)\n");  for(lm = recog->lmlist; lm; lm = lm->next) {    jlog("\n");    if (lm->config->name[0] != '\0') {      jlog("[LM%02d \"%s\"]", lm->config->id, lm->config->name);    } else {      jlog("[LM%02d]", lm->config->id);    }    if (lm->lmtype == LM_PROB) {      if (lm->lmvar == LM_NGRAM) {	jlog(" type=n-gram\n\n");	if (lm->ngram) {	  print_ngram_info(fp, lm->ngram); jlog("\n");	}      } else if (lm->lmvar == LM_NGRAM_USER) {	if (lm->ngram) {	  jlog(" type=n-gram + user\n\n");	  print_ngram_info(fp, lm->ngram); jlog("\n");	} else {	  jlog(" type=user\n\n");	}      } else {	jlog(" type=UNKNOWN??\n\n");      }    } else if (lm->lmtype == LM_DFA) {      if (lm->lmvar == LM_DFA_GRAMMAR) {	jlog(" type=grammar\n\n");	if (lm->dfa) {	  print_dfa_info(fp, lm->dfa); jlog("\n");	  if (debug2_flag) {	    print_dfa_cp(fp, lm->dfa);	    jlog("\n");	  }	}      } else if (lm->lmvar == LM_DFA_WORD) {	jlog(" type=word\n\n");      } else {	jlog(" type=UNKNOWN??\n\n");      }    } else {      jlog(" type=UNKNOWN??\n\n");    }    if (lm->winfo != NULL) {      print_voca_info(fp, lm->winfo); jlog("\n");    }    jlog(" Parameters:\n");    if (lm->lmtype == LM_DFA && lm->lmvar == LM_DFA_GRAMMAR) {      if (lm->dfa != NULL) {	int i;	jlog("   found sp category IDs =");	for(i=0;i<lm->dfa->term_num;i++) {	  if (lm->dfa->is_sp[i]) {	    jlog(" %d", i);	  }	}	jlog("\n");      }    }        if (lm->lmtype == LM_PROB) {      if (lm->config->enable_iwspword) {	jlog("\tIW-sp word added to dict= \"%s\"\n", lm->config->iwspentry);      }    }    if (lm->lmtype == LM_PROB) {          jlog("\t(-silhead)head sil word = ");      put_voca(fp, lm->winfo, lm->winfo->head_silwid);      jlog("\t(-siltail)tail sil word = ");      put_voca(fp, lm->winfo, lm->winfo->tail_silwid);    }    if (lm->lmvar == LM_DFA_WORD) {      jlog("     silence model names to add at word head / tail:  (-wsil)\n");      jlog("\tword head          = \"%s\"\n", lm->config->wordrecog_head_silence_model_name);      jlog("\tword tail          = \"%s\"\n", lm->config->wordrecog_tail_silence_model_name);      jlog("\ttheir context name = \"%s\"\n", (lm->config->wordrecog_silence_context_name[0] == '\0') ? "NULL (blank)" : lm->config->wordrecog_silence_context_name);          }  }  jlog("\n");  jlog("------------------------------------------------------------\n");  jlog("Recognizer(s)\n\n");  for(r = recog->process_list; r; r = r->next) {    jlog("[SR%02d", r->config->id);    if (r->config->name[0] != '\0') {      jlog(" \"%s\"", r->config->name);    }    jlog("]  ");    if (r->am->config->name[0] != '\0') {      jlog("AM%02d \"%s\"", r->am->config->id, r->am->config->name);    } else {      jlog("AM%02d", r->am->config->id);    }    jlog("  +  ");    if (r->lm->config->name[0] != '\0') {      jlog("LM%02d \"%s\"", r->lm->config->id, r->lm->config->name);    } else {      jlog("LM%02d", r->lm->config->id);    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -