00001
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 void bt_init(BACKTRELLIS *bt);
00028 void bt_prepare(BACKTRELLIS *bt);
00029 void bt_store(BACKTRELLIS *bt, TRELLIS_ATOM *aotm);
00030 void bt_relocate_rw(BACKTRELLIS *bt);
00031 #ifdef SP_BREAK_CURRENT_FRAME
00032 void set_terminal_words(BACKTRELLIS *bt);
00033 #endif
00034 void bt_discount_pescore(WCHMM_INFO *wchmm, BACKTRELLIS *bt, HTK_Param *param);
00035 void bt_sort_rw(BACKTRELLIS *bt);
00036 TRELLIS_ATOM *bt_binsearch_atom(BACKTRELLIS *bt, int time, WORD_ID wkey);
00037
00038
00039 void make_iwcache_index(WCHMM_INFO *wchmm);
00040 #ifndef CATEGORY_TREE
00041 # ifdef MULTIPATH_VERSION
00042 void adjust_sc_index(WCHMM_INFO *wchmm);
00043 # endif
00044 #endif
00045 void make_successor_list(WCHMM_INFO *wchmm);
00046 #ifdef USE_NGRAM
00047 void max_successor_cache_init(WCHMM_INFO *wchmm);
00048 void max_successor_cache_free(void);
00049 LOGPROB max_successor_prob(WCHMM_INFO *wchmm, WORD_ID lastword, int node);
00050 LOGPROB *max_successor_prob_iw(WCHMM_INFO *wchmm, WORD_ID lastword);
00051 void calc_all_unigram_factoring_values(WCHMM_INFO *wchmm);
00052 #else
00053 boolean can_succeed(WCHMM_INFO *wchmm, WORD_ID lastword, int node);
00054 #endif
00055
00056
00057 void get_back_trellis_init(HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis);
00058 boolean get_back_trellis_proceed(int t, HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis
00059 #ifdef MULTIPATH_VERSION
00060 , boolean final
00061 #endif
00062 );
00063 void get_back_trellis_end(HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis);
00064 void get_back_trellis(HTK_Param *param, WCHMM_INFO *wchmm, BACKTRELLIS *backtrellis, LOGPROB *backmax);
00065 LOGPROB finalize_1st_pass(BACKTRELLIS *backtrellis, WORD_INFO *winfo, int len);
00066 #ifdef SP_BREAK_CURRENT_FRAME
00067 boolean is_sil(WORD_ID w, WORD_INFO *winfo, HTK_HMM_INFO *hmm);
00068 void finalize_segment(BACKTRELLIS *backtrellis, HTK_Param *param, int len);
00069 #endif
00070
00071
00072 #ifdef PASS1_IWCD
00073 void outprob_style_cache_init(WCHMM_INFO *wchmm);
00074 #ifdef CATEGORY_TREE
00075 CD_Set *lcdset_lookup_with_category(WCHMM_INFO *wchmm, HMM_Logical *hmm, WORD_ID category);
00076 void lcdset_register_with_category_all(WCHMM_INFO *wchmm, HTK_HMM_INFO *hmminfo, WORD_INFO *winfo, DFA_INFO *dfa);
00077 void lcdset_remove_with_category_all(WCHMM_INFO *wchmm);
00078 #endif
00079 #endif
00080 LOGPROB outprob_style(WCHMM_INFO *wchmm, int node, int last_wid, int t, HTK_Param *param);
00081 void error_missing_right_triphone(HMM_Logical *base, char *rc_name);
00082 void error_missing_left_triphone(HMM_Logical *base, char *lc_name);
00083
00084
00085 #include "search.h"
00086 #ifdef USE_NGRAM
00087 int ngram_firstwords(NEXTWORD **nw, int peseqlen, int maxnw, WORD_INFO *winfo, BACKTRELLIS *bt);
00088 int ngram_nextwords(NODE *hypo, NEXTWORD **nw, int maxnw, NGRAM_INFO *ngram, WORD_INFO *winfo, BACKTRELLIS *bt);
00089 boolean ngram_acceptable(NODE *hypo, WORD_INFO *winfo);
00090 #else
00091 int dfa_firstwords(NEXTWORD **nw, int peseqlen, int maxnw, DFA_INFO *dfa);
00092 int dfa_nextwords(NODE *hypo, NEXTWORD **nw, int maxnw, DFA_INFO *dfa);
00093 boolean dfa_acceptable(NODE *hypo, DFA_INFO *dfa);
00094 boolean dfa_look_around(NEXTWORD *nword, NODE *hypo, BACKTRELLIS *bt);
00095 #endif
00096
00097
00098 void putsentence(NODE *hypo, int num);
00099 void wchmm_fbs(HTK_Param *param, BACKTRELLIS *backtrellis, LOGPROB backmax, int stacksize, int ncan, int maxhypo, int cate_bgn, int cate_num);
00100
00101
00102 void free_node(NODE *node);
00103 NODE *cpy_node(NODE *dst, NODE *src);
00104 NODE *newnode();
00105 void malloc_wordtrellis();
00106 void free_wordtrellis();
00107 void scan_word(NODE *now, HTK_Param *param);
00108 void next_word(NODE *now, NODE *new, NEXTWORD *nword, HTK_Param *param, BACKTRELLIS *backtrellis);
00109 void start_word(NODE *new, NEXTWORD *nword, HTK_Param *param, BACKTRELLIS *backtrellis);
00110 void last_next_word(NODE *now, NODE *new, HTK_Param *param);
00111
00112
00113 void init_para(Value *para);
00114 HTK_Param *new_wav2mfcc(SP16 speech[], int speechlen);
00115
00116
00117 void put_header(FILE *stream);
00118 void put_version(FILE *stream);
00119 void put_compile_defs(FILE *stream);
00120
00121
00122 WCHMM_INFO *wchmm_new();
00123 void wchmm_free(WCHMM_INFO *w);
00124 void print_wchmm_info(WCHMM_INFO *wchmm);
00125 #ifdef CATEGORY_TREE
00126 void build_wchmm(WCHMM_INFO *wchmm);
00127 #endif
00128 void build_wchmm2(WCHMM_INFO *wchmm);
00129
00130
00131 void wchmm_check_interactive(WCHMM_INFO *wchmm);
00132 void check_wchmm(WCHMM_INFO *wchmm);
00133
00134
00135 void RealTimeInit();
00136 void RealTimePipeLinePrepare();
00137 int RealTimePipeLine(SP16 *Speech, int len);
00138 int RealTimeResume();
00139 HTK_Param *RealTimeParam(LOGPROB *backmax);
00140 void RealTimeCMNUpdate(HTK_Param *param);
00141 void RealTimeTerminate();
00142
00143
00144 void word_align(WORD_ID *words, short wnum, HTK_Param *param);
00145 void phoneme_align(WORD_ID *words, short wnum, HTK_Param *param);
00146 void state_align(WORD_ID *words, short wnum, HTK_Param *param);
00147 void word_rev_align(WORD_ID *revwords, short wnum, HTK_Param *param);
00148 void phoneme_rev_align(WORD_ID *revwords, short wnum, HTK_Param *param);
00149 void state_rev_align(WORD_ID *revwords, short wnum, HTK_Param *param);
00150
00151
00152 void check_specs();
00153 void print_setting();
00154 void print_info();
00155 int adin_cut_callback_store_buffer(SP16 *now, int len);
00156
00157 void opt_terminate();
00158 void usage();
00159 void detailed_help();
00160
00161 char *filepath(char *filename, char *dirname);
00162 void opt_parse(int argc, char *argv[], char *cwd);
00163
00164 void get_dirname(char *path);
00165 void config_file_parse(char *conffile);
00166
00167 void checkpath(char *filename);
00168 void check_specs();
00169 int set_beam_width(WCHMM_INFO *wchmm, int specified);
00170 void set_lm_weight();
00171 void set_lm_weight2();
00172
00173 void print_setting();
00174 void print_info();
00175
00176 void system_bootup();
00177
00178 void adin_initialize();
00179
00180 void final_fusion();
00181
00182 void setup_result_tty();
00183 void ttyout_status_recready();
00184 void ttyout_status_recstart();
00185 void ttyout_status_recend();
00186 void ttyout_status_param(HTK_Param *p);
00187
00188 void setup_result_msock();
00189 void decode_output_selection(char *str);
00190 void msock_status_recready();
00191 void msock_status_recstart();
00192 void msock_status_recend();
00193 void msock_status_param(HTK_Param *p);
00194
00195
00196 void hmm_check(HTK_HMM_INFO *hmminfo, WORD_INFO *winfo);
00197
00198
00199 void record_sample_open();
00200 void record_sample_write(SP16 *speech, int samplenum);
00201 void record_sample_close();
00202
00203
00204 void visual_init();
00205 void visual_show(BACKTRELLIS *bt);
00206 void visual2_init(int maxhypo);
00207 void visual2_popped(NODE *n, int popctr);
00208 void visual2_next_word(NODE *next, NODE *prev, int popctr);
00209 void visual2_best(NODE *now, WORD_INFO *winfo);
00210
00211
00212 void gmm_init(HTK_HMM_INFO *gmm, int prune_num);
00213 void gmm_prepare(HTK_HMM_INFO *gmm);
00214 void gmm_proceed(HTK_HMM_INFO *gmm, HTK_Param *param, int t);
00215 void gmm_end(HTK_HMM_INFO *gmm);
00216 void msock_gmm();
00217 void ttyout_gmm();
00218 boolean gmm_valid_input();
00219
00220
00221 #ifdef GRAPHOUT
00222 void put_wordgraph(WordGraph *wg);
00223 void wordgraph_dump(WordGraph *root);
00224 WordGraph *wordgraph_assign(WORD_ID wid, int leftframe, int rightframe, LOGPROB fscore_head, LOGPROB fscore_tail, LOGPROB gscore_head, LOGPROB gscore_tail, LOGPROB lscore, LOGPROB cmscore);
00225 boolean wordgraph_check_and_add_rightword(WordGraph *wg, WordGraph *right);
00226 boolean wordgraph_check_and_add_leftword(WordGraph *wg, WordGraph *left);
00227 void wordgraph_save(WordGraph *wg, WordGraph *right, WordGraph **root);
00228 WordGraph *wordgraph_check_merge(WordGraph *now, WordGraph **root, WORD_ID next_wid, boolean *merged_p);
00229 WordGraph *wordgraph_dup(WordGraph *wg, WordGraph **root);
00230 void wordgraph_purge_leaf_nodes(WordGraph **rootp);
00231 void wordgraph_clean(WordGraph **rootp);
00232 void wordgraph_compaction_thesame(WordGraph **rootp);
00233 void wordgraph_compaction_exacttime(WordGraph **rootp);
00234 void wordgraph_compaction_neighbor(WordGraph **rootp);
00235 void wordgraph_sort_and_annotate_id(WordGraph **rootp);
00236 void wordgraph_check_coherence(WordGraph *rootp);
00237 #endif
00238
00239
00240 void main_recognition_loop();