00001 00029 /* 00030 * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University 00031 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 00032 * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology 00033 * All rights reserved 00034 */ 00035 00036 /* 00037 */ 00038 00039 #ifndef __J_JCONF_H__ 00040 #define __J_JCONF_H__ 00041 00042 #include <sent/stddefs.h> 00043 #include <sent/hmm.h> 00044 #include <sent/vocabulary.h> 00045 #include <sent/ngram2.h> 00046 #include <sent/dfa.h> 00047 #include <sent/mfcc.h> 00048 #include <julius/wchmm.h> 00049 #include <julius/search.h> 00050 #include <julius/callback.h> 00051 00056 #define JCONF_MODULENAME_MAXLEN 64 00057 00062 #define JCONF_MODULENAME_DEFAULT "_default" 00063 00068 typedef struct __jconf_am__ { 00069 00074 short id; 00075 00080 char name[JCONF_MODULENAME_MAXLEN]; 00081 00085 char *hmmfilename; 00089 char *mapfilename; 00094 int gprune_method; 00098 int mixnum_thres; 00103 char *spmodel_name; 00107 char *hmm_gs_filename; 00111 int gs_statenum; 00112 00117 short iwcdmethod; 00118 00122 short iwcdmaxn; 00123 00128 LOGPROB iwsp_penalty; 00129 00134 boolean force_multipath; 00135 00141 struct { 00145 Value para; 00149 Value para_default; 00153 Value para_hmm; 00157 Value para_htk; 00161 char *cmnload_filename; 00166 boolean cmn_update; 00170 char *cmnsave_filename; 00174 float cmn_map_weight; 00175 00176 } analysis; 00177 00178 00183 struct { 00188 float ss_alpha; 00189 00194 float ss_floor; 00195 00199 boolean sscalc; 00200 00204 int sscalc_len; 00205 00209 char *ssload_filename; 00210 } frontend; 00211 00215 int gprune_plugin_source; 00216 00217 /* pointer to next instance */ 00218 struct __jconf_am__ *next; 00219 00220 } JCONF_AM; 00221 00226 typedef struct __jconf_lm__ { 00227 00232 short id; 00233 00238 char name[JCONF_MODULENAME_MAXLEN]; 00239 00244 int lmtype; 00245 00251 int lmvar; 00252 00256 char *dictfilename; 00257 00261 char *head_silname; 00265 char *tail_silname; 00266 00270 boolean forcedict_flag; 00271 00275 char *ngram_filename; 00279 char *ngram_filename_lr_arpa; 00283 char *ngram_filename_rl_arpa; 00284 00288 char *dfa_filename; 00289 00293 GRAMLIST *gramlist_root; 00294 00298 GRAMLIST *wordlist_root; 00299 00304 boolean enable_iwsp; 00305 00310 boolean enable_iwspword; 00314 char *iwspentry; 00315 00316 #ifdef SEPARATE_BY_UNIGRAM 00317 00321 int separate_wnum; 00322 #endif 00323 00327 char wordrecog_head_silence_model_name[MAX_HMMNAME_LEN]; 00331 char wordrecog_tail_silence_model_name[MAX_HMMNAME_LEN]; 00335 char wordrecog_silence_context_name[MAX_HMMNAME_LEN]; 00336 00340 char unknown_name[UNK_WORD_MAXLEN]; 00341 00346 struct __jconf_lm__ *next; 00347 00348 } JCONF_LM; 00349 00354 typedef struct __jconf_search__ { 00355 00360 short id; 00361 00366 char name[JCONF_MODULENAME_MAXLEN]; 00367 00372 JCONF_AM *amconf; 00373 00378 JCONF_LM *lmconf; 00379 00383 boolean compute_only_1pass; 00384 00388 boolean ccd_handling; 00389 00393 boolean force_ccd_handling; 00394 00399 struct { 00403 LOGPROB lm_weight; 00407 LOGPROB lm_penalty; 00411 LOGPROB lm_weight2; 00415 LOGPROB lm_penalty2; 00419 LOGPROB lm_penalty_trans; 00420 00424 LOGPROB penalty1; 00428 LOGPROB penalty2; 00429 00433 boolean lmp2_specified; 00434 00438 boolean lmp_specified; 00439 } lmp; 00440 00445 struct { 00451 int specified_trellis_beam_width; 00452 00453 #if defined(WPAIR) && defined(WPAIR_KEEP_NLIMIT) 00454 00457 int wpair_keep_nlimit; 00458 #endif 00459 00460 #ifdef HASH_CACHE_IW 00461 00464 int iw_cache_rate; 00465 #endif 00466 00471 boolean old_tree_function_flag; 00472 00473 #ifdef DETERMINE 00474 00479 LOGPROB determine_score_thres; 00480 00485 int determine_duration_thres; 00486 00487 #endif /* DETERMINE */ 00488 00489 00490 } pass1; 00491 00496 struct { 00500 int nbest; 00504 int enveloped_bestfirst_width; 00505 #ifdef SCAN_BEAM 00506 00509 LOGPROB scan_beam_thres; 00510 #endif 00511 00514 int hypo_overflow; 00518 int stack_size; 00523 int lookup_range; 00524 00529 boolean looktrellis_flag; 00530 00531 } pass2; 00532 00537 struct { 00538 00543 boolean enabled; 00544 00549 boolean lattice; 00550 00555 boolean confnet; 00556 00562 int graph_merge_neighbor_range; 00563 00564 #ifdef GRAPHOUT_DEPTHCUT 00565 00569 int graphout_cut_depth; 00570 #endif 00571 00572 #ifdef GRAPHOUT_LIMIT_BOUNDARY_LOOP 00573 00577 int graphout_limit_boundary_loop_num; 00578 #endif 00579 00580 #ifdef GRAPHOUT_SEARCH_DELAY_TERMINATION 00581 00586 boolean graphout_search_delay; 00587 #endif 00588 00589 } graph; 00590 00595 struct { 00596 00601 boolean enabled; 00602 00606 int sp_frame_duration; 00607 00612 char *pausemodelname; 00613 00614 #ifdef SPSEGMENT_NAIST 00615 00620 int sp_margin; 00621 00627 int sp_delay; 00628 #endif 00629 00630 } successive; 00631 00632 00637 struct { 00638 00639 #ifdef CONFIDENCE_MEASURE 00640 00643 LOGPROB cm_alpha; 00644 00645 #ifdef CM_MULTIPLE_ALPHA 00646 00649 LOGPROB cm_alpha_bgn; 00653 LOGPROB cm_alpha_end; 00657 int cm_alpha_num; 00661 LOGPROB cm_alpha_step; 00662 #endif 00663 00664 #ifdef CM_SEARCH_LIMIT 00665 00668 LOGPROB cm_cut_thres; 00669 #endif 00670 00671 #ifdef CM_SEARCH_LIMIT_POPO 00672 00675 LOGPROB cm_cut_thres_pop; 00676 #endif 00677 00678 #endif /* CONFIDENCE_MEASURE */ 00679 00680 00684 boolean align_result_word_flag; 00688 boolean align_result_phoneme_flag; 00692 boolean align_result_state_flag; 00693 00694 } annotate; 00695 00700 struct { 00704 int output_hypo_maxnum; 00708 boolean progout_flag; 00712 int progout_interval; 00716 int progout_interval_frame; 00717 00722 boolean multigramout_flag; 00723 00724 } output; 00725 00730 struct { 00734 boolean trellis_check_flag; 00738 boolean triphone_check_flag; 00742 boolean wchmm_check_flag; 00748 boolean start_inactive; 00755 boolean fallback_pass1_flag; 00756 00757 } sw; 00758 00759 /* pointer to next instance */ 00760 struct __jconf_search__ *next; 00761 00762 } JCONF_SEARCH; 00763 00768 typedef struct __Jconf__ { 00769 00773 struct { 00774 00779 int type; 00780 00785 int speech_input; 00786 00791 int device; 00792 00797 int plugin_source; 00798 00803 long sfreq; 00808 long period; 00813 int framesize; 00818 int frameshift; 00819 00823 boolean use_ds48to16; 00827 char *inputlist_filename; 00831 int adinnet_port; 00832 #ifdef USE_NETAUDIO 00833 00836 char *netaudio_devname; 00837 #endif 00838 00842 boolean paramtype_check_flag; 00843 00844 } input; 00845 00850 struct { 00854 int level_thres; 00858 int head_margin_msec; 00862 int tail_margin_msec; 00866 int zero_cross_num; 00871 int silence_cut; 00872 #ifdef GMM_VAD 00873 00877 int gmm_margin; 00887 float gmm_uptrigger_thres; 00897 float gmm_downtrigger_thres; 00898 #endif 00899 } detect; 00900 00905 struct { 00906 00910 boolean strip_zero_sample; 00911 00915 boolean use_zmean; 00916 00917 } preprocess; 00918 00923 struct { 00927 char *gmm_filename; 00931 int gmm_gprune_num; 00935 char *gmm_reject_cmn_string; 00939 int rejectshortlen; 00940 #ifdef POWER_REJECT 00941 00945 float powerthres; 00946 #endif 00947 } reject; 00948 00953 struct { 00958 boolean realtime_flag; 00959 00965 boolean force_realtime_flag; 00966 00971 boolean forced_realtime; 00972 00977 boolean segment; 00978 00979 } decodeopt; 00980 00986 JCONF_AM *am_root; 00987 00992 JCONF_LM *lm_root; 00993 00999 JCONF_SEARCH *search_root; 01000 01005 JCONF_LM *lmnow; 01010 JCONF_AM *amnow; 01015 JCONF_SEARCH *searchnow; 01016 01022 JCONF_AM *gmm; 01023 01028 short optsection; 01029 01034 boolean optsectioning; 01035 01036 01037 } Jconf; 01038 01039 enum { 01040 JCONF_OPT_DEFAULT, 01041 JCONF_OPT_GLOBAL, 01042 JCONF_OPT_AM, 01043 JCONF_OPT_LM, 01044 JCONF_OPT_SR, 01045 SIZEOF_JCONF_OPT 01046 }; 01047 01048 #endif /* __J_JCONF_H__ */ 01049 01050 /* 01051 01052 ======================================================= 01053 An OLD variable name mapping from old global.h to common.h 01054 01055 These data are bogus, left here only for reference 01056 ======================================================= 01057 01058 result_reorder_flag -> DELETED 01059 adinnet_port ->jconf.input.adinnet_port 01060 align_result_phoneme_flag ->jconf.annotate.align_result_phoneme_flag 01061 align_result_state_flag ->jconf.annotate.align_result_state_flag 01062 align_result_word_flag ->jconf.annotate.align_result_word_flag 01063 backmax ->recog.backmax 01064 backtrellis ->recog.backtrellis 01065 ccd_flag ->jconf.am.ccd_flag 01066 ccd_flag_force ->jconf.am.ccd_flag_force 01067 cm_alpha ->jconf.annotate.cm_alpha 01068 cm_alpha_bgn ->jconf.annotate.cm_alpha_bgn 01069 cm_alpha_end ->jconf.annotate.cm_alpha_end 01070 cm_alpha_num ->jconf.annotate.cm_alpha_num 01071 cm_alpha_step ->jconf.annotate.cm_alpha_step 01072 cm_cut_thres ->jconf.annotate.cm_cut_thres 01073 cm_cut_thres_pop ->jconf.annotate.cm_cut_thres_pop 01074 cmn_loaded ->recog.cmn_loaded 01075 cmn_map_weight ->jconf.frontend.cmn_map_weight 01076 cmn_update ->jconf.frontend.cmn_update 01077 cmnload_filename ->jconf.frontend.cmnload_filename 01078 cmnsave_filename ->jconf.frontend.cmnsave_filename 01079 compute_only_1pass ->jconf.sw.compute_only_1pass 01080 dfa ->model.dfa 01081 dfa_filename ->jconf.lm.dfa_filename 01082 dictfilename ->jconf.lm.dictfilename 01083 enable_iwsp ->jconf.lm.enable_iwsp 01084 enable_iwspword ->jconf.lm.enable_iwspword 01085 enveloped_bestfirst_width ->jconf.search.pass2.enveloped_bestfirst_width 01086 force_realtime_flag ->jconf.search.pass1.force_realtime_flag 01087 forced_realtime ->jconf.search.pass1.forced_realtime 01088 forcedict_flag ->jconf.lm.forcedict_flag 01089 framemaxscore ->recog.framemaxscore 01090 from_code ->jconf.output.from_code 01091 gmm ->model.gmm 01092 gmm_filename ->jconf.reject.gmm_filename 01093 gmm_gprune_num ->jconf.reject.gmm_gprune_num 01094 gmm_reject_cmn_string ->jconf.reject.gmm_reject_cmn_string 01095 gprune_method ->jconf.am.gprune_method 01096 gramlist ->model.grammars 01097 gramlist_root ->jconf.lm.gramlist_root 01098 graph_merge_neighbor_range ->jconf.graph.graph_merge_neighbor_range 01099 graph_totalwordnum ->recog.graph_totalwordnum 01100 graphout_cut_depth ->jconf.graph.graphout_cut_depth 01101 graphout_limit_boundary_loop_num ->jconf.graph.graphout_limit_boundary_loop_num 01102 graphout_search_delay ->jconf.graph.graphout_search_delay 01103 gs_statenum ->jconf.am.gs_statenum 01104 head_margin_msec ->jconf.detect.head_margin_msec 01105 head_silname ->jconf.lm.head_silname 01106 hmm_gs ->model.hmm_gs 01107 hmm_gs_filename ->jconf.am.hmm_gs_filename 01108 hmmfilename ->jconf.am.hmmfilename 01109 hmminfo ->model.hmminfo 01110 hypo_overflow ->jconf.search.pass2.hypo_overflow 01111 inputlist_filename ->jconf.input.inputlist_filename 01112 iw_cache_rate ->jconf.search.pass1.iw_cache_rate 01113 iwcdmaxn ->jconf.search.pass1.iwcdmaxn 01114 iwcdmethod ->jconf.search.pass1.iwcdmethod 01115 iwsp_penalty ->jconf.lm.iwsp_penalty 01116 iwspentry ->jconf.lm.iwspentry 01117 level_thres ->jconf.detect.level_thres 01118 lm_penalty ->jconf.lm.lm_penalty 01119 lm_penalty2 ->jconf.lm.lm_penalty2 01120 lm_penalty_trans ->jconf.lm.lm_penalty_trans 01121 lm_weight ->jconf.lm.lm_weight 01122 lm_weight2 ->jconf.lm.lm_weight2 01123 lmp_specified ->jconf.lm.lmp_specified 01124 lmp2_specified ->jconf.lm.lmp2_specified 01125 looktrellis_flag ->jconf.search.pass2.looktrellis_flag 01126 lookup_range ->jconf.search.pass2.lookup_range 01127 mapfilename ->jconf.am.mapfilename 01128 mixnum_thres ->jconf.am.mixnum_thres 01129 module_mode -> (app) 01130 module_port -> (app) 01131 module_sd -> (app) 01132 multigramout_flag ->jconf.output.multigramout_flag 01133 nbest ->jconf.search.pass2.nbest 01134 netaudio_devname ->jconf.input.netaudio_devname 01135 ngram ->model.ngram 01136 ngram_filename ->jconf.lm.ngram_filename 01137 ngram_filename_lr_arpa ->jconf.lm.ngram_filename_lr_arpa 01138 ngram_filename_rl_arpa ->jconf.lm.ngram_filename_rl_arpa 01139 old_iwcd_flag -> USE_OLD_IWCD (define.h) 01140 old_tree_function_flag ->jconf.search.pass1.old_tree_function_flag 01141 output_hypo_maxnum ->jconf.output.output_hypo_maxnum 01142 para ->jconf.analysis.para 01143 para_default ->jconf.analysis.para_default 01144 para_hmm ->jconf.analysis.para_hmm 01145 para_htk ->jconf.analysis.para_htk 01146 paramtype_check_flag ->jconf.analysis.paramtype_check_flag 01147 pass1_score ->recog.pass1_score 01148 pass1_wnum ->recog.pass1_wnum 01149 pass1_wseq ->recog.pass1_wseq 01150 penalty1 ->jconf.lm.penalty1 01151 penalty2 ->jconf.lm.penalty2 01152 peseqlen ->recog.peseqlen 01153 progout_flag ->jconf.output.progout_flag 01154 progout_interval ->jconf.output.progout_interval 01155 progout_interval_frame (beam.c) ->jconf.output.progout_interval 01156 realtime_flag ->jconf.search.pass1.realtime_flag 01157 record_dirname ->jconf.output.record_dirname 01158 rejectshortlen ->jconf.reject.rejectshortlen 01159 rest_param ->recog.rest_param 01160 result_output -> (app) 01161 scan_beam_thres ->jconf.search.pass2.scan_beam_thres 01162 separate_score_flag ->jconf.output.separate_score_flag 01163 separate_wnum ->jconf.search.pass1.separate_wnum 01164 silence_cut ->jconf.detect.silence_cut 01165 sp_break_2_begin_word ->recog.sp_break_2_begin_word 01166 sp_break_2_end_word ->recog.sp_break_2_end_word 01167 sp_break_last_nword ->recog.sp_break_last_nword 01168 sp_break_last_nword_allow_override ->recog.sp_break_last_nword_allow_override 01169 sp_break_last_word ->recog.sp_break_last_word 01170 sp_frame_duration ->jconf.successive.sp_frame_duration 01171 specified_trellis_beam_width ->jconf.search.pass1.specified_trellis_beam_width 01172 speech ->recog.speech 01173 speech_input ->jconf.input.speech_input 01174 speechlen ->recog.speechlen 01175 spmodel_name ->jconf.am.spmodel_name 01176 ssbuf ->recog.ssbuf 01177 sscalc ->jconf.frontend.sscalc 01178 sscalc_len ->jconf.frontend.sscalc_len 01179 sslen ->recog.sslen 01180 ssload_filename ->jconf.frontend.ssload_filename 01181 stack_size ->jconf.search.pass2.stack_size 01182 strip_zero_sample ->jconf.frontend.strip_zero_sample 01183 tail_margin_msec ->jconf.detect.tail_margin_msec 01184 tail_silname ->jconf.lm.tail_silname 01185 to_code ->jconf.output.to_code 01186 trellis_beam_width ->recog.trellis_beam_width 01187 trellis_check_flag ->jconf.sw.trellis_check_flag 01188 triphone_check_flag ->jconf.sw.triphone_check_flag 01189 use_ds48to16 ->jconf.input.use_ds48to16 01190 use_zmean ->jconf.frontend.use_zmean 01191 wchmm ->recog.wchmm 01192 wchmm_check_flag ->jconf.sw.wchmm_check_flag 01193 winfo ->model.winfo 01194 wpair_keep_nlimit ->jconf.search.pass1.wpair_keep_nlimit 01195 zero_cross_num ->jconf.detect.zero_cross_num 01196 01197 verbose_flag -> (remain in global.h) 01198 debug2_flag -> (remain in global.h) 01199 01200 */ 01201