00001
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef __SENT_VOCA_H__
00044 #define __SENT_VOCA_H__
00045
00046 #include <sent/stddefs.h>
00047 #include <sent/htk_hmm.h>
00048
00050 #define BEGIN_WORD_DEFAULT "<s>"
00052 #define END_WORD_DEFAULT "</s>"
00053
00055 #define MAXWSTEP 4000
00056
00058 typedef struct {
00059 WORD_ID maxnum;
00060 WORD_ID num;
00061 WORD_ID errnum;
00062 WORD_ID linenum;
00063 boolean do_conv;
00064 boolean ok_flag;
00065
00066 unsigned char *wlen;
00067
00068 char **wname;
00069 char **woutput;
00070 HMM_Logical ***wseq;
00071 WORD_ID *wton;
00072 #ifdef CLASS_NGRAM
00073 LOGPROB *cprob;
00074 WORD_ID cwnum;
00075 #endif
00076 WORD_ID head_silwid;
00077 WORD_ID tail_silwid;
00078 short maxwn;
00079 short maxwlen;
00080 int totalstatenum;
00081 int totalmodelnum;
00082 int totaltransnum;
00083 boolean *is_transparent;
00084 APATNODE *errph_root;
00085 BMALLOC_BASE *mroot;
00086 } WORD_INFO;
00087
00088 WORD_INFO *word_info_new();
00089 void word_info_free(WORD_INFO *winfo);
00090 void winfo_init(WORD_INFO *winfo);
00091 boolean winfo_expand(WORD_INFO *winfo);
00092 boolean init_voca(WORD_INFO *winfo, char *filename, HTK_HMM_INFO *hmminfo, boolean, boolean);
00093 boolean init_wordlist(WORD_INFO *winfo, char *filename, HTK_HMM_INFO *hmminfo, char *headphone, char *tailphone, char *contextphone, boolean force_dict);
00094 void voca_set_stats(WORD_INFO *winfo);
00095 void voca_load_start(WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, boolean ignore_tri_conv);
00096 boolean voca_load_line(char *buf, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo);
00097 boolean voca_load_end(WORD_INFO *winfo);
00098 boolean voca_load_htkdict(FILE *, WORD_INFO *, HTK_HMM_INFO *, boolean);
00099 boolean voca_load_htkdict_fd(int, WORD_INFO *, HTK_HMM_INFO *, boolean);
00100 boolean voca_load_htkdict_sd(int, WORD_INFO *, HTK_HMM_INFO *, boolean);
00101 boolean voca_append_htkdict(char *entry, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, boolean ignore_tri_conv);
00102 boolean voca_append(WORD_INFO *dstinfo, WORD_INFO *srcinfo, int coffset, int woffset);
00103 boolean voca_load_htkdict_line(char *buf, WORD_ID *vnum, int linenum, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, boolean do_conv, boolean *ok_flag);
00104
00105 boolean voca_load_word_line(char *buf, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, char *headphone, char *tailpohone, char *contextphone);
00106 boolean voca_load_wordlist(FILE *fp, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, char *headphone, char *tailphone, char *contextphone);
00107 boolean voca_load_wordlist_line(char *buf, WORD_ID *vnum, int linenum, WORD_INFO *winfo, HTK_HMM_INFO *hmminfo, boolean do_conv, boolean *ok_flag, char *headphone, char *tailphone, char *contextphone);
00108 boolean voca_mono2tri(WORD_INFO *winfo, HTK_HMM_INFO *hmminfo);
00109 WORD_ID voca_lookup_wid(char *, WORD_INFO *);
00110 WORD_ID *new_str2wordseq(WORD_INFO *, char *, int *);
00111 char *cycle_triphone(char *p);
00112 char *cycle_triphone_flush();
00113 void print_voca_info(FILE *fp, WORD_INFO *);
00114 void put_voca(FILE *fp, WORD_INFO *winfo, WORD_ID wid);
00115
00116
00117 boolean make_base_phone(HTK_HMM_INFO *hmminfo, WORD_INFO *winfo);
00118 void print_phone_info(FILE *fp, HTK_HMM_INFO *hmminfo);
00119 void print_all_basephone_detail(HMM_basephone *base);
00120 void print_all_basephone_name(HMM_basephone *base);
00121 void test_interword_triphone(HTK_HMM_INFO *hmminfo, WORD_INFO *winfo);
00122
00123 #endif