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