⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wchmm.h

📁 julius version 4.12.about sound recognition.
💻 H
字号:
/** * @file   wchmm.h *  * <JA> * @brief  腾菇陇步辑今の菇陇挛年盗.  * * このファイルでは·妈1パスで脱いられる腾菇陇步辑今∈あるいは帽胳息冯 * HMM (wchmm) とも钙ばれる∷の菇陇挛を年盗しています. 弹瓢箕に·帽胳辑今の * 涟帽胳が事误に事べられ·ツリ〖惧に冯圭されて腾菇陇步辑今が菇蜜されます.  * HMMの觉轮帽疤で菇蜜され·称觉轮は·滦炳するHMM叫蜗澄唯·ツリ〖柒での莲败黎 * のリスト·および玫瑚のための屯」な攫鼠∈咐胳スコアファクタリングのための * successor word list や uni-gram 呵络猛·帽胳幌姜眉マ〖カ〖·不燎倡幌 * マ〖カ〖など∷を崔みます.  * </JA> *  * <EN> * @brief  Structure Definition of tree lexicon * * This file defines structure for word-conjunction HMM, aka tree lexicon * for recognition of 1st pass.  Words in the dictionary are gathered to * build a tree lexicon.  The lexicon is built per HMM state basis, * with their HMM output probabilities, transition arcs, and other * informations for search such as successor word lists and maximum * uni-gram scores for LM factoring, word head/tail marker, phoneme * start marker, and so on. * </EN> *  * @author Akinobu Lee * @date   Sun Sep 18 21:31:32 2005 * * $Revision: 1.4 $ *  *//* * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology * All rights reserved */#ifndef __J_WORD_CONJ_HMM_H__#define __J_WORD_CONJ_HMM_H__//#define		MAXWCNSTEP  40000 ///< Number of states to be allocated at once/** * Element of successor word list for LM factoring computation. *  */typedef struct s_cell {  WORD_ID word;			///< N-gram word ID  struct s_cell *next;		///< Pointer to next element, or NULL if terminated} S_CELL;#ifdef PASS1_IWCD/* Cross-word triphone handling *//** * State output probability data for head phone of a word.  The phoneme HMM * should change while search according to the last context word. *  */typedef struct {  HMM_Logical  *hmm;		///< Original HMM state on the dictionary  short		state_loc;	///< State location within the phoneme (1-)  /* Context cache */  boolean	last_is_lset;	///< TRUE if last assigned model was context-dependent state set  union {    HTK_HMM_State *state;	///< Last assigned state (last_is_lset = FALSE)    CD_State_Set  *lset;	///< Last assigned lset (last_is_lset = TRUE)  } cache;  WORD_ID	lastwid_cache;	///< Last context word ID} RC_INFO;/** * State output probability data for 1-phone word.  The phoneme HMM should * change according to the last context word. *  */typedef struct {  HMM_Logical  *hmm;		///< Original HMM state on the dictionary  short		state_loc;	///< State location within the phoneme (1-)  /* Context cache */  boolean	last_is_lset;	///< TRUE if last assigned model was context-dependent state set  WORD_ID	category;	///< Last context word's category ID  union {    HTK_HMM_State *state;	///< Last assigned state    CD_State_Set  *lset;	///< Last assigned lset  } cache;  WORD_ID	lastwid_cache;	///< Last context word ID} LRC_INFO;/* For word tail phoneme, pseudo phone on the dictionary will be directly   used as context-dependent state set *//** * State output probability container on lexicon tree.  Each state * should have one of them. *  */typedef union {  HTK_HMM_State *state;		///< For AS_STATE (word-internal phone)  CD_State_Set  *lset;		///< For AS_LSET (word tail phone)  RC_INFO	*rset;		///< For AS_RSET (word head phone)  LRC_INFO	*lrset;		///< For AS_LRSET (phone in 1-phoneme word)} ACOUSTIC_SPEC;/** * ID to indicate which data is in the ACOUSTIC_SPEC container. *  */typedef enum {  AS_STATE,			///< This state is in word-internal phone  AS_LSET,			///< This state is in word tail phone  AS_RSET,			///< This state is in word head phone  AS_LRSET			///< This state is in 1-phone word} AS_Style;#endif  /*************************************************************************//** * LM cache for the 1st pass *  */typedef struct {  /// Word-internal factoring cache indexed by scid, holding last score  LOGPROB *probcache;  /// Word-internal factoring cache indexed by scid, holding last N-gram entry ID  WORD_ID *lastwcache;/** * @brief  Cross-word factoring cache to hold last-word-dependent factoring * score toward word head nodes. * * Cached values will be stored as [last_nword][n], where n is the number of * word-head node on which the last_nword-dependent N-gram factoring value * should be computed on cross-word transition.  In 1-gram factoring, * n equals to wchmm->isolatenum, the number of isolated (not shared) * word-head nodes. * In 2-gram factoring, n simply equals to wchmm->startnum, the number of * all word-head nodes. * * The cache area will be allocated per the previous word when they appeared * while search. * It will retain across the speech stream, so the cache area will grow * to an extent as recognition was done for many files. */  LOGPROB **iw_sc_cache;  /**   * Maximum size of cross-word factoring cache @a iw_sc_cache per last word.   * The value is set in max_successor_cache_init().   */  int iw_cache_num;#ifdef HASH_CACHE_IW  WORD_ID *iw_lw_cache; ///< Maps hash cache id [x] to corresponding last word#endif  } LM_PROB_CACHE;/*************************************************************************//** * Number of arcs in an arc cell. *  */#define A_CELL2_ALLOC_STEP 4/** * Transition arc holding cell *  */typedef struct __A_CELL2__ {  /**   * Number of arcs currently stored in this cell.   * If this reaches A_CELL2_ALLOC_STEP, next cell will be allocated.   *    */  unsigned short n;  int arc[A_CELL2_ALLOC_STEP];	///< Transition destination node numbers  LOGPROB a[A_CELL2_ALLOC_STEP]; ///< Transitino probabilities  struct __A_CELL2__ *next;	///< Pointer to next cell} A_CELL2;/** * HMM state on tree lexicon. *  */typedef struct wchmm_state {#ifdef PASS1_IWCD  ACOUSTIC_SPEC out;		///< State output probability container  /* below has been moved to WCHMM (04/06/22 by ri) */  /*unsigned char	outstyle;	output type (one of AS_Style) */#else  /* ~PASS1_IWCD */  HTK_HMM_State *out;		///< HMM State#endif /* ~PASS1_IWCD */  /**   * LM factoring parameter:   * If scid > 0, it will points to the successor list index.   * If scid = 0, the node is not on branch.   * If scid < 0, it will points to the unigram factoring value index.   */  int scid;} WCHMM_STATE;/** * wchmm-specific work area *  */typedef struct {  int *out_from;  int *out_from_next;  LOGPROB *out_a;  LOGPROB *out_a_next;  int out_from_len;} WCHMM_WORK;/** * Whole lexicon tree structure holding all information. *  */typedef struct wchmm_info {  int lmtype;			///< LM type  int lmvar;			///< LM variant  boolean category_tree;	///< TRUE if category_tree is used  HTK_HMM_INFO *hmminfo;	///< HMM definitions used to construct this lexicon  NGRAM_INFO *ngram;		///< N-gram used to construct this lexicon  DFA_INFO *dfa;		///< Grammar used to construct this lexicon  WORD_INFO *winfo;		///< Word dictionary used to construct this lexicon  boolean ccd_flag;		///< TRUE if handling context dependency  int	maxwcn;			///< Memory assigned maximum number of nodes  int	n;			///< Num of nodes in this lexicon  WCHMM_STATE	*state;		///< HMM state on tree lexicon [nodeID]  LOGPROB *self_a;		///< Transition probability to self node  LOGPROB *next_a;		///< Transition probabiltiy to next (now+1) node  A_CELL2 **ac;			///< Transition arc information other than self and next.  WORD_ID	*stend;		///< Word ID that ends at the state [nodeID]  int	**offset;		///< Node ID of a phone [wordID][0..phonelen-1]  int	*wordend;		///< Node ID of word-end state [wordID]  int	startnum;		///< Number of root nodes  int	*startnode;		///< Root node index [0..startnum-1] -> node ID  int	*wordbegin;		///< Node ID of word-beginning state [wordID] for multipath mode  int	maxstartnum;		///< Allocated number of startnodes for multipath mode  WORD_ID *start2wid;		///< Root node index [0..startnum-1] -> word ID for multipath mode#ifdef UNIGRAM_FACTORING  int	*start2isolate;		///< Root node index -> isolated root node ID  int	isolatenum;		///< Number of isolated root nodes#endif  LOGPROB	*wordend_a;	///< Transition prob. outside word [wordID] for non-multipath mode#ifdef PASS1_IWCD  unsigned char *outstyle;	///< ID to indicate type of output probability container (one of AS_Style)#endif  /* Successor lists on the tree are stored on sequencial list at @a sclist,     and each node has index to the list */  S_CELL **sclist;		///< List of successor list [scid]  int *sclist2node;		///< Mapping successor list [scid] to node  int   scnum;			///< Number of factoring nodes that has successor list#ifdef UNIGRAM_FACTORING  LOGPROB *fscore;		///< List of 1-gram factoring score [-scid]  int fsnum;			///< Number of @a fscore#endif  BMALLOC_BASE *malloc_root;	///< Pointer for block memory allocation#ifdef PASS1_IWCD  APATNODE *lcdset_category_root; ///< Index of lexicon-dependent category-aware pseudo phone set when used on Julian  BMALLOC_BASE *lcdset_mroot;#endif /* PASS1_IWCD */  HMMWork *hmmwrk;		///< Work area for HMM computation in wchmm  LM_PROB_CACHE lmcache;	///< LM score cache for 1st pass  WCHMM_WORK wrk;		///< Other work area for 1st pass transition computation  int separated_word_count; ///< Number of words actually separated (linearlized) from the tree  char lccbuf[MAX_HMMNAME_LEN+7]; ///< Work area for HMM name conversion  char lccbuf2[MAX_HMMNAME_LEN+7]; ///< Work area for HMM name conversion  /* user-defined functions, used when this->lmvar == LM_NGRAM_USER */  /* they are local copy from parent Recog instance */  LOGPROB (*uni_prob_user)(WORD_INFO *, WORD_ID, LOGPROB); ///< Pointer to function returning word occurence probability  LOGPROB (*bi_prob_user)(WORD_INFO *, WORD_ID, WORD_ID, LOGPROB); ///< Pointer to function returning a word probability given a word context (corresponds to bi-gram)} WCHMM_INFO;#endif /* __J_WORD_CONJ_HMM_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -