void increment_stat(stats_t * a, int32 lst_idx_distort, int32 cur_idx_distort, int32 ci_distort, int32 hit) { a->total_lastidx_distortion += logs3_to_log(lst_idx_distort); a->total_curidx_distortion += logs3_to_log(cur_idx_distort); a->total_ci_distortion += logs3_to_log(ci_distort); if (hit) { a->total_hit += 1; } }
gauden_t *gauden_init (char *meanfile, char *varfile, float32 varfloor) { int32 i, m, f, d, *flen; gauden_t *g; assert (meanfile != NULL); assert (varfile != NULL); assert (varfloor > 0.0); g = (gauden_t *) ckd_calloc (1, sizeof(gauden_t)); g->mean = g->var = NULL; /* To force them to be allocated */ /* Read means and (diagonal) variances for all mixture gaussians */ gauden_param_read (&(g->mean), &g->n_mgau, &g->n_feat, &g->n_density, &g->featlen, meanfile); gauden_param_read (&(g->var), &m, &f, &d, &flen, varfile); /* Verify mean and variance parameter dimensions */ if ((m != g->n_mgau) || (f != g->n_feat) || (d != g->n_density)) E_FATAL("Mixture-gaussians dimensions for means and variances differ\n"); for (i = 0; i < g->n_feat; i++) if (g->featlen[i] != flen[i]) E_FATAL("Feature lengths for means and variances differ\n"); ckd_free (flen); /* Floor variances and precompute variance determinants */ gauden_dist_precompute (g, varfloor); /* Floor for density values */ min_density = logs3_to_log (LOGPROB_ZERO); return g; }
void vector_gautbl_alloc (vector_gautbl_t *gautbl, int32 n_gau, int32 veclen) { gautbl->n_gau = n_gau; gautbl->veclen = veclen; gautbl->mean = (float32 **) ckd_calloc_2d (n_gau, veclen, sizeof(float32)); gautbl->var = (float32 **) ckd_calloc_2d (n_gau, veclen, sizeof(float32)); gautbl->lrd = (float32 *) ckd_calloc (n_gau, sizeof(float32)); gautbl->distfloor = logs3_to_log (S3_LOGPROB_ZERO); }
void vector_gautbl_alloc (vector_gautbl_t *gautbl, int32 n_gau, int32 veclen) { int32 tmp; gautbl->n_gau = n_gau; gautbl->veclen = veclen; #if 1 tmp =(veclen%4)? (veclen+4-(veclen%4)):veclen; gautbl->mean = (float32 **) ckd_calloc_2da (n_gau, tmp, sizeof(float32)); gautbl->var = (float32 **) ckd_calloc_2da (n_gau, tmp, sizeof(float32)); /*printf("n_gau %d tmp %d %p %p\n",n_gau,tmp, gautbl->mean, gautbl->var);*/ #else gautbl->mean = (float32 **) ckd_calloc_2d (n_gau, veclen, sizeof(float32)); gautbl->var = (float32 **) ckd_calloc_2d (n_gau, veclen, sizeof(float32)); #endif gautbl->lrd = (float32 *) ckd_calloc (n_gau, sizeof(float32)); gautbl->distfloor = logs3_to_log (S3_LOGPROB_ZERO); }