Julius 4.2
|
00001 00018 /* 00019 * Copyright (c) 1991-2011 Kawahara Lab., Kyoto University 00020 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 00021 * Copyright (c) 2005-2011 Julius project team, Nagoya Institute of Technology 00022 * All rights reserved 00023 */ 00024 00025 /* should be included after all include files */ 00026 00027 #ifdef __cplusplus 00028 extern "C" { 00029 #endif 00030 00031 /* backtrellis.c */ 00032 void bt_init(BACKTRELLIS *bt); 00033 void bt_prepare(BACKTRELLIS *bt); 00034 void bt_free(BACKTRELLIS *bt); 00035 TRELLIS_ATOM *bt_new(BACKTRELLIS *bt); 00036 void bt_store(BACKTRELLIS *bt, TRELLIS_ATOM *aotm); 00037 void bt_relocate_rw(BACKTRELLIS *bt); 00038 void set_terminal_words(RecogProcess *r); 00039 void bt_discount_pescore(WCHMM_INFO *wchmm, BACKTRELLIS *bt, HTK_Param *param); 00040 void bt_discount_lm(BACKTRELLIS *bt); 00041 void bt_sort_rw(BACKTRELLIS *bt); 00042 TRELLIS_ATOM *bt_binsearch_atom(BACKTRELLIS *bt, int time, WORD_ID wkey); 00043 00044 /* factoring_sub.c */ 00045 void make_iwcache_index(WCHMM_INFO *wchmm); 00046 void adjust_sc_index(WCHMM_INFO *wchmm); 00047 void make_successor_list(WCHMM_INFO *wchmm); 00048 void make_successor_list_unigram_factoring(WCHMM_INFO *wchmm); 00049 void max_successor_cache_init(WCHMM_INFO *wchmm); 00050 void max_successor_cache_free(WCHMM_INFO *wchmm); 00051 LOGPROB max_successor_prob(WCHMM_INFO *wchmm, WORD_ID lastword, int node); 00052 LOGPROB *max_successor_prob_iw(WCHMM_INFO *wchmm, WORD_ID lastword); 00053 void calc_all_unigram_factoring_values(WCHMM_INFO *wchmm); 00054 boolean can_succeed(WCHMM_INFO *wchmm, WORD_ID lastword, int node); 00055 00056 /* beam.c */ 00057 boolean get_back_trellis_init(HTK_Param *param, RecogProcess *r); 00058 boolean get_back_trellis_proceed(int t, HTK_Param *param, RecogProcess *r, boolean final_for_multipath); 00059 void get_back_trellis_end(HTK_Param *param, RecogProcess *r); 00060 void fsbeam_free(FSBeam *d); 00061 void finalize_1st_pass(RecogProcess *r, int len); 00062 00063 /* pass1.c */ 00064 #ifdef POWER_REJECT 00065 boolean power_reject(Recog *recog); 00066 #endif 00067 int decode_proceed(Recog *recog); 00068 void decode_end_segmented(Recog *recog); 00069 void decode_end(Recog *recog); 00070 boolean get_back_trellis(Recog *recog); 00071 00072 /* spsegment.c */ 00073 boolean is_sil(WORD_ID w, RecogProcess *r); 00074 void mfcc_copy_to_rest_and_shrink(MFCCCalc *mfcc, int start, int end); 00075 void mfcc_shrink(MFCCCalc *mfcc, int p); 00076 boolean detect_end_of_segment(RecogProcess *r, int time); 00077 void finalize_segment(Recog *recog); 00078 void spsegment_init(Recog *recog); 00079 boolean spsegment_trigger_sync(Recog *recog); 00080 boolean spsegment_need_restart(Recog *recog, int *rf_ret, boolean *repro_ret); 00081 void spsegment_restart_mfccs(Recog *recog, int rewind_frame, boolean reprocess); 00082 00083 00084 /* outprob_style.c */ 00085 #ifdef PASS1_IWCD 00086 void outprob_style_cache_init(WCHMM_INFO *wchmm); 00087 CD_Set *lcdset_lookup_with_category(WCHMM_INFO *wchmm, HMM_Logical *hmm, WORD_ID category); 00088 void lcdset_register_with_category_all(WCHMM_INFO *wchmm); 00089 void lcdset_remove_with_category_all(WCHMM_INFO *wchmm); 00090 #endif 00091 LOGPROB outprob_style(WCHMM_INFO *wchmm, int node, int last_wid, int t, HTK_Param *param); 00092 void error_missing_right_triphone(HMM_Logical *base, char *rc_name); 00093 void error_missing_left_triphone(HMM_Logical *base, char *lc_name); 00094 00095 /* ngram_decode.c */ 00096 #include "search.h" 00097 int ngram_firstwords(NEXTWORD **nw, int peseqlen, int maxnw, RecogProcess *r); 00098 int ngram_nextwords(NODE *hypo, NEXTWORD **nw, int maxnw, RecogProcess *r); 00099 boolean ngram_acceptable(NODE *hypo, RecogProcess *r); 00100 int dfa_firstwords(NEXTWORD **nw, int peseqlen, int maxnw, RecogProcess *r); 00101 int dfa_nextwords(NODE *hypo, NEXTWORD **nw, int maxnw, RecogProcess *r); 00102 boolean dfa_acceptable(NODE *hypo, RecogProcess *r); 00103 boolean dfa_look_around(NEXTWORD *nword, NODE *hypo, RecogProcess *r); 00104 00105 /* search_bestfirst_main.c */ 00106 void segment_set_last_nword(NODE *hypo, RecogProcess *r); 00107 void pass2_finalize_on_no_result(RecogProcess *r, boolean use_1pass_as_final); 00108 void wchmm_fbs(HTK_Param *param, RecogProcess *r, int cate_bgn, int cate_num); 00109 void wchmm_fbs_prepare(RecogProcess *r); 00110 void wchmm_fbs_free(RecogProcess *r); 00111 00112 /* search_bestfirst_v?.c */ 00113 void clear_stocker(StackDecode *s); 00114 void free_node(NODE *node); 00115 NODE *cpy_node(NODE *dst, NODE *src); 00116 NODE *newnode(RecogProcess *r); 00117 void malloc_wordtrellis(RecogProcess *r); 00118 void free_wordtrellis(StackDecode *dwrk); 00119 void scan_word(NODE *now, HTK_Param *param, RecogProcess *r); 00120 void next_word(NODE *now, NODE *newParam, NEXTWORD *nword, HTK_Param *param, RecogProcess *r); 00121 void start_word(NODE *newParam, NEXTWORD *nword, HTK_Param *param, RecogProcess *r); 00122 void last_next_word(NODE *now, NODE *newParam, HTK_Param *param, RecogProcess *r); 00123 00124 /* wav2mfcc.c */ 00125 boolean wav2mfcc(SP16 speech[], int speechlen, Recog *recog); 00126 00127 /* version.c */ 00128 void j_put_header(FILE *stream); 00129 void j_put_version(FILE *stream); 00130 void j_put_compile_defs(FILE *stream); 00131 void j_put_library_defs(FILE *stream); 00132 00133 /* wchmm.c */ 00134 WCHMM_INFO *wchmm_new(); 00135 void wchmm_free(WCHMM_INFO *w); 00136 void print_wchmm_info(WCHMM_INFO *wchmm); 00137 boolean build_wchmm(WCHMM_INFO *wchmm, JCONF_LM *lmconf); 00138 boolean build_wchmm2(WCHMM_INFO *wchmm, JCONF_LM *lmconf); 00139 00140 /* wchmm_check.c */ 00141 void wchmm_check_interactive(WCHMM_INFO *wchmm); 00142 void check_wchmm(WCHMM_INFO *wchmm); 00143 00144 /* realtime.c --- callback for adin_cut() */ 00145 boolean RealTimeInit(Recog *recog); 00146 boolean RealTimePipeLinePrepare(Recog *recog); 00147 boolean RealTimeMFCC(MFCCCalc *mfcc, SP16 *window, int windowlen); 00148 int RealTimePipeLine(SP16 *Speech, int len, Recog *recog); 00149 int RealTimeResume(Recog *recog); 00150 boolean RealTimeParam(Recog *recog); 00151 void RealTimeCMNUpdate(MFCCCalc *mfcc, Recog *recog); 00152 void RealTimeTerminate(Recog *recog); 00153 void realbeam_free(Recog *recog); 00154 int mfcc_go(Recog *recog, int (*ad_check)(Recog *)); 00155 00156 /* word_align.c */ 00157 void word_align(WORD_ID *words, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r); 00158 void phoneme_align(WORD_ID *words, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r); 00159 void state_align(WORD_ID *words, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r); 00160 void word_rev_align(WORD_ID *revwords, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r); 00161 void phoneme_rev_align(WORD_ID *revwords, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r); 00162 void state_rev_align(WORD_ID *revwords, short wnum, HTK_Param *param, SentenceAlign *align, RecogProcess *r); 00163 void do_alignment_all(RecogProcess *r, HTK_Param *param); 00164 00165 /* m_usage.c */ 00166 void opt_terminate(); 00167 void j_output_argument_help(FILE *fp); 00168 /* m_options.c */ 00169 char *filepath(char *filename, char *dirname); 00170 boolean opt_parse(int argc, char *argv[], char *cwd, Jconf *jconf); 00171 void opt_release(Jconf *jconf); 00172 /* m_jconf.c */ 00173 void get_dirname(char *path); 00174 boolean config_string_parse(char *str, Jconf *jconf); 00175 boolean config_file_parse(char *conffile, Jconf *jconf); 00176 /* m_chkparam.c */ 00177 boolean checkpath(char *filename); 00178 boolean j_jconf_finalize(Jconf *jconf); 00179 int set_beam_width(WCHMM_INFO *wchmm, int specified); 00180 /* m_info.c */ 00181 void print_jconf_overview(Jconf *jconf); 00182 void print_engine_info(Recog *recog); 00183 /* m_bootup.c */ 00184 void system_bootup(Recog *recog); 00185 /* m_adin.c */ 00186 boolean adin_initialize(Recog *recog); 00187 /* m_fusion.c */ 00188 boolean j_load_am(Recog *recog, JCONF_AM *amconf); 00189 boolean j_load_lm(Recog *recog, JCONF_LM *lmconf); 00190 boolean j_load_all(Recog *recog, Jconf *jconf); 00191 boolean j_launch_recognition_instance(Recog *recog, JCONF_SEARCH *sconf); 00192 boolean j_final_fusion(Recog *recog); 00193 void create_mfcc_calc_instances(Recog *recog); 00194 00195 /* hmm_check.c */ 00196 void hmm_check(RecogProcess *r); 00197 00198 /* visual.c */ 00199 void visual_init(Recog *recog); 00200 void visual_show(BACKTRELLIS *bt); 00201 void visual2_init(int maxhypo); 00202 void visual2_popped(NODE *n, int popctr); 00203 void visual2_next_word(NODE *next, NODE *prev, int popctr); 00204 void visual2_best(NODE *now, WORD_INFO *winfo); 00205 00206 /* gmm.c */ 00207 boolean gmm_init(Recog *recog); 00208 void gmm_prepare(Recog *recog); 00209 void gmm_proceed(Recog *recog); 00210 void gmm_end(Recog *recog); 00211 boolean gmm_valid_input(Recog *recog); 00212 void gmm_free(Recog *recog); 00213 #ifdef GMM_VAD 00214 void gmm_check_trigger(Recog *recog); 00215 #endif 00216 00217 /* graphout.c */ 00218 void wordgraph_init(WCHMM_INFO *wchmm); 00219 void wordgraph_free(WordGraph *wg); 00220 void put_wordgraph(FILE *fp, WordGraph *wg, WORD_INFO *winfo); 00221 void wordgraph_dump(FILE *fp, WordGraph *root, WORD_INFO *winfo); 00222 WordGraph *wordgraph_assign(WORD_ID wid, WORD_ID wid_left, WORD_ID wid_right, int leftframe, int rightframe, LOGPROB fscore_head, LOGPROB fscore_tail, LOGPROB gscore_head, LOGPROB gscore_tail, LOGPROB lscore, LOGPROB cmscore, RecogProcess *r); 00223 boolean wordgraph_check_and_add_rightword(WordGraph *wg, WordGraph *right, LOGPROB lscore); 00224 boolean wordgraph_check_and_add_leftword(WordGraph *wg, WordGraph *left, LOGPROB lscore); 00225 void wordgraph_save(WordGraph *wg, WordGraph *right, WordGraph **root); 00226 WordGraph *wordgraph_check_merge(WordGraph *now, WordGraph **root, WORD_ID next_wid, boolean *merged_p, JCONF_SEARCH *jconf); 00227 WordGraph *wordgraph_dup(WordGraph *wg, WordGraph **root); 00228 void wordgraph_purge_leaf_nodes(WordGraph **rootp, RecogProcess *r); 00229 void wordgraph_depth_cut(WordGraph **rootp, RecogProcess *r); 00230 void wordgraph_adjust_boundary(WordGraph **rootp, RecogProcess *r); 00231 void wordgraph_clean(WordGraph **rootp); 00232 void wordgraph_compaction_thesame(WordGraph **rootp); 00233 void wordgraph_compaction_exacttime(WordGraph **rootp, RecogProcess *r); 00234 void wordgraph_compaction_neighbor(WordGraph **rootp, RecogProcess *r); 00235 int wordgraph_sort_and_annotate_id(WordGraph **rootp, RecogProcess *r); 00236 void wordgraph_check_coherence(WordGraph *rootp, RecogProcess *r); 00237 void graph_forward_backward(WordGraph *root, RecogProcess *r); 00238 00239 /* default.c */ 00240 void jconf_set_default_values(Jconf *j); 00241 void jconf_set_default_values_am(JCONF_AM *j); 00242 void jconf_set_default_values_lm(JCONF_LM *j); 00243 void jconf_set_default_values_search(JCONF_SEARCH *j); 00244 00245 00246 /* multi-gram.c */ 00247 int multigram_add(DFA_INFO *dfa, WORD_INFO *winfo, char *name, PROCESS_LM *lm); 00248 boolean multigram_delete(int gid, PROCESS_LM *lm); 00249 void multigram_delete_all(PROCESS_LM *lm); 00250 boolean multigram_update(PROCESS_LM *lm); 00251 boolean multigram_build(RecogProcess *r); 00252 int multigram_activate(int gid, PROCESS_LM *lm); 00253 int multigram_deactivate(int gid, PROCESS_LM *lm); 00254 boolean multigram_load_all_gramlist(PROCESS_LM *lm); 00255 int multigram_get_gram_from_category(int category, PROCESS_LM *lm); 00256 int multigram_get_gram_from_wid(WORD_ID wid, PROCESS_LM *lm); 00257 int multigram_get_all_num(PROCESS_LM *lm); 00258 void multigram_free_all(MULTIGRAM *root); 00259 00260 int multigram_get_id_by_name(PROCESS_LM *lm, char *gramname); 00261 MULTIGRAM *multigram_get_grammar_by_name(PROCESS_LM *lm, char *gramname); 00262 MULTIGRAM *multigram_get_grammar_by_id(PROCESS_LM *lm, unsigned short id); 00263 boolean multigram_add_words_to_grammar(PROCESS_LM *lm, MULTIGRAM *m, WORD_INFO *winfo); 00264 boolean multigram_add_words_to_grammar_by_name(PROCESS_LM *lm, char *gramname, WORD_INFO *winfo); 00265 boolean multigram_add_words_to_grammar_by_id(PROCESS_LM *lm, unsigned short id, WORD_INFO *winfo); 00266 00267 00268 /* gramlist.c */ 00269 void multigram_add_gramlist(char *dfafile, char *dictfile, JCONF_LM *j, int lmvar); 00270 void multigram_remove_gramlist(JCONF_LM *j); 00271 boolean multigram_add_prefix_list(char *prefix_list, char *cwd, JCONF_LM *j, int lmvar); 00272 boolean multigram_add_prefix_filelist(char *listfile, JCONF_LM *j, int lmvar); 00273 00274 00275 /* adin-cut.c */ 00276 boolean adin_setup_param(ADIn *adin, Jconf *jconf); 00277 boolean adin_thread_create(Recog *recog); 00278 boolean adin_thread_cancel(Recog *recog); 00279 int adin_go(int (*ad_process)(SP16 *, int, Recog *), int (*ad_check)(Recog *), Recog *recog); 00280 boolean adin_standby(ADIn *a, int freq, void *arg); 00281 boolean adin_begin(ADIn *a, char *file_or_dev_name); 00282 boolean adin_end(ADIn *a); 00283 void adin_free_param(Recog *recog); 00284 00285 /* confnet.c */ 00286 CN_CLUSTER *confnet_create(WordGraph *root, RecogProcess *r); 00287 void graph_make_order(WordGraph *root, RecogProcess *r); 00288 void graph_free_order(RecogProcess *r); 00289 void cn_free_all(CN_CLUSTER **croot); 00290 00291 /* callback.c */ 00292 void callback_init(Recog *recog); 00293 int callback_add(Recog *recog, int code, void (*func)(Recog *recog, void *data), void *data); 00294 int callback_add_adin(Recog *recog, int code, void (*func)(Recog *recog, SP16 *buf, int len, void *data), void *data); 00295 void callback_exec(int code, Recog *recog); 00296 void callback_exec_adin(int code, Recog *recog, SP16 *buf, int len); 00297 boolean callback_exist(Recog *recog, int code); 00298 boolean callback_delete(Recog *recog, int id); 00299 00300 /* recogmain.c */ 00301 int adin_cut_callback_store_buffer(SP16 *now, int len, Recog *recog); 00302 SentenceAlign *result_align_new(); 00303 void result_align_free(SentenceAlign *a); 00304 void result_sentence_malloc(RecogProcess *r, int num); 00305 void result_sentence_free(RecogProcess *r); 00306 void clear_result(RecogProcess *r); 00307 00308 /* plugin.c */ 00309 int plugin_get_id(char *name); 00310 void plugin_init(); 00311 boolean plugin_load_file(char *file); 00312 boolean plugin_load_dir(char *dir); 00313 void plugin_load_dirs(char *dirent); 00314 int plugin_find_optname(char *optfuncname, char *str); 00315 FUNC_VOID plugin_get_func(int sid, char *name); 00316 boolean plugin_exec_engine_startup(Recog *recog); 00317 void plugin_exec_adin_captured(short *buf, int len); 00318 void plugin_exec_adin_triggered(short *buf, int len); 00319 void plugin_exec_vector_postprocess(VECT *vecbuf, int veclen, int nframe); 00320 void plugin_exec_vector_postprocess_all(HTK_Param *param); 00321 void plugin_exec_process_result(Recog *recog); 00322 boolean mfc_module_init(MFCCCalc *mfcc, Recog *recog); 00323 boolean mfc_module_set_header(MFCCCalc *mfcc, Recog *recog); 00324 boolean mfc_module_standby(MFCCCalc *mfcc); 00325 boolean mfc_module_begin(MFCCCalc *mfcc); 00326 boolean mfc_module_end(MFCCCalc *mfcc); 00327 int mfc_module_read(MFCCCalc *mfcc, int *new_t); 00328 char *mfc_module_input_name(MFCCCalc *mfcc); 00329 00330 #ifdef __cplusplus 00331 } 00332 #endif