/** Evaluate active PHMMs */ static int32 phmm_eval_all(allphone_search_t * allphs, const int16 * senscr) { s3cipid_t ci; phmm_t *p; int32 best; bin_mdef_t *mdef; phmm_t **ci_phmm; mdef = ((ps_search_t *) allphs)->acmod->mdef; ci_phmm = allphs->ci_phmm; best = WORST_SCORE; hmm_context_set_senscore(allphs->hmmctx, senscr); for (ci = 0; ci < mdef->n_ciphone; ci++) { for (p = ci_phmm[(unsigned) ci]; p; p = p->next) { if (hmm_frame(&(p->hmm)) == allphs->frame) { int32 score; allphs->n_hmm_eval++; score = hmm_vit_eval((hmm_t *) p); if (score > best) best = score; } } } return best; }
int32 hmm_dump_vit_eval(hmm_t * hmm, FILE * fp) { int32 bs = 0; if (fp) { fprintf(fp, "BEFORE:\n"); hmm_dump(hmm, fp); } bs = hmm_vit_eval(hmm); if (fp) { fprintf(fp, "AFTER:\n"); hmm_dump(hmm, fp); } return bs; }
static void evaluate_hmms(phone_loop_search_t *pls, int16 const *senscr, int frame_idx) { int32 bs = WORST_SCORE; int i; hmm_context_set_senscore(pls->hmmctx, senscr); for (i = 0; i < pls->n_phones; ++i) { hmm_t *hmm = (hmm_t *)&pls->hmms[i]; int32 score; if (hmm_frame(hmm) < frame_idx) continue; score = hmm_vit_eval(hmm); if (score BETTER_THAN bs) { bs = score; } } pls->best_score = bs; }
static int32 evaluate_hmms(state_align_search_t *sas, int16 const *senscr, int frame_idx) { int32 bs = WORST_SCORE; int i; hmm_context_set_senscore(sas->hmmctx, senscr); for (i = 0; i < sas->n_phones; ++i) { hmm_t *hmm = sas->hmms + i; int32 score; if (hmm_frame(hmm) < frame_idx) continue; score = hmm_vit_eval(hmm); if (score BETTER_THAN bs) { bs = score; } } return bs; }