📄 m_info.c
字号:
/** * @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 + -