/** * @file jconf.h * * * @brief Jconf 構造体の定義 * * * * * @brief Jconf structure * * * *
 * JCONF
 *   +- JCONF_AM[] (linked list)
 *   +- JCONF_LM[] (linked list)
 *   +- JCONF_SEARCH[] (linked list) -> each has pointer to *JCONF_AM, *JCONF_LM
 *   +- JCONF_AM for GMM
 *   +- (engine configurations)
 * 
* * @author Akinobu Lee * @date Fri Feb 16 13:42:28 2007 * * $Revision: 1.15 $ * */ /* * Copyright (c) 1991-2012 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2012 Julius project team, Nagoya Institute of Technology * All rights reserved */ /* */ #ifndef __J_JCONF_H__ #define __J_JCONF_H__ #include #include #include #include #include #include #include #include #include /** * Maximum length of module name string * */ #define JCONF_MODULENAME_MAXLEN 64 /** * Default module name if not specified (in case of old jconf) * */ #define JCONF_MODULENAME_DEFAULT "_default" /** * Configuration parameters (AM) * */ typedef struct __jconf_am__ { /** * Unique ID * */ short id; /** * Unique name * */ char name[JCONF_MODULENAME_MAXLEN]; /** * HMM definition file (-h) */ char *hmmfilename; /** * HMMList file to map logical (tri)phones to physical models (-hlist) */ char *mapfilename; /** * Gaussian pruning method (-gprune) * Default: use value from compile-time engine configuration default. */ int gprune_method; /** * Number of Gaussian to compute per mixture on Gaussian pruning (-tmix) */ int mixnum_thres; /** * Logical HMM name of short pause model (-spmodel) * Default: "sp" */ char *spmodel_name; /** * GMS: HMM definition file for GMS (-gshmm) */ char *hmm_gs_filename; /** * GMS: number of mixture PDF to select (-gsnum) */ int gs_statenum; /** * Calculation method for outprob score of a lcdset on cross-word * triphone (-iwcd1) */ short iwcdmethod; /** * N-best states to be calculated on IWCD_NBEST (-iwcd1 best N) */ short iwcdmaxn; /** * Transition penalty of inter-word short pause (-iwsppenalty) * for multi-path mode */ LOGPROB iwsp_penalty; /** * force multipath mode * */ boolean force_multipath; /** * Acoustic Analysis Conditions. Parameter setting priority is: * user-specified > specified HTK Config > model-embedded > Julius default. * */ struct { /** * All MFCC computation parameters, actually used for recognition. */ Value para; /** * default parameters of Julius */ Value para_default; /** * parameters from binhmm header */ Value para_hmm; /** * parameters from HTK Config (-htkconf) */ Value para_htk; /** * CMN: load initial cepstral mean from file at startup (-cmnload) */ char *cmnload_filename; /** * CMN: update cepstral mean while recognition * (-cmnnoupdate to unset) */ boolean cmn_update; /** * CMN: save cepstral mean to file at end of every recognition (-cmnsave) */ char *cmnsave_filename; /** * CMN: MAP weight for initial cepstral mean on (-cmnmapweight) */ float cmn_map_weight; } analysis; /** * Frontend processing parameter for this AM * */ struct { /** * Alpha coefficient for spectral subtraction * */ float ss_alpha; /** * Flooring coefficient for spectral subtraction * */ float ss_floor; /** * SS: compute noise spectrum from head silence on file input (-sscalc) */ boolean sscalc; /** * With "-sscalc", specify noise length at input head in msec (-sscalclen) */ int sscalc_len; /** * Load noise spectrum data from file (-ssload), that was made by "mkss". */ char *ssload_filename; } frontend; /** * Plugin source ID when using plugin (gprune_method is GPRUNE_SEL_USER) */ int gprune_plugin_source; /* pointer to next instance */ struct __jconf_am__ *next; } JCONF_AM; /** * Name lister for language model configurations * */ typedef struct __jconf_lm_namelist__ { /** * Entry name */ char *name; /** * Pointer to next object */ struct __jconf_lm_namelist__ *next; } JCONF_LM_NAMELIST; /** * Language models (N-gram / DFA), dictionary, and related parameters. * */ typedef struct __jconf_lm__ { /** * Unique ID * */ short id; /** * Unique name * */ char name[JCONF_MODULENAME_MAXLEN]; /** * Language model type: one of LM_UNDEF, LM_NGRAM, LM_DFA * */ int lmtype; /** * Variation type of language model: one of LM_NGRAM, LM_DFA_GRAMMAR, * LM_DFA_WORD * */ int lmvar; /** * Word dictionary file (-v) */ char *dictfilename; /** * Silence word to be placed at beginning of speech (-silhead) for N-gram */ char *head_silname; /** * Silence word to be placed at end of search (-siltail) for N-gram */ char *tail_silname; /** * Skip error words in dictionary and continue (-forcedict) */ boolean forcedict_flag; /** * N-gram in binary format (-d) */ char *ngram_filename; /** * LR 2-gram in ARPA format (-nlr) */ char *ngram_filename_lr_arpa; /** * RL 3-gram in ARPA format (-nrl) */ char *ngram_filename_rl_arpa; /** * DFA grammar file (-dfa, for single use) */ char *dfa_filename; /** * List of grammars to be read at startup (-gram) (-gramlist) */ GRAMLIST *gramlist_root; /** * List of word lists to be read at startup (-w) (-wlist) */ GRAMLIST *wordlist_root; /** * Enable inter-word short pause handling on multi-path version (-iwsp) * for multi-path mode */ boolean enable_iwsp; /** * Enable automatic addition of "short pause word" to the dictionary * (-iwspword) for N-gram */ boolean enable_iwspword; /** * Dictionary entry to be added on "-iwspword" (-iwspentry) for N-gram */ char *iwspentry; #ifdef SEPARATE_BY_UNIGRAM /** * Number of best frequency words to be separated (linearized) * from lexicon tree (-sepnum) */ int separate_wnum; #endif /** * For isolated word recognition mode: name of head silence model */ char wordrecog_head_silence_model_name[MAX_HMMNAME_LEN]; /** * For isolated word recognition mode: name of tail silence model */ char wordrecog_tail_silence_model_name[MAX_HMMNAME_LEN]; /** * For isolated word recognition mode: name of silence as phone context */ char wordrecog_silence_context_name[MAX_HMMNAME_LEN]; /** * Name string of Unknown word for N-gram */ char unknown_name[UNK_WORD_MAXLEN]; /** * List of additional dictionary files */ JCONF_LM_NAMELIST *additional_dict_files; /** * List of additional dictionary entries */ JCONF_LM_NAMELIST *additional_dict_entries; /** * Pointer to next instance * */ struct __jconf_lm__ *next; } JCONF_LM; /** * Search parameters * */ typedef struct __jconf_search__ { /** * Unique ID * */ short id; /** * Unique name * */ char name[JCONF_MODULENAME_MAXLEN]; /** * Which AM configuration to refer * */ JCONF_AM *amconf; /** * Which LM configuration to refer * */ JCONF_LM *lmconf; /** * Compute only 1pass (-1pass) */ boolean compute_only_1pass; /** * context handling */ boolean ccd_handling; /** * force context-dependent handling */ boolean force_ccd_handling; /** * LM weights * */ struct { /** * N-gram Language model weight (-lmp) */ LOGPROB lm_weight; /** * N-gram Word insertion penalty (-lmp) */ LOGPROB lm_penalty; /** * N-gram Language model weight for 2nd pass (-lmp2) */ LOGPROB lm_weight2; /** * N-gram Word insertion penalty for 2nd pass (-lmp2) */ LOGPROB lm_penalty2; /** * N-gram Additional insertion penalty for transparent words (-transp) */ LOGPROB lm_penalty_trans; /** * Word insertion penalty for DFA grammar on 1st pass (-penalty1) */ LOGPROB penalty1; /** * Word insertion penalty for DFA grammar on 2nd pass (-penalty2) */ LOGPROB penalty2; /** * INTERNAL: TRUE if -lmp2 specified */ boolean lmp2_specified; /** * INTERNAL: TRUE if -lmp specified */ boolean lmp_specified; } lmp; /** * First pass parameters * */ struct { /** * Beam width of rank pruning for the 1st pass. If value is -1 * (not specified), system will guess the value from dictionary * size. If 0, a possible maximum value will be assigned to do * full search. */ int specified_trellis_beam_width; #ifdef SCORE_PRUNING /** * Another beam width for score pruning at the 1st pass. If value * is -1, or not specified, score pruning will be disabled. */ #endif LOGPROB score_pruning_width; #if defined(WPAIR) && defined(WPAIR_KEEP_NLIMIT) /** * Keeps only N token on word-pair approximation (-nlimit) */ int wpair_keep_nlimit; #endif #ifdef HASH_CACHE_IW /** * Inter-word LM cache size rate (-iwcache) */ int iw_cache_rate; #endif /** * (DEBUG) use old build_wchmm() instead of build_wchmm2() for lexicon * construction (-oldtree) */ boolean old_tree_function_flag; #ifdef DETERMINE /** * (EXPERIMENTAL) score threshold between maximum node score and * maximum word end score for early word determination * */ LOGPROB determine_score_thres; /** * (EXPERIMENTAL) frame duration threshold for early word determination * */ int determine_duration_thres; #endif /* DETERMINE */ } pass1; /** * Second pass parameters * */ struct { /** * Search until N-best sentences are found (-n). Also see "-output". */ int nbest; /** * Word beam width of 2nd pass. -1 means no beaming (-b2) */ int enveloped_bestfirst_width; #ifdef SCAN_BEAM /** * Score beam threshold of 2nd pass (-sb) */ LOGPROB scan_beam_thres; #endif /** * Hypothesis overflow threshold at 2nd pass (-m) */ int hypo_overflow; /** * Hypothesis stack size of 2nd pass (-s) */ int stack_size; /** * Get next words from word trellis with a range of this frames * on 2nd pass (-lookuprange) */ int lookup_range; /** * Limit expansion words for trellis words on neighbor frames * at 2nd pass of DFA for speedup (-looktrellis) */ boolean looktrellis_flag; } pass2; /** * Word graph output * */ struct { /** * GraphOut: if enabled, graph search is enabled. * */ boolean enabled; /** * GraphOut: if enabled, output word graph * */ boolean lattice; /** * GraphOut: if enabled, generate confusion network * */ boolean confnet; /** * GraphOut: allowed margin for post-merging on word graph generation * (-graphrange) if set to -1, same word with different phone context * will be separated. */ int graph_merge_neighbor_range; #ifdef GRAPHOUT_DEPTHCUT /** * GraphOut: density threshold to cut word graph at post-processing. * (-graphcut) Setting larger value is safe for all condition. */ int graphout_cut_depth; #endif #ifdef GRAPHOUT_LIMIT_BOUNDARY_LOOP /** * GraphOut: limitation of iteration loop for word boundary adjustment * (-graphboundloop) */ int graphout_limit_boundary_loop_num; #endif #ifdef GRAPHOUT_SEARCH_DELAY_TERMINATION /** * GraphOut: delay the termination of search on graph merging until * at least one sentence candidate is found * (-graphsearchdelay / -nographsearchdelay) */ boolean graphout_search_delay; #endif } graph; /** * Successive decoding (--enable-sp-segment) * */ struct { /** * TRUE if short-pause segmentation enabled for this instance * */ boolean enabled; /** * Length threshold to detect short-pause segment in frames */ int sp_frame_duration; /** * name string of pause model * */ char *pausemodelname; #ifdef SPSEGMENT_NAIST /** * Backstep margin when speech trigger detected by NAIST short-pause * detection system * */ int sp_margin; /** * Delay frame of speech trigger detection in NAIST short-pause * detection system * */ int sp_delay; #endif } successive; /** * Annotation to the output * */ struct { #ifdef CONFIDENCE_MEASURE /** * Scaling factor for confidence scoring (-cmalpha) */ LOGPROB cm_alpha; #ifdef CM_MULTIPLE_ALPHA /** * Begin value of alpha */ LOGPROB cm_alpha_bgn; /** * End value of alpha */ LOGPROB cm_alpha_end; /** * Number of test values (will be set from above values) */ int cm_alpha_num; /** * Step value of alpha */ LOGPROB cm_alpha_step; #endif #ifdef CM_SEARCH_LIMIT /** * Cut-off threshold for generated hypo. for confidence decoding (-cmthres) */ LOGPROB cm_cut_thres; #endif #ifdef CM_SEARCH_LIMIT_POPO /** * Cut-off threshold for popped hypo. for confidence decoding (-cmthres2) */ LOGPROB cm_cut_thres_pop; #endif #endif /* CONFIDENCE_MEASURE */ /** * Forced alignment: per word (-walign) */ boolean align_result_word_flag; /** * Forced alignment: per phoneme (-palign) */ boolean align_result_phoneme_flag; /** * Forced alignment: per state (-salign) */ boolean align_result_state_flag; } annotate; /** * Output configurations * */ struct { /** * Result: number of sentence to output (-output) , also see @a nbest (-n). */ int output_hypo_maxnum; /** * Result: output partial recognition result on the 1st pass (-progout) */ boolean progout_flag; /** * Result: Progressive output interval on 1st pass in msec (-proginterval) */ int progout_interval; /** * Result: INTERNAL: interval in number of frames */ int progout_interval_frame; /** * Get results for all grammars independently on 2nd pass on DFA * (-multigramout / -nomultigramout) */ boolean multigramout_flag; } output; /** * Misc. switches * */ struct { /** * Enter trellis interactive check routine after boot (-check trellis) */ boolean trellis_check_flag; /** * Enter triphone existence check routine after boot (-check triphone) */ boolean triphone_check_flag; /** * Enter lexicon structure consulting mode after boot (-check wchmm) */ boolean wchmm_check_flag; /** * should be set to TRUE at startup when this process should start * with inactive status * */ boolean start_inactive; /** * In case the 2nd pass search fails, this option specifies Julius * to use the result of the previous 1st pass as final result. * When this is TRUE, no RECOGFAIL occur. * */ boolean fallback_pass1_flag; } sw; /* pointer to next instance */ struct __jconf_search__ *next; } JCONF_SEARCH; /** * Configuration parameters (global) * */ typedef struct __Jconf__ { /** * Input source information, gathered from all AM conf. */ struct { /** * Input source type. (waveform / mfc) * */ int type; /** * Input source. * */ int speech_input; /** * Input device. * */ int device; /** * id of the selected plug-in if using plugin * */ int plugin_source; /** * Sampling frequency * */ int sfreq; /** * Sampling period in 100ns units * */ int period; /** * Window size in samples, similar to WINDOWSIZE in HTK (unit is different) * */ int framesize; /** * Frame shift length in samples * */ int frameshift; /** * Use 48kHz input and perform down sampling to 16kHz (-48) */ boolean use_ds48to16; /** * List of input files for rawfile / mfcfile input (-filelist) */ char *inputlist_filename; /** * Port number for adinnet input (-adport) */ int adinnet_port; #ifdef USE_NETAUDIO /** * Host/unit name for NetAudio/DatLink input (-NA) */ char *netaudio_devname; #endif /** * Check input parameter type with header of the hmmdefs * for parameter file input. FALSE avoids the check. */ boolean paramtype_check_flag; } input; /** * Configurations for Voice activity detection * */ struct { /** * Input level threshold from 0 to 32767 (-lv) */ int level_thres; /** * Head margin in msec (-headmargin) */ int head_margin_msec; /** * Tail margin in msec (-tailmargin) */ int tail_margin_msec; /** * Zero cross number threshold per a second (-zc) */ int zero_cross_num; /** * Silence detection and cutting: 0=off, 1=on, 2=accept device default * (-cutsilence / -nocutsilence) */ int silence_cut; /** * Chunk size in samples, i.e. processing unit for audio input * detection. Segmentation will be done by this unit. * */ int chunk_size; #ifdef GMM_VAD /** * (GMM_VAD) Backstep margin when speech trigger is detected. * */ int gmm_margin; /** * (GMM_VAD) Up trigger threshold of GMM likelihood, where GMM * likelihood is defined as \[ \max_{m \in M_v} p(x|m) - \max_{m * \in M_n} p(x|m) \] where $M_v$ is a set of voice GMM, and $M_n$ * is a set of noise GMM whose names are specified by * "-gmmreject". Julius calculate this value for each input * frame, and average it for the last gmm_margin frames, and when * the value gets higher than this value, Julius will start recognition. */ float gmm_uptrigger_thres; /** * (GMM_VAD) Down trigger threshold of GMM likelihood, where GMM * likelihood is defined as \[ \max_{m \in M_v} p(x|m) - \max_{m * \in M_n} p(x|m) \] where $M_v$ is a set of voice GMM, and $M_n$ * is a set of noise GMM whose names are specified by * "-gmmreject". Julius calculate this value for each input * frame, and average it for the last gmm_margin frames, and when * the value gets lower than this value, Julius will stop recognition. */ float gmm_downtrigger_thres; #endif } detect; /** * Pre-processing parameters before frontends * */ struct { /** * Strip off zero samples (-nostrip to unset) */ boolean strip_zero_sample; /** * Remove DC offset by zero mean (-zmean / -nozmean) */ boolean use_zmean; /** * Input level scaling factor (-lvscale) */ float level_coef; } preprocess; /** * Models and parameters for input rejection * */ struct { /** * GMM definition file (-gmm) */ char *gmm_filename; /** * Number of Gaussians to be computed on GMM calculation (-gmmnum) */ int gmm_gprune_num; /** * Comma-separated list of GMM model name to be rejected (-gmmreject) */ char *gmm_reject_cmn_string; /** * Length threshold to reject input (-rejectshort) */ int rejectshortlen; #ifdef POWER_REJECT /** * Rejection power threshold * */ float powerthres; #endif } reject; /** * decoding parameters to control recognition process (global) * */ struct { /** * INTERNAL: do on-the-fly decoding if TRUE (value depends on * device default and forced_realtime. */ boolean realtime_flag; /** * INTERNAL: TRUE if either of "-realtime" or "-norealtime" is * explicitly specified by user. When TRUE, the user-specified value * in forced_realtime will be applied to realtime_flag. */ boolean force_realtime_flag; /** * Force on-the-fly decoding on 1st pass with audio input and * MAP-CMN (-realtime / -norealtime) */ boolean forced_realtime; /** * TRUE if a kind of speech segmentation is enabled * */ boolean segment; } decodeopt; /** * Configurations for acoustic models (HMM, HMMList) and am-specific * parameters * */ JCONF_AM *am_root; /** * Language models (N-gram / DFA), dictionary, and related parameters. * */ JCONF_LM *lm_root; /** * Search parameters (LM/AM independent), annotation, * and output parameters * */ JCONF_SEARCH *search_root; /** * Current JCONF_AM for reading options * */ JCONF_LM *lmnow; /** * Current JCONF_AM for reading options * */ JCONF_AM *amnow; /** * Current JCONF_AM for reading options * */ JCONF_SEARCH *searchnow; /** * Config parameters for GMM computation. * (only gmmconf->analysis.* is used) * */ JCONF_AM *gmm; /** * Current option declaration mode while loading options * */ short optsection; /** * Whether option sectioning ristriction should be applied or not * */ boolean optsectioning; } Jconf; enum { JCONF_OPT_DEFAULT, JCONF_OPT_GLOBAL, JCONF_OPT_AM, JCONF_OPT_LM, JCONF_OPT_SR, SIZEOF_JCONF_OPT }; #endif /* __J_JCONF_H__ */ /* ======================================================= An OLD variable name mapping from old global.h to common.h These data are bogus, left here only for reference ======================================================= result_reorder_flag -> DELETED adinnet_port ->jconf.input.adinnet_port align_result_phoneme_flag ->jconf.annotate.align_result_phoneme_flag align_result_state_flag ->jconf.annotate.align_result_state_flag align_result_word_flag ->jconf.annotate.align_result_word_flag backmax ->recog.backmax backtrellis ->recog.backtrellis ccd_flag ->jconf.am.ccd_flag ccd_flag_force ->jconf.am.ccd_flag_force cm_alpha ->jconf.annotate.cm_alpha cm_alpha_bgn ->jconf.annotate.cm_alpha_bgn cm_alpha_end ->jconf.annotate.cm_alpha_end cm_alpha_num ->jconf.annotate.cm_alpha_num cm_alpha_step ->jconf.annotate.cm_alpha_step cm_cut_thres ->jconf.annotate.cm_cut_thres cm_cut_thres_pop ->jconf.annotate.cm_cut_thres_pop cmn_loaded ->recog.cmn_loaded cmn_map_weight ->jconf.frontend.cmn_map_weight cmn_update ->jconf.frontend.cmn_update cmnload_filename ->jconf.frontend.cmnload_filename cmnsave_filename ->jconf.frontend.cmnsave_filename compute_only_1pass ->jconf.sw.compute_only_1pass dfa ->model.dfa dfa_filename ->jconf.lm.dfa_filename dictfilename ->jconf.lm.dictfilename enable_iwsp ->jconf.lm.enable_iwsp enable_iwspword ->jconf.lm.enable_iwspword enveloped_bestfirst_width ->jconf.search.pass2.enveloped_bestfirst_width force_realtime_flag ->jconf.search.pass1.force_realtime_flag forced_realtime ->jconf.search.pass1.forced_realtime forcedict_flag ->jconf.lm.forcedict_flag framemaxscore ->recog.framemaxscore from_code ->jconf.output.from_code gmm ->model.gmm gmm_filename ->jconf.reject.gmm_filename gmm_gprune_num ->jconf.reject.gmm_gprune_num gmm_reject_cmn_string ->jconf.reject.gmm_reject_cmn_string gprune_method ->jconf.am.gprune_method gramlist ->model.grammars gramlist_root ->jconf.lm.gramlist_root graph_merge_neighbor_range ->jconf.graph.graph_merge_neighbor_range graph_totalwordnum ->recog.graph_totalwordnum graphout_cut_depth ->jconf.graph.graphout_cut_depth graphout_limit_boundary_loop_num ->jconf.graph.graphout_limit_boundary_loop_num graphout_search_delay ->jconf.graph.graphout_search_delay gs_statenum ->jconf.am.gs_statenum head_margin_msec ->jconf.detect.head_margin_msec head_silname ->jconf.lm.head_silname hmm_gs ->model.hmm_gs hmm_gs_filename ->jconf.am.hmm_gs_filename hmmfilename ->jconf.am.hmmfilename hmminfo ->model.hmminfo hypo_overflow ->jconf.search.pass2.hypo_overflow inputlist_filename ->jconf.input.inputlist_filename iw_cache_rate ->jconf.search.pass1.iw_cache_rate iwcdmaxn ->jconf.search.pass1.iwcdmaxn iwcdmethod ->jconf.search.pass1.iwcdmethod iwsp_penalty ->jconf.lm.iwsp_penalty iwspentry ->jconf.lm.iwspentry level_thres ->jconf.detect.level_thres lm_penalty ->jconf.lm.lm_penalty lm_penalty2 ->jconf.lm.lm_penalty2 lm_penalty_trans ->jconf.lm.lm_penalty_trans lm_weight ->jconf.lm.lm_weight lm_weight2 ->jconf.lm.lm_weight2 lmp_specified ->jconf.lm.lmp_specified lmp2_specified ->jconf.lm.lmp2_specified looktrellis_flag ->jconf.search.pass2.looktrellis_flag lookup_range ->jconf.search.pass2.lookup_range mapfilename ->jconf.am.mapfilename mixnum_thres ->jconf.am.mixnum_thres module_mode -> (app) module_port -> (app) module_sd -> (app) multigramout_flag ->jconf.output.multigramout_flag nbest ->jconf.search.pass2.nbest netaudio_devname ->jconf.input.netaudio_devname ngram ->model.ngram ngram_filename ->jconf.lm.ngram_filename ngram_filename_lr_arpa ->jconf.lm.ngram_filename_lr_arpa ngram_filename_rl_arpa ->jconf.lm.ngram_filename_rl_arpa old_iwcd_flag -> USE_OLD_IWCD (define.h) old_tree_function_flag ->jconf.search.pass1.old_tree_function_flag output_hypo_maxnum ->jconf.output.output_hypo_maxnum para ->jconf.analysis.para para_default ->jconf.analysis.para_default para_hmm ->jconf.analysis.para_hmm para_htk ->jconf.analysis.para_htk paramtype_check_flag ->jconf.analysis.paramtype_check_flag pass1_score ->recog.pass1_score pass1_wnum ->recog.pass1_wnum pass1_wseq ->recog.pass1_wseq penalty1 ->jconf.lm.penalty1 penalty2 ->jconf.lm.penalty2 peseqlen ->recog.peseqlen progout_flag ->jconf.output.progout_flag progout_interval ->jconf.output.progout_interval progout_interval_frame (beam.c) ->jconf.output.progout_interval realtime_flag ->jconf.search.pass1.realtime_flag record_dirname ->jconf.output.record_dirname rejectshortlen ->jconf.reject.rejectshortlen rest_param ->recog.rest_param result_output -> (app) scan_beam_thres ->jconf.search.pass2.scan_beam_thres separate_score_flag ->jconf.output.separate_score_flag separate_wnum ->jconf.search.pass1.separate_wnum silence_cut ->jconf.detect.silence_cut sp_break_2_begin_word ->recog.sp_break_2_begin_word sp_break_2_end_word ->recog.sp_break_2_end_word sp_break_last_nword ->recog.sp_break_last_nword sp_break_last_nword_allow_override ->recog.sp_break_last_nword_allow_override sp_break_last_word ->recog.sp_break_last_word sp_frame_duration ->jconf.successive.sp_frame_duration specified_trellis_beam_width ->jconf.search.pass1.specified_trellis_beam_width speech ->recog.speech speech_input ->jconf.input.speech_input speechlen ->recog.speechlen spmodel_name ->jconf.am.spmodel_name ssbuf ->recog.ssbuf sscalc ->jconf.frontend.sscalc sscalc_len ->jconf.frontend.sscalc_len sslen ->recog.sslen ssload_filename ->jconf.frontend.ssload_filename stack_size ->jconf.search.pass2.stack_size strip_zero_sample ->jconf.frontend.strip_zero_sample tail_margin_msec ->jconf.detect.tail_margin_msec tail_silname ->jconf.lm.tail_silname to_code ->jconf.output.to_code trellis_beam_width ->recog.trellis_beam_width trellis_check_flag ->jconf.sw.trellis_check_flag triphone_check_flag ->jconf.sw.triphone_check_flag use_ds48to16 ->jconf.input.use_ds48to16 use_zmean ->jconf.frontend.use_zmean wchmm ->recog.wchmm wchmm_check_flag ->jconf.sw.wchmm_check_flag winfo ->model.winfo wpair_keep_nlimit ->jconf.search.pass1.wpair_keep_nlimit zero_cross_num ->jconf.detect.zero_cross_num verbose_flag -> (remain in global.h) debug2_flag -> (remain in global.h) */