📄 m_info.c
字号:
jlog("\n\n"); if (r->wchmm != NULL) { print_wchmm_info(r->wchmm); jlog("\n"); } if (r->lmtype == LM_PROB) { jlog(" Inter-word N-gram cache: \n"); { int num, len;#ifdef UNIGRAM_FACTORING len = r->wchmm->isolatenum; jlog("\troot node to be cached = %d / %d (isolated only)\n", len, r->wchmm->startnum);#else len = r->wchmm->startnum; jlog("\troot node to be cached = %d (all)\n", len);#endif#ifdef HASH_CACHE_IW num = (r->config->pass1.iw_cache_rate * r->lm->ngram->max_word_num) / 100; jlog("\tword ends to be cached = %d / %d\n", num, r->lm->ngram->max_word_num);#else num = r->lm->ngram->max_word_num; jlog("\tword ends to be cached = %d (all)\n", num);#endif jlog("\t max. allocation size = %dMB\n", num * len / 1000 * sizeof(LOGPROB) / 1000); } } if (r->lmtype == LM_PROB) { jlog("\t(-lmp) pass1 LM weight = %2.1f ins. penalty = %+2.1f\n", r->config->lmp.lm_weight, r->config->lmp.lm_penalty); jlog("\t(-lmp2) pass2 LM weight = %2.1f ins. penalty = %+2.1f\n", r->config->lmp.lm_weight2, r->config->lmp.lm_penalty2); jlog("\t(-transp)trans. penalty = %+2.1f per word\n", r->config->lmp.lm_penalty_trans); } else if (r->lmtype == LM_DFA && r->lmvar == LM_DFA_GRAMMAR) { jlog("\t(-penalty1) IW penalty1 = %+2.1f\n", r->config->lmp.penalty1); jlog("\t(-penalty2) IW penalty2 = %+2.1f\n", r->config->lmp.penalty2); }#ifdef CONFIDENCE_MEASURE#ifdef CM_MULTIPLE_ALPHA jlog("\t(-cmalpha)CM alpha coef = from %f to %f by step of %f (%d outputs)\n", r->config->annotate.cm_alpha_bgn, r->config->annotate.cm_alpha_end, r->config->annotate.cm_alpha_step, r->config->annotate.cm_alpha_num);#else jlog("\t(-cmalpha)CM alpha coef = %f\n", r->config->annotate.cm_alpha);#endif#ifdef CM_SEARCH_LIMIT jlog("\t(-cmthres) CM cut thres = %f for hypo generation\n", r->config->annotate.cm_cut_thres);#endif#ifdef CM_SEARCH_LIMIT_POP jlog("\t(-cmthres2)CM cut thres = %f for popped hypo\n", r->config->annotate.cm_cut_thres_pop);#endif#endif /* CONFIDENCE_MEASURE */ jlog("\n"); if (r->am->hmminfo->multipath) { if (r->lm->config->enable_iwsp) { jlog("\t inter-word short pause = on (append \"%s\" for each word tail)\n", r->am->hmminfo->sp->name); jlog("\t sp transition penalty = %+2.1f\n", r->am->config->iwsp_penalty); } } if (r->lmvar == LM_DFA_WORD) {#ifdef DETERMINE jlog(" early word determination: (-wed)\n"); jlog("\tscore threshold = %f\n", r->config->pass1.determine_score_thres); jlog("\tframe dur. thres = %d\n", r->config->pass1.determine_duration_thres);#endif } jlog(" Search parameters: \n"); jlog("\t multi-path handling = "); if (r->am->hmminfo->multipath) { jlog("yes, multi-path mode enabled\n"); } else { jlog("no\n"); } jlog("\t(-b) trellis beam width = %d", r->trellis_beam_width); if (r->config->pass1.specified_trellis_beam_width == -1) { jlog(" (-1 or not specified - guessed)\n"); } else if (r->config->pass1.specified_trellis_beam_width == 0) { jlog(" (0 - full)\n"); } else { jlog("\n"); } jlog("\t(-n)search candidate num= %d\n", r->config->pass2.nbest); jlog("\t(-s) search stack size = %d\n", r->config->pass2.stack_size); jlog("\t(-m) search overflow = after %d hypothesis poped\n", r->config->pass2.hypo_overflow); jlog("\t 2nd pass method = "); if (r->config->graph.enabled) {#ifdef GRAPHOUT_DYNAMIC#ifdef GRAPHOUT_SEARCH jlog("searching graph, generating dynamic graph\n");#else jlog("searching sentence, generating dynamic graph\n");#endif /* GRAPHOUT_SEARCH */#else /* ~GRAPHOUT_DYNAMIC */ jlog("searching sentence, generating static graph from N-best\n");#endif } else { jlog("searching sentence, generating N-best\n"); } if (r->config->pass2.enveloped_bestfirst_width >= 0) { jlog("\t(-b2) pass2 beam width = %d\n", r->config->pass2.enveloped_bestfirst_width); } jlog("\t(-lookuprange)lookup range= %d (tm-%d <= t <tm+%d)\n",r->config->pass2.lookup_range,r->config->pass2.lookup_range,r->config->pass2.lookup_range);#ifdef SCAN_BEAM jlog("\t(-sb)2nd scan beamthres = %.1f (in logscore)\n", r->config->pass2.scan_beam_thres);#endif jlog("\t(-n) search till = %d candidates found\n", r->config->pass2.nbest); jlog("\t(-output) and output = %d candidates out of above\n", r->config->output.output_hypo_maxnum); if (r->ccd_flag) { jlog("\t IWCD handling:\n");#ifdef PASS1_IWCD jlog("\t 1st pass: approximation "); switch(r->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", r->am->hmminfo->cdmax_num); break; }#else jlog("\t 1st pass: ignored\n");#endif#ifdef PASS2_STRICT_IWCD jlog("\t 2nd pass: strict (apply when expanding hypo. )\n");#else jlog("\t 2nd pass: loose (apply when hypo. is popped and scanned)\n");#endif } if (r->lmtype == LM_PROB) { jlog("\t factoring score: ");#ifdef UNIGRAM_FACTORING jlog("1-gram prob. (statically assigned beforehand)\n");#else jlog("2-gram prob. (dynamically computed while search)\n");#endif } if (r->config->annotate.align_result_word_flag) { jlog("\t output word alignments\n"); } if (r->config->annotate.align_result_phoneme_flag) { jlog("\t output phoneme alignments\n"); } if (r->config->annotate.align_result_state_flag) { jlog("\t output state alignments\n"); } if (r->lmtype == LM_DFA && r->lmvar == LM_DFA_GRAMMAR) { if (r->config->pass2.looktrellis_flag) { jlog("\t only words in backtrellis will be expanded in 2nd pass\n"); } else { jlog("\t all possible words will be expanded in 2nd pass\n"); } } if (r->wchmm != NULL) { if (r->wchmm->category_tree) { if (r->config->pass1.old_tree_function_flag) { jlog("\t build_wchmm() used\n"); } else { jlog("\t build_wchmm2() used\n"); }#ifdef PASS1_IWCD#ifdef USE_OLD_IWCD jlog("\t full lcdset used\n");#else jlog("\t lcdset limited by word-pair constraint\n");#endif#endif /* PASS1_IWCD */ } } if (r->config->output.progout_flag) { jlog("\tprogressive output on 1st pass\n"); } if (r->config->compute_only_1pass) { jlog("\tCompute only 1-pass\n"); } if (r->config->graph.enabled) { jlog("\n"); jlog("Graph-based output with graph-oriented search:\n"); jlog("\t(-lattice) word lattice = %s\n", r->config->graph.lattice ? "yes" : "no"); jlog("\t(-confnet) confusion network = %s\n", r->config->graph.confnet ? "yes" : "no"); if (r->config->graph.lattice == TRUE) { jlog("\t(-graphrange) margin = %d frames", r->config->graph.graph_merge_neighbor_range); if (r->config->graph.graph_merge_neighbor_range < 0) { jlog(" (all post-marging disabled)\n"); } else if (r->config->graph.graph_merge_neighbor_range == 0) { jlog(" (merge same word with the same boundary)\n"); } else { jlog(" (merge same words around this margin)\n"); } }#ifdef GRAPHOUT_DEPTHCUT jlog("\t(-graphcut)cutoff depth = "); if (r->config->graph.graphout_cut_depth < 0) { jlog("disabled (-1)\n"); } else { jlog("%d words\n",r->config->graph.graphout_cut_depth); }#endif#ifdef GRAPHOUT_LIMIT_BOUNDARY_LOOP jlog("\t(-graphboundloop)loopmax = %d for boundary adjustment\n",r->config->graph.graphout_limit_boundary_loop_num);#endif#ifdef GRAPHOUT_SEARCH_DELAY_TERMINATION jlog("\tInhibit graph search termination before 1st sentence found = "); if (r->config->graph.graphout_search_delay) { jlog("enabled\n"); } else { jlog("disabled\n"); }#endif } if (r->config->successive.enabled) { jlog("\tshort pause segmentation = on\n"); jlog("\t sp duration length = %d frames\n", r->config->successive.sp_frame_duration);#ifdef SPSEGMENT_NAIST jlog(" backstep margin on trigger = %d frames\n", r->config->successive.sp_margin); jlog("\t delay on trigger = %d frames\n", r->config->successive.sp_delay);#endif if (r->config->successive.pausemodelname) { jlog("\t pause models for seg. = %s\n", r->config->successive.pausemodelname); } } else { jlog("\tshort pause segmentation = off\n"); } if (r->config->output.progout_flag) { jlog("\t progout interval = %d msec\n", r->config->output.progout_interval); } jlog("\tfall back on search fail = "); if (r->config->sw.fallback_pass1_flag) { jlog("on, adopt 1st pass result as final\n"); } else { jlog("off, returns search failure\n"); } jlog("\n"); } jlog("------------------------------------------------------------\n"); jlog("Decoding algorithm:\n\n"); jlog("\t1st pass input processing = "); if (jconf->decodeopt.force_realtime_flag) jlog("(forced) "); if (jconf->decodeopt.realtime_flag) { jlog("real time, on-the-fly\n"); } else { jlog("buffered, batch\n"); } jlog("\t1st pass method = ");#ifdef WPAIR# ifdef WPAIR_KEEP_NLIMIT jlog("word-pair approx., keeping only N tokens ");# else jlog("word-pair approx. ");# endif#else jlog("1-best approx. ");#endif#ifdef WORD_GRAPH jlog("generating word_graph\n");#else jlog("generating indexed trellis\n");#endif#ifdef CONFIDENCE_MEASURE jlog("\toutput word confidence measure ");#ifdef CM_NBEST jlog("based on N-best candidates\n");#endif#ifdef CM_SEARCH jlog("based on search-time scores\n");#endif#endif /* CONFIDENCE_MEASURE */ jlog("\n"); jlog("------------------------------------------------------------\n"); jlog("FrontEnd:\n\n"); jlog(" Input stream:\n"); jlog("\t input type = "); switch(jconf->input.type) { case INPUT_WAVEFORM: jlog("waveform\n"); break; case INPUT_VECTOR: jlog("feature vector sequence\n"); break; } jlog("\t input source = "); if (jconf->input.plugin_source != -1) { jlog("plugin\n"); } else if (jconf->input.speech_input == SP_RAWFILE) { jlog("waveform file\n"); jlog("\t input filelist = "); if (jconf->input.inputlist_filename == NULL) { jlog("(none, get file name from stdin)\n"); } else { jlog("%s\n", jconf->input.inputlist_filename); } } else if (jconf->input.speech_input == SP_MFCFILE) { jlog("feature vector file (HTK format)\n"); jlog("\t filelist = "); if (jconf->input.inputlist_filename == NULL) { jlog("(none, get file name from stdin)\n"); } else { jlog("%s\n", jconf->input.inputlist_filename); } } else if (jconf->input.speech_input == SP_STDIN) { jlog("standard input\n"); } else if (jconf->input.speech_input == SP_ADINNET) { jlog("adinnet client\n");#ifdef USE_NETAUDIO } else if (jconf->input.speech_input == SP_NETAUDIO) { char *p; jlog("NetAudio server on "); if (jconf->input.netaudio_devname != NULL) { jlog("%s\n", jconf->input.netaudio_devname); } else if ((p = getenv("AUDIO_DEVICE")) != NULL) { jlog("%s\n", p); } else { jlog("local port\n"); }#endif } else if (jconf->input.speech_input == SP_MIC) { jlog("microphone\n"); jlog("\t device API = "); switch(jconf->input.device) { case SP_INPUT_DEFAULT: jlog("default\n"); break; case SP_INPUT_ALSA: jlog("alsa\n"); break; case SP_INPUT_OSS: jlog("oss\n"); break; case SP_INPUT_ESD: jlog("esd\n"); break; } } if (jconf->input.type == INPUT_WAVEFORM) { if (jconf->input.speech_input == SP_RAWFILE || jconf->input.speech_input == SP_STDIN || jconf->input.speech_input == SP_ADINNET) { if (jconf->input.use_ds48to16) { jlog("\t sampling freq. = assume 48000Hz, then down to %dHz\n", jconf->input.sfreq); } else { jlog("\t sampling freq. = %d Hz required\n", jconf->input.sfreq); } } else { if (jconf->input.use_ds48to16) { jlog("\t sampling freq. = 48000Hz, then down to %d Hz\n", jconf->input.sfreq); } else { jlog("\t sampling freq. = %d Hz\n", jconf->input.sfreq); } } } if (jconf->input.type == INPUT_WAVEFORM) { jlog("\t threaded A/D-in = ");#ifdef HAVE_PTHREAD if (recog->adin->enable_thread) { jlog("supported, on\n"); } else { jlog("supported, off\n"); }#else jlog("not supported (live input may be dropped)\n");#endif } if (jconf->preprocess.strip_zero_sample) { jlog("\t zero frames stripping = on\n"); } else { jlog("\t zero frames stripping = off\n"); } if (jconf->input.type == INPUT_WAVEFORM) { if (recog->adin->adin_cut_on) { jlog("\t silence cutting = on\n"); jlog("\t level thres = %d / 32767\n", jconf->detect.level_thres); jlog("\t zerocross thres = %d / sec.\n", jconf->detect.zero_cross_num); jlog("\t head margin = %d msec.\n", jconf->detect.head_margin_msec); jlog("\t tail margin = %d msec.\n", jconf->detect.tail_margin_msec); } else { jlog("\t silence cutting = off\n"); } if (jconf->preprocess.use_zmean) { jlog("\t long-term DC removal = on"); if (jconf->input.speech_input == SP_RAWFILE) { jlog(" (will compute for each file)\n"); } else { jlog(" (will compute from first %.1f sec)\n", (float)ZMEANSAMPLES / (float)jconf->input.sfreq); } } else { jlog("\t long-term DC removal = off\n"); } } jlog("\t reject short input = "); if (jconf->reject.rejectshortlen > 0) { jlog("< %d msec\n", jconf->reject.rejectshortlen); } else { jlog("off\n"); }#ifdef POWER_REJECT jlog("\t power rejection thres = %f", jconf->reject.powerthres);#endif jlog("\n"); jlog("----------------------- System Information end -----------------------\n");#ifdef USE_MIC if (jconf->decodeopt.realtime_flag) { boolean flag; flag = FALSE; for(mfcc=recog->mfcclist; mfcc; mfcc=mfcc->next) { if (mfcc->para->cmn && mfcc->cmn.loaded) { flag = TRUE; break; } } if (flag) { jlog("\n"); jlog("initial CMN parameter loaded from file\nfor"); for(mfcc=recog->mfcclist; mfcc; mfcc=mfcc->next) { if (mfcc->para->cmn && mfcc->cmn.loaded) { jlog(" MFCC%02d", mfcc->id); } } jlog("\n"); } flag = FALSE; for(mfcc=recog->mfcclist; mfcc; mfcc=mfcc->next) { if (mfcc->para->cmn && !mfcc->cmn.loaded) { flag = TRUE; break; } } if (flag) { jlog("\n"); jlog("\t*************************************************************\n"); jlog("\t* NOTICE: The first input may not be recognized, since *\n"); jlog("\t* no initial CMN parameter is available on startup. *\n"); jlog("\t* for"); for(mfcc=recog->mfcclist; mfcc; mfcc=mfcc->next) { if (mfcc->para->cmn && !mfcc->cmn.loaded) { jlog(" MFCC%02d", mfcc->id); } } jlog("*\n"); jlog("\t*************************************************************\n"); } flag = FALSE; for(mfcc=recog->mfcclist; mfcc; mfcc=mfcc->next) { if (mfcc->para->energy && mfcc->para->enormal) { flag = TRUE; break; } } if (flag) { jlog("\t*************************************************************\n"); jlog("\t* NOTICE: Energy normalization is activated on live input: *\n"); jlog("\t* maximum energy of LAST INPUT will be used for it. *\n"); jlog("\t* So, the first input will not be recognized. *\n"); jlog("\t* for"); for(mfcc=recog->mfcclist; mfcc; mfcc=mfcc->next) { if (mfcc->para->energy && mfcc->para->enormal) { jlog(" MFCC%02d", mfcc->id); } } jlog("*\n"); jlog("\t*************************************************************\n"); } }#endif}/* end of file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -