#include <stdio.h>
#include <profile.h>
#include <s3types.h>
#include <lm.h>
#include <kbcore.h>
#include <vithist.h>
#include <word_ugprob.h>
#include <word_graph.h>
#include <whmm.h>
#include <hmm.h>
#include <ctxt_table.h>
#include <dict.h>
Go to the source code of this file.
|
void | build_word_cand_cf (int32 cf, dict_t *dict, s3wid_t *wcand_cf, int32 word_cand_win, word_cand_t **wcand) |
|
int32 | word_cand_load (FILE *fp, word_cand_t **wcand, dict_t *dict, char *uttid) |
|
void | word_cand_free (word_cand_t **wcand) |
|
int32 | whmm_eval (srch_FLAT_FWD_graph_t *fwg, int32 *senscr) |
|
void | dump_all_whmm (srch_FLAT_FWD_graph_t *fwg, whmm_t **whmm, int32 n_frm, int32 *senscr) |
|
void | dump_all_word (srch_FLAT_FWD_graph_t *fwg, whmm_t **whmm) |
|
void | whmm_renorm (srch_FLAT_FWD_graph_t *fwg, whmm_t **whmm, int32 bestscr) |
|
void | whmm_transition (srch_FLAT_FWD_graph_t *fwg, whmm_t **whmm, int32 w, whmm_t *h) |
|
void | word_enter (srch_FLAT_FWD_graph_t *fwg, s3wid_t w, int32 score, s3latid_t l, s3cipid_t lc) |
|
void | whmm_exit (srch_FLAT_FWD_graph_t *fwg, whmm_t **whmm, latticehist_t *lathist, int32 thresh, int32 wordthresh, int32 phone_penalty) |
|
void | word_trans (srch_FLAT_FWD_graph_t *fwg, whmm_t **whmm, latticehist_t *lathist, int32 thresh, int32 phone_penalty) |
|
void | flat_fwd_dag_add_fudge_edges (srch_FLAT_FWD_graph_t *fwg, dag_t *dagp, int32 fudge, int32 min_ef_range, void *hist, dict_t *dict) |
|
◆ srch_FLAT_FWD_graph_t
◆ word_cand_t
◆ build_word_cand_cf()
Build array of candidate words that start around the current frame (cf). Note: filler words are not in this list since they are always searched (see word_trans).
- Parameters
-
cf | Current frame |
dict | The dictionary |
wcand_cf | The array of word candidate |
word_cand_win | In frame f, candidate words in input lattice from frames [(f - word_cand_win) .. (f + word_cand_win)] will be the actual candidates to be started(entered) |
◆ dump_all_whmm()
◆ dump_all_word()
◆ flat_fwd_dag_add_fudge_edges()
◆ whmm_eval()
◆ whmm_exit()
◆ whmm_renorm()
◆ whmm_transition()
Transition from hmm h into the next appropriate one for word w. Threshold check for incoming score already completed. The next HMM may be the last triphone for the word w, in which case, instantiate multiple instances corresponding cross-word triphone modelling for all right context ciphones.
◆ word_cand_free()
◆ word_cand_load()
int32 word_cand_load |
( |
FILE * |
fp, |
|
|
word_cand_t ** |
wcand, |
|
|
dict_t * |
dict, |
|
|
char * |
uttid |
|
) |
| |
Load word candidate into a list
- Parameters
-
fp | An initialized for inputfile poiner |
wcand | list of word candidate |
dict | The dictionary |
uttid | The ID of an utterance |
◆ word_enter()
Transition into a word w. Since we transition into the first phone position, the triphone model must be derived from the incoming left context ciphone. The first state of the whmm instance inherits this triphone model and propagates it along with the score. If the first phone is also the last (single-phone word), we must also model all possible right context ciphones, by instantiating separate whmm models for each rc.
◆ word_trans()
Transition for one word.
ARCHAN: This is the heart of the flat forward search. When a word is exited, n_lat_entry will be increased by 1, this will implicitly trigger fwd_frame() to start word_trans (this function). Word trans will consider all word ends. They should be now all entries in lattice_t (which is very similar to vithist_entry_t if you look at them closely).