Go to the source code of this file.
|static void||free_node_exec (NODE *node)|
|< Define if want triphone debug messages |
|void||free_node (NODE *node)|
|Stock an unused hypothesis node for recycle. |
|void||clear_stocker (StackDecode *s)|
|Clear the node stocker for recycle. |
|NODE *||cpy_node (NODE *dst, NODE *src)|
|Copy the content of node to another. |
|NODE *||newnode (RecogProcess *r)|
|Allocate a new hypothesis node. |
|void||malloc_wordtrellis (RecogProcess *r)|
|Allocate work area for trellis computation of a word. |
|Free the work area for trellis computation of a word. |
|static LOGPROB||get_max_out_arc (HTK_HMM_Trans *tr, int state_num)|
|Get the maximum transition log probability to final state. |
|static LOGPROB||max_out_arc (HMM_Logical *l)|
|Get the maximum transition log probability outside a phone. |
|void||scan_word (NODE *now, HTK_Param *param, RecogProcess *r)|
|Compute the forward viterbi for the last word to update forward scores and ready for word connection. |
|void||next_word (NODE *now, NODE *new, NEXTWORD *nword, HTK_Param *param, RecogProcess *r)|
|Connect a new word to generate a next hypothesis. |
|void||start_word (NODE *new, NEXTWORD *nword, HTK_Param *param, RecogProcess *r)|
|Generate an initial hypothesis from given word. |
|void||last_next_word (NODE *now, NODE *new, HTK_Param *param, RecogProcess *r)|
|Hypothesis termination: set the final sentence scores of hypothesis that has already reached to the end. |
|static LOGPROB *||wordtrellis |
|Buffer to compute viterbi path of a word. |
|Temporal pointer to current buffer. |
|Temporal pointer to previous buffer. |
|static LOGPROB *||g|
|Buffer to hold source viterbi scores. |
|static HMM_Logical **||phmmseq|
|Phoneme sequence to be computed. |
|Maximum length of phmmseq. |
|static boolean *||has_sp|
|Mark which phoneme allow short pause for multi-path mode. |
|static short *||wend_token_frame |
|Propagating token of word-end frame to detect corresponding end-of-words at word head. |
|static LOGPROB *||wend_token_gscore |
|Propagating token of scores at word-end to detect corresponding end-of-words at word head. |
This file has functions for score calculations on the 2nd pass. It includes Viterbi path update calculation of a hypothesis, calculations of scores and word trellis connection at word expansion.
The cross-word triphone will be computed not at word expansion time, but at later pop up for rapid decoding. This is called "backscan" altgorithm. These functions are enabled when PASS2_STRICT_IWCD is UNDEFINED in config.h. If defined, "nextscan" functions in search_bestfirst_v2.c are used instead.
Here we use "delayed cross-word context handling" method for connection of next word and last word of the hypothesis for speeding up decoding:
This method avoid computing full context-dependency handling for all generated hypothesis in next_word(), and only re-compute it after primising ones are popped from stack later. This speeds up decoding. But since the context dependency is not considered in the total hypothesis score (computed in next_word()).
The actual implimentation:
Note that the actual implementation becomes a little more complicated to handle 1-phoneme words...
Definition in file search_bestfirst_v1.c.
|static void free_node_exec||(||NODE *||node||)||
|void free_node||(||NODE *||node||)|
|void clear_stocker||(||StackDecode *||s||)|
|void malloc_wordtrellis||(||RecogProcess *||r||)|
Connect a new word to generate a next hypothesis.
The optimal connection point and new sentence score of the new hypothesis will be estimated by looking up the corresponding words on word trellis.
|now||[in] source hypothesis|
|new||[out] pointer to save the newly generated hypothesis|
|nword||[in] next word to be connected|
|param||[in] input parameter vector|
|r||[in] recognition process instance|
Hypothesis termination: set the final sentence scores of hypothesis that has already reached to the end.
|now||[in] hypothesis that has already reached to the end|
|new||[out] pointer to save the final sentence information|
|param||[in] input parameter vectors|
|r||[in] recognition process instance|