📄 m_options.c
字号:
GET_TMPARG; jconf->amnow->gs_statenum = atoi(tmparg); continue; } else if (strmatch(argv[i],"-gshmm")) { /* same as "-hgs" */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; FREE_MEMORY(jconf->amnow->hmm_gs_filename); GET_TMPARG; jconf->amnow->hmm_gs_filename = filepath(tmparg, cwd); continue; } else if (strmatch(argv[i],"-gsnum")) { /* same as "-booknum" */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; GET_TMPARG; jconf->amnow->gs_statenum = atoi(tmparg); continue; } else if (strmatch(argv[i],"-cmnload")) { /* load CMN parameter from file */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; FREE_MEMORY(jconf->amnow->analysis.cmnload_filename); GET_TMPARG; jconf->amnow->analysis.cmnload_filename = filepath(tmparg, cwd); continue; } else if (strmatch(argv[i],"-cmnsave")) { /* save CMN parameter to file */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; FREE_MEMORY(jconf->amnow->analysis.cmnsave_filename); GET_TMPARG; jconf->amnow->analysis.cmnsave_filename = filepath(tmparg, cwd); continue; } else if (strmatch(argv[i],"-cmnupdate")) { /* update CMN parameter */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; jconf->amnow->analysis.cmn_update = TRUE; continue; } else if (strmatch(argv[i],"-cmnnoupdate")) { /* not update CMN parameter */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; jconf->amnow->analysis.cmn_update = FALSE; continue; } else if (strmatch(argv[i],"-cmnmapweight")) { /* CMN weight for MAP */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; GET_TMPARG; jconf->amnow->analysis.cmn_map_weight = (float)atof(tmparg); continue; } else if (strmatch(argv[i],"-sscalc")) { /* do spectral subtraction (SS) for raw file input */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; jconf->amnow->frontend.sscalc = TRUE; FREE_MEMORY(jconf->amnow->frontend.ssload_filename); continue; } else if (strmatch(argv[i],"-sscalclen")) { /* head silence length used to compute SS (in msec) */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; GET_TMPARG; jconf->amnow->frontend.sscalc_len = atoi(tmparg); continue; } else if (strmatch(argv[i],"-ssload")) { /* load SS parameter from file */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; FREE_MEMORY(jconf->amnow->frontend.ssload_filename); GET_TMPARG; jconf->amnow->frontend.ssload_filename = filepath(tmparg, cwd); jconf->amnow->frontend.sscalc = FALSE; continue;#ifdef CONFIDENCE_MEASURE } else if (strmatch(argv[i],"-cmalpha")) { /* CM log score scaling factor */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; #ifdef CM_MULTIPLE_ALPHA GET_TMPARG; jconf->searchnow->annotate.cm_alpha_bgn = (LOGPROB)atof(tmparg); GET_TMPARG; jconf->searchnow->annotate.cm_alpha_end = (LOGPROB)atof(tmparg); GET_TMPARG; jconf->searchnow->annotate.cm_alpha_step = (LOGPROB)atof(tmparg); jconf->searchnow->annotate.cm_alpha_num = (int)((jconf->searchnow->annotate.cm_alpha_end - jconf->searchnow->annotate.cm_alpha_bgn) / jconf->searchnow->annotate.cm_alpha_step) + 1; if (jconf->searchnow->annotate.cm_alpha_num > 100) { jlog("ERROR: m_option: cm_alpha step num exceeds limit (100)\n"); return FALSE; }#else GET_TMPARG; jconf->searchnow->annotate.cm_alpha = (LOGPROB)atof(tmparg);#endif continue;#ifdef CM_SEARCH_LIMIT } else if (strmatch(argv[i],"-cmthres")) { /* CM cut threshold for CM decoding */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->annotate.cm_cut_thres = (LOGPROB)atof(tmparg); continue;#endif#ifdef CM_SEARCH_LIMIT_POP } else if (strmatch(argv[i],"-cmthres2")) { /* CM cut threshold for CM decoding */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->annotate.cm_cut_thres_pop = (LOGPROB)atof(tmparg); continue;#endif#endif /* CONFIDENCE_MEASURE */ } else if (strmatch(argv[i],"-gmm")) { /* load SS parameter from file */ if (!check_section(jconf, argv[i], JCONF_OPT_GLOBAL)) return FALSE; FREE_MEMORY(jconf->reject.gmm_filename); GET_TMPARG; jconf->reject.gmm_filename = filepath(tmparg, cwd); continue; } else if (strmatch(argv[i],"-gmmnum")) { /* num of Gaussian pruning for GMM */ if (!check_section(jconf, argv[i], JCONF_OPT_GLOBAL)) return FALSE; GET_TMPARG; jconf->reject.gmm_gprune_num = atoi(tmparg); continue; } else if (strmatch(argv[i],"-gmmreject")) { if (!check_section(jconf, argv[i], JCONF_OPT_GLOBAL)) return FALSE; GET_TMPARG; FREE_MEMORY(jconf->reject.gmm_reject_cmn_string); jconf->reject.gmm_reject_cmn_string = strcpy((char *)mymalloc(strlen(tmparg)+1), tmparg); continue;#ifdef GMM_VAD } else if (strmatch(argv[i],"-gmmmargin")) { /* backstep margin */ if (!check_section(jconf, argv[i], JCONF_OPT_GLOBAL)) return FALSE; GET_TMPARG; jconf->detect.gmm_margin = atoi(tmparg); continue; } else if (strmatch(argv[i],"-gmmup")) { /* uptrigger threshold */ if (!check_section(jconf, argv[i], JCONF_OPT_GLOBAL)) return FALSE; GET_TMPARG; jconf->detect.gmm_uptrigger_thres = atof(tmparg); continue; } else if (strmatch(argv[i],"-gmmdown")) { /* uptrigger threshold */ if (!check_section(jconf, argv[i], JCONF_OPT_GLOBAL)) return FALSE; GET_TMPARG; jconf->detect.gmm_downtrigger_thres = atof(tmparg); continue;#endif } else if (strmatch(argv[i],"-htkconf")) { if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; GET_TMPARG; if (htk_config_file_parse(tmparg, &(jconf->amnow->analysis.para_htk)) == FALSE) { jlog("ERROR: m_options: failed to read %s\n", tmparg); return FALSE; } continue; } else if (strmatch(argv[i], "-wlist")) { if (!check_section(jconf, argv[i], JCONF_OPT_LM)) return FALSE; GET_TMPARG; tmparg = filepath(tmparg, cwd); if (multigram_add_prefix_filelist(tmparg, jconf->lmnow, LM_DFA_WORD) == FALSE) { jlog("ERROR: m_options: failed to read some word lists\n"); free(tmparg); return FALSE; } free(tmparg); continue; } else if (strmatch(argv[i], "-wsil")) { /* * if (jconf->lmnow->lmvar != LM_UNDEF && jconf->lmnow->lmvar != LM_DFA_WORD) { * jlog("ERROR: \"-wsil\" only valid for isolated word recognition mode\n"); * return FALSE; * } */ if (!check_section(jconf, argv[i], JCONF_OPT_LM)) return FALSE; GET_TMPARG; strncpy(jconf->lmnow->wordrecog_head_silence_model_name, tmparg, MAX_HMMNAME_LEN); GET_TMPARG; strncpy(jconf->lmnow->wordrecog_tail_silence_model_name, tmparg, MAX_HMMNAME_LEN); GET_TMPARG; if (strmatch(tmparg, "NULL")) { jconf->lmnow->wordrecog_silence_context_name[0] = '\0'; } else { strncpy(jconf->lmnow->wordrecog_silence_context_name, tmparg, MAX_HMMNAME_LEN); } continue;#ifdef DETERMINE } else if (strmatch(argv[i], "-wed")) { //if (jconf->lmnow->lmvar != LM_UNDEF && jconf->lmnow->lmvar != LM_DFA_WORD) { //jlog("ERROR: \"-wed\" only valid for isolated word recognition mode\n"); //return FALSE; //} if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->pass1.determine_score_thres = atof(tmparg); GET_TMPARG; jconf->searchnow->pass1.determine_duration_thres = atoi(tmparg); continue;#endif } else if (strmatch(argv[i], "-inactive")) { /* start inactive */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; jconf->searchnow->sw.start_inactive = TRUE; continue; } else if (strmatch(argv[i], "-active")) { /* start active (default) */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; jconf->searchnow->sw.start_inactive = FALSE; continue; } else if (strmatch(argv[i],"-fallback1pass")) { /* use 1st pass result on search failure */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; jconf->searchnow->sw.fallback_pass1_flag = TRUE; continue;#ifdef ENABLE_PLUGIN } else if (strmatch(argv[i],"-plugindir")) { GET_TMPARG; plugin_load_dirs(tmparg); continue;#endif } if (argv[i][0] == '-' && strlen(argv[i]) == 2) { /* 1-letter options */ switch(argv[i][1]) { case 'h': /* hmmdefs */ if (!check_section(jconf, argv[i], JCONF_OPT_AM)) return FALSE; FREE_MEMORY(jconf->amnow->hmmfilename); GET_TMPARG; jconf->amnow->hmmfilename = filepath(tmparg, cwd); break; case 'v': /* dictionary */ if (!check_section(jconf, argv[i], JCONF_OPT_LM)) return FALSE; FREE_MEMORY(jconf->lmnow->dictfilename); GET_TMPARG; jconf->lmnow->dictfilename = filepath(tmparg, cwd); break; case 'w': /* word list (isolated word recognition) */ if (!check_section(jconf, argv[i], JCONF_OPT_LM)) return FALSE; GET_TMPARG; if (multigram_add_prefix_list(tmparg, cwd, jconf->lmnow, LM_DFA_WORD) == FALSE) { jlog("ERROR: m_options: failed to read some word list\n"); return FALSE; } break; case 'd': /* binary N-gram */ /* lmvar should be overriden by the content of the binary N-gram */ if (!check_section(jconf, argv[i], JCONF_OPT_LM)) return FALSE; FREE_MEMORY(jconf->lmnow->ngram_filename); FREE_MEMORY(jconf->lmnow->ngram_filename_lr_arpa); FREE_MEMORY(jconf->lmnow->ngram_filename_rl_arpa); GET_TMPARG; jconf->lmnow->ngram_filename = filepath(tmparg, cwd); break; case 'b': /* beam width in 1st pass */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->pass1.specified_trellis_beam_width = atoi(tmparg); break; case 's': /* stack size in 2nd pass */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->pass2.stack_size = atoi(tmparg); break; case 'n': /* N-best search */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->pass2.nbest = atoi(tmparg); break; case 'm': /* upper limit of hypothesis generation */ if (!check_section(jconf, argv[i], JCONF_OPT_SR)) return FALSE; GET_TMPARG; jconf->searchnow->pass2.hypo_overflow = atoi(tmparg); break; default: //jlog("ERROR: m_options: wrong argument: %s\n", argv[0], argv[i]); //return FALSE; unknown_opt = TRUE; } } else { /* error */ //jlog("ERROR: m_options: wrong argument: %s\n", argv[0], argv[i]); //return FALSE; unknown_opt = TRUE; } if (unknown_opt) { /* call user-side option processing */ switch(useropt_exec(jconf, argv, argc, &i)) { case 0: /* does not match user-side options */ jlog("ERROR: m_options: wrong argument: \"%s\"\n", argv[i]); return FALSE; case -1: /* Error in user-side function */ jlog("ERROR: m_options: error in processing \"%s\"\n", argv[i]); return FALSE; } } } /* set default values if not specified yet */ for(atmp=jconf->am_root;atmp;atmp=atmp->next) { if (!atmp->spmodel_name) { atmp->spmodel_name = strcpy((char*)mymalloc(strlen(SPMODEL_NAME_DEFAULT)+1), SPMODEL_NAME_DEFAULT); } } for(ltmp=jconf->lm_root;ltmp;ltmp=ltmp->next) { if (!ltmp->head_silname) { ltmp->head_silname = strcpy((char*)mymalloc(strlen(BEGIN_WORD_DEFAULT)+1), BEGIN_WORD_DEFAULT); } if (!ltmp->tail_silname) { ltmp->tail_silname = strcpy((char*)mymalloc(strlen(END_WORD_DEFAULT)+1), END_WORD_DEFAULT); } if (!ltmp->iwspentry) { ltmp->iwspentry = strcpy((char*)mymalloc(strlen(IWSPENTRY_DEFAULT)+1), IWSPENTRY_DEFAULT); } }#ifdef USE_NETAUDIO if (!jconf->input.netaudio_devname) { jconf->input.netaudio_devname = strcpy((char*)mymalloc(strlen(NETAUDIO_DEVNAME)+1), NETAUDIO_DEVNAME); }#endif /* USE_NETAUDIO */ return TRUE;}/** * <JA> * オプション簇息のメモリ挝拌を豺庶する. * </JA> * <EN> * Free memories of variables allocated by option arguments. * </EN> * * @param jconf [i/o] jconf configuration data * * @callgraph * @callergraph */voidopt_release(Jconf *jconf){ JCONF_AM *am; JCONF_LM *lm; JCONF_SEARCH *s; FREE_MEMORY(jconf->input.inputlist_filename);#ifdef USE_NETAUDIO FREE_MEMORY(jconf->input.netaudio_devname);#endif /* USE_NETAUDIO */ FREE_MEMORY(jconf->reject.gmm_filename); FREE_MEMORY(jconf->reject.gmm_reject_cmn_string); for(am=jconf->am_root;am;am=am->next) { FREE_MEMORY(am->hmmfilename); FREE_MEMORY(am->mapfilename); FREE_MEMORY(am->spmodel_name); FREE_MEMORY(am->hmm_gs_filename); FREE_MEMORY(am->analysis.cmnload_filename); FREE_MEMORY(am->analysis.cmnsave_filename); FREE_MEMORY(am->frontend.ssload_filename); } for(lm=jconf->lm_root;lm;lm=lm->next) { FREE_MEMORY(lm->ngram_filename); FREE_MEMORY(lm->ngram_filename_lr_arpa); FREE_MEMORY(lm->ngram_filename_rl_arpa); FREE_MEMORY(lm->dfa_filename); FREE_MEMORY(lm->head_silname); FREE_MEMORY(lm->tail_silname); FREE_MEMORY(lm->iwspentry); FREE_MEMORY(lm->dictfilename); multigram_remove_gramlist(lm); } for(s=jconf->search_root;s;s=s->next) { FREE_MEMORY(s->successive.pausemodelname); }}/* end of file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -