这篇教程C++ E_INFO函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中E_INFO函数的典型用法代码示例。如果您正苦于以下问题:C++ E_INFO函数的具体用法?C++ E_INFO怎么用?C++ E_INFO使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了E_INFO函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: kb_init//.........这里部分代码省略......... lm_lmwid2dictwid(lm, lm_finishwid(lm)) = BAD_S3WID; for (w = dict_startwid(dict); IS_S3WID(w); w = dict_nextalt(dict, w)) kbcore->dict2lmwid[w] = BAD_S3LMWID; for (w = dict_finishwid(dict); IS_S3WID(w); w = dict_nextalt(dict, w)) kbcore->dict2lmwid[w] = BAD_S3LMWID; } sil = mdef_silphone (kbcore_mdef (kbcore)); if (NOT_S3CIPID(sil)) E_FATAL("Silence phone '%s' not in mdef/n", S3_SILENCE_CIPHONE); kb->sen_active = (int32 *) ckd_calloc (mdef_n_sen(mdef), sizeof(int32)); kb->rec_sen_active = (int32 *) ckd_calloc (mdef_n_sen(mdef), sizeof(int32)); kb->ssid_active = (int32 *) ckd_calloc (mdef_n_sseq(mdef), sizeof(int32)); kb->comssid_active = (int32 *) ckd_calloc (dict2pid_n_comsseq(d2p), sizeof(int32)); /* Build set of all possible left contexts */ lc = (s3cipid_t *) ckd_calloc (mdef_n_ciphone(mdef) + 1, sizeof(s3cipid_t)); lc_active = bitvec_alloc (mdef_n_ciphone (mdef)); for (w = 0; w < dict_size (dict); w++) { ci = dict_pron (dict, w, dict_pronlen(dict, w) - 1); if (! mdef_is_fillerphone (mdef, (int)ci)) bitvec_set (lc_active, ci); } ci = mdef_silphone(mdef); bitvec_set (lc_active, ci); for (ci = 0, n_lc = 0; ci < mdef_n_ciphone(mdef); ci++) { if (bitvec_is_set (lc_active, ci)) lc[n_lc++] = ci; } lc[n_lc] = BAD_S3CIPID; E_INFO("Building lextrees/n"); /* Get the number of lexical tree*/ kb->n_lextree = cmd_ln_int32 ("-Nlextree"); if (kb->n_lextree < 1) { E_ERROR("No. of ugtrees specified: %d; will instantiate 1 ugtree/n", kb->n_lextree); kb->n_lextree = 1; } /* ARCHAN: This code was rearranged in s3.4 implementation of dynamic LM */ /* Build active word list */ wp = (wordprob_t *) ckd_calloc (dict_size(dict), sizeof(wordprob_t)); if(lmset){ kb->ugtreeMulti = (lextree_t **) ckd_calloc (kbcore_nlm(kbcore)*kb->n_lextree, sizeof(lextree_t *)); /* Just allocate pointers*/ kb->ugtree = (lextree_t **) ckd_calloc (kb->n_lextree, sizeof(lextree_t *)); for(i=0;i<kbcore_nlm(kbcore);i++){ E_INFO("Creating Unigram Table for lm %d name %s/n",i,lmset[i].name); n=0; for(j=0;j<dict_size(dict);j++){ /*try to be very careful again */ wp[j].wid=-1; wp[j].prob=-1; } n = lm_ug_wordprob (lmset[i].lm, dict,MAX_NEG_INT32, wp); E_INFO("Size of word table after unigram + words in class: %d./n",n); if (n < 1) E_FATAL("%d active words in %s/n", n,lmset[i].name); n = wid_wordprob2alt(dict,wp,n); E_INFO("Size of word table after adding alternative prons: %d./n",n); if (cmd_ln_int32("-treeugprob") == 0) {
开发者ID:wdebeaum,项目名称:cabot,代码行数:67,
示例2: mk_tree_compdtree_t *mk_tree_comp(float32 ****mixw,/* ADDITION FOR CONTINUOUS_TREES, 18 May 98 */ float32 ****means, float32 ****vars, uint32 *veclen,/* END ADDITIONS FOR CONTINUOUS_TREES */ uint32 n_model, uint32 n_state, uint32 n_stream, uint32 n_density, float32 *stwt, uint32 *id, uint32 n_id, quest_t *all_q, uint32 n_all_q, pset_t *pset, uint32 n_base_phone, uint32 **dfeat, uint32 n_dfeat, uint32 split_min, uint32 split_max, float32 split_thr, uint32 split_min_comp, uint32 split_max_comp, float32 split_thr_comp, float32 mwfloor){ dtree_t *comp_tree; dtree_node_t *root, *b_n; uint32 i; comp_tree = ckd_calloc(1, sizeof(dtree_t)); comp_tree->node = ckd_calloc(2*split_max_comp+1, sizeof(dtree_node_t)); comp_tree->n_node = 0; comp_tree->node[0].node_id = 0; comp_tree->n_node = 1; root = &comp_tree->node[0];/* MODIFICATION FOR CONTINUOUS_TREES 18 May 98, pass means and var along with mixw */ mk_node(root, 0, id, n_id, mixw, means, vars, veclen, n_model, n_state, n_stream, n_density, stwt, mwfloor);/* END MODIFICATION FOR CONTINUOUS_TREES *//* MODIFICATION FOR CONTINUOUS_TREES 18 May 98, pass means and var along with mixw */ root->q = (void *)mk_comp_quest(&root->wt_ent_dec, mixw, means, vars, veclen, n_model, n_state, n_stream, n_density, stwt, id, n_id, all_q, n_all_q, pset, n_base_phone, dfeat, n_dfeat, split_min, split_max, split_thr, mwfloor);/* END MODIFICATION FOR CONTINUOUS_TREES */ for (i = 0; i < split_max_comp; i++) { b_n = best_leaf_node(root); E_INFO("Comp split %u/n", i); if (b_n == NULL) { E_INFO("stop. leaf nodes are specific/n"); break; } if (b_n->wt_ent_dec <= 0) { E_INFO("stop. b_n->wt_ent_dec (%.3e) <= 0/n", b_n->wt_ent_dec); break; } if ((i > split_min_comp) && (b_n->wt_ent_dec < split_thr_comp * b_n->wt_ent)) { E_INFO("stop. b_n->wt_ent_dec <= split_thr_comp * b_n->wt_ent. %.3e <= %.3e/n", b_n->wt_ent_dec, split_thr_comp * b_n->wt_ent); break; } /* MODIFICATION FOR CONTINUOUS_TREES 18 May 98, pass means and var along with mixw */ split_node_comp(comp_tree, b_n->node_id, mixw, means, vars, veclen, n_model, n_state, n_stream, n_density, stwt, all_q, n_all_q, pset, n_base_phone, dfeat, n_dfeat, split_min, split_max, split_thr, mwfloor);/* END MODIFICATION FOR CONTINUOUS_TREES */#if 0 printf("Comp Split %u:/n", i); print_tree_comp(stderr, "*", root, pset, 0);//.........这里部分代码省略.........
开发者ID:10v,项目名称:cmusphinx,代码行数:101,
示例3: ckd_callocfillpen_t *fillpen_init (dict_t *dict, char *file, float64 silprob, float64 fillprob, float64 lw, float64 wip){ s3wid_t w, bw; float64 prob; FILE *fp; char line[1024], wd[1024]; int32 k; fillpen_t *_fillpen; _fillpen = (fillpen_t *) ckd_calloc (1, sizeof(fillpen_t)); _fillpen->dict = dict; _fillpen->lw = lw; _fillpen->wip = wip; if (dict->filler_end >= dict->filler_start) _fillpen->prob = (int32 *) ckd_calloc (dict->filler_end - dict->filler_start + 1, sizeof(int32)); else _fillpen->prob = NULL; /* Initialize all words with filler penalty (HACK!! backward compatibility) */ prob = fillprob; for (w = dict->filler_start; w <= dict->filler_end; w++) _fillpen->prob[w - dict->filler_start] = (int32) ((logs3(prob) + logs3(wip)) * lw); /* Overwrite silence penalty (HACK!! backward compatibility) */ w = dict_wordid (dict, S3_SILENCE_WORD); if (NOT_S3WID(w) || (w < dict->filler_start) || (w > dict->filler_end)) E_FATAL("%s not a filler word in the given dictionary/n", S3_SILENCE_WORD); prob = silprob; _fillpen->prob[w - dict->filler_start] = (int32) ((logs3(prob) + logs3(wip)) * lw); /* Overwrite with filler prob input file, if specified */ if (! file) return _fillpen; E_INFO("Reading filler penalty file: %s/n", file); if ((fp = fopen (file, "r")) == NULL) E_FATAL("fopen(%s,r) failed/n", file); while (fgets (line, sizeof(line), fp) != NULL) { if (line[0] == '#') /* Skip comment lines */ continue; k = sscanf (line, "%s %lf", wd, &prob); if ((k != 0) && (k != 2)) E_FATAL("Bad input line: %s/n", line); w = dict_wordid(dict, wd); if (NOT_S3WID(w) || (w < dict->filler_start) || (w > dict->filler_end)) E_FATAL("%s not a filler word in the given dictionary/n", S3_SILENCE_WORD); _fillpen->prob[w - dict->filler_start] = (int32) ((logs3(prob) + logs3(wip)) * lw); } fclose (fp); /* Replicate fillpen values for alternative pronunciations */ for (w = dict->filler_start; w <= dict->filler_end; w++) { bw = dict_basewid (dict, w); if (bw != w) _fillpen->prob[w-dict->filler_start] = _fillpen->prob[bw-dict->filler_start]; } return _fillpen;}
开发者ID:10v,项目名称:cmusphinx,代码行数:64,
示例4: ps_start_uttintps_start_utt(ps_decoder_t *ps, char const *uttid){ FILE *mfcfh = NULL; FILE *rawfh = NULL; int rv; if (ps->search == NULL) { E_ERROR("No search module is selected, did you forget to " "specify a language model or grammar?/n"); return -1; } ptmr_reset(&ps->perf); ptmr_start(&ps->perf); if (uttid) { ckd_free(ps->uttid); ps->uttid = ckd_salloc(uttid); } else { char nuttid[16]; ckd_free(ps->uttid); sprintf(nuttid, "%09u", ps->uttno); ps->uttid = ckd_salloc(nuttid); ++ps->uttno; } /* Remove any residual word lattice and hypothesis. */ ps_lattice_free(ps->search->dag); ps->search->dag = NULL; ps->search->last_link = NULL; ps->search->post = 0; ckd_free(ps->search->hyp_str); ps->search->hyp_str = NULL; if ((rv = acmod_start_utt(ps->acmod)) < 0) return rv; /* Start logging features and audio if requested. */ if (ps->mfclogdir) { char *logfn = string_join(ps->mfclogdir, "/", ps->uttid, ".mfc", NULL); E_INFO("Writing MFCC log file: %s/n", logfn); if ((mfcfh = fopen(logfn, "wb")) == NULL) { E_ERROR_SYSTEM("Failed to open MFCC log file %s", logfn); ckd_free(logfn); return -1; } ckd_free(logfn); acmod_set_mfcfh(ps->acmod, mfcfh); } if (ps->rawlogdir) { char *logfn = string_join(ps->rawlogdir, "/", ps->uttid, ".raw", NULL); E_INFO("Writing raw audio log file: %s/n", logfn); if ((rawfh = fopen(logfn, "wb")) == NULL) { E_ERROR_SYSTEM("Failed to open raw audio log file %s", logfn); ckd_free(logfn); return -1; } ckd_free(logfn); acmod_set_rawfh(ps->acmod, rawfh); } /* Start auxiliary phone loop search. */ if (ps->phone_loop) ps_search_start(ps->phone_loop); return ps_search_start(ps->search);}
开发者ID:006,项目名称:ios_lab,代码行数:70,
示例5: acmod_initacmod_t *acmod_init(cmd_ln_t *config, logmath_t *lmath, fe_t *fe, feat_t *fcb){ acmod_t *acmod; char const *featparams; acmod = ckd_calloc(1, sizeof(*acmod)); acmod->config = cmd_ln_retain(config); acmod->lmath = lmath; acmod->state = ACMOD_IDLE; /* Look for feat.params in acoustic model dir. */ if ((featparams = cmd_ln_str_r(acmod->config, "-featparams"))) { if (NULL != cmd_ln_parse_file_r(acmod->config, feat_defn, featparams, FALSE)) E_INFO("Parsed model-specific feature parameters from %s/n", featparams); } /* Initialize feature computation. */ if (fe) { if (acmod_fe_mismatch(acmod, fe)) goto error_out; fe_retain(fe); acmod->fe = fe; } else { /* Initialize a new front end. */ acmod->fe = fe_init_auto_r(config); if (acmod->fe == NULL) goto error_out; if (acmod_fe_mismatch(acmod, acmod->fe)) goto error_out; } if (fcb) { if (acmod_feat_mismatch(acmod, fcb)) goto error_out; feat_retain(fcb); acmod->fcb = fcb; } else { /* Initialize a new fcb. */ if (acmod_init_feat(acmod) < 0) goto error_out; } /* Load acoustic model parameters. */ if (acmod_init_am(acmod) < 0) goto error_out; /* The MFCC buffer needs to be at least as large as the dynamic * feature window. */ acmod->n_mfc_alloc = acmod->fcb->window_size * 2 + 1; acmod->mfc_buf = (mfcc_t **) ckd_calloc_2d(acmod->n_mfc_alloc, acmod->fcb->cepsize, sizeof(**acmod->mfc_buf)); /* Feature buffer has to be at least as large as MFCC buffer. */ acmod->n_feat_alloc = acmod->n_mfc_alloc + cmd_ln_int32_r(config, "-pl_window"); acmod->feat_buf = feat_array_alloc(acmod->fcb, acmod->n_feat_alloc); acmod->framepos = ckd_calloc(acmod->n_feat_alloc, sizeof(*acmod->framepos)); acmod->utt_start_frame = 0; /* Senone computation stuff. */ acmod->senone_scores = ckd_calloc(bin_mdef_n_sen(acmod->mdef), sizeof(*acmod->senone_scores)); acmod->senone_active_vec = bitvec_alloc(bin_mdef_n_sen(acmod->mdef)); acmod->senone_active = ckd_calloc(bin_mdef_n_sen(acmod->mdef), sizeof(*acmod->senone_active)); acmod->log_zero = logmath_get_zero(acmod->lmath); acmod->compallsen = cmd_ln_boolean_r(config, "-compallsen"); return acmod;error_out: acmod_free(acmod); return NULL;}
开发者ID:bcb37,项目名称:pocketsphinx.js,代码行数:79,
示例6: E_INFOkbcore_t *kbcore_init (float64 logbase, char *feattype, char *cmn, char *varnorm, char *agc, char *mdeffile, char *dictfile, char *fdictfile, char *compsep, char *lmfile, char *fillpenfile, float64 silprob, float64 fillprob, float64 langwt, float64 inspen, float64 uw, char *meanfile, char *varfile, float64 varfloor, char *mixwfile, float64 mixwfloor, char *subvqfile, char *tmatfile, float64 tmatfloor){ kbcore_t *kb; E_INFO("Initializing core models:/n"); kb = (kbcore_t *) ckd_calloc (1, sizeof(kbcore_t)); kb->fcb = NULL; kb->mdef = NULL; kb->dict = NULL; kb->dict2pid = NULL; kb->lm = NULL; kb->fillpen = NULL; kb->dict2lmwid = NULL; kb->mgau = NULL; kb->svq = NULL; kb->tmat = NULL; logs3_init (logbase); if (feattype) { if ((kb->fcb = feat_init (feattype, cmn, varnorm, agc)) == NULL) E_FATAL("feat_init(%s) failed/n", feattype); if (feat_n_stream(kb->fcb) != 1) E_FATAL("#Feature streams(%d) != 1/n", feat_n_stream(kb->fcb)); } if (mdeffile) { if ((kb->mdef = mdef_init (mdeffile)) == NULL) E_FATAL("mdef_init(%s) failed/n", mdeffile); } if (dictfile) { if (! compsep) compsep = ""; else if ((compsep[0] != '/0') && (compsep[1] != '/0')) { E_FATAL("Compound word separator(%s) must be empty or single character string/n", compsep); } if ((kb->dict = dict_init (kb->mdef, dictfile, fdictfile, compsep[0])) == NULL) E_FATAL("dict_init(%s,%s,%s) failed/n", dictfile, fdictfile ? fdictfile : "", compsep); } if (lmfile) { if ((kb->lm = lm_read (lmfile, langwt, inspen, uw)) == NULL) E_FATAL("lm_read(%s, %e, %e, %e) failed/n", lmfile, langwt, inspen, uw); } if (fillpenfile || (lmfile && kb->dict)) { if (! kb->dict) /* Sic */ E_FATAL("No dictionary for associating filler penalty file(%s)/n", fillpenfile); if ((kb->fillpen = fillpen_init (kb->dict, fillpenfile, silprob, fillprob, langwt, inspen)) == NULL) E_FATAL("fillpen_init(%s) failed/n", fillpenfile); } if (meanfile) { if ((! varfile) || (! mixwfile)) E_FATAL("Varfile or mixwfile not specified along with meanfile(%s)/n", meanfile); kb->mgau = mgau_init (meanfile, varfile, varfloor, mixwfile, mixwfloor, TRUE); if (kb->mgau == NULL) E_FATAL("gauden_init(%s, %s, %e) failed/n", meanfile, varfile, varfloor); if (subvqfile) { if ((kb->svq = subvq_init (subvqfile, varfloor, -1, kb->mgau)) == NULL) E_FATAL("subvq_init (%s, %e, -1) failed/n", subvqfile, varfloor); } } if (tmatfile) { if ((kb->tmat = tmat_init (tmatfile, tmatfloor)) == NULL) E_FATAL("tmat_init (%s, %e) failed/n", tmatfile, tmatfloor); } if (kb->dict && kb->lm) { /* Initialize dict2lmwid *///.........这里部分代码省略.........
开发者ID:10v,项目名称:cmusphinx,代码行数:101,
示例7: ngram_fwdflat_searchintngram_fwdflat_search(ngram_search_t *ngs, int frame_idx){ int16 const *senscr; int32 nf, i, j; int32 *nawl; /* Activate our HMMs for the current frame if need be. */ if (!ps_search_acmod(ngs)->compallsen) compute_fwdflat_sen_active(ngs, frame_idx); /* Compute GMM scores for the current frame. */ senscr = acmod_score(ps_search_acmod(ngs), &frame_idx); ngs->st.n_senone_active_utt += ps_search_acmod(ngs)->n_senone_active; /* Mark backpointer table for current frame. */ ngram_search_mark_bptable(ngs, frame_idx); /* If the best score is equal to or worse than WORST_SCORE, * recognition has failed, don't bother to keep trying. */ if (ngs->best_score == WORST_SCORE || ngs->best_score WORSE_THAN WORST_SCORE) return 0; /* Renormalize if necessary */ if (ngs->best_score + (2 * ngs->beam) WORSE_THAN WORST_SCORE) { E_INFO("Renormalizing Scores at frame %d, best score %d/n", frame_idx, ngs->best_score); fwdflat_renormalize_scores(ngs, frame_idx, ngs->best_score); } ngs->best_score = WORST_SCORE; hmm_context_set_senscore(ngs->hmmctx, senscr); /* Evaluate HMMs */ fwdflat_eval_chan(ngs, frame_idx); /* Prune HMMs and do phone transitions. */ fwdflat_prune_chan(ngs, frame_idx); /* Do word transitions. */ fwdflat_word_transition(ngs, frame_idx); /* Create next active word list */ nf = frame_idx + 1; nawl = ngs->active_word_list[nf & 0x1]; for (i = 0, j = 0; ngs->fwdflat_wordlist[i] >= 0; i++) { if (bitvec_is_set(ngs->word_active, ngs->fwdflat_wordlist[i])) { *(nawl++) = ngs->fwdflat_wordlist[i]; j++; } } for (i = ps_search_start_wid(ngs); i < ps_search_n_words(ngs); i++) { if (bitvec_is_set(ngs->word_active, i)) { *(nawl++) = i; j++; } } if (!ngs->fwdtree) ++ngs->n_frame; ngs->n_active_word[nf & 0x1] = j; /* Return the number of frames processed. */ return 1;}
开发者ID:KuoHugo,项目名称:pocketsphinx-wp-demo,代码行数:61,
示例8: s3_read_mgau/* Read a Sphinx3 mean or variance file. */static int32s3_read_mgau(s2_semi_mgau_t *s, const char *file_name, float32 ***out_cb){ char tmp; FILE *fp; int32 i, blk, n; int32 n_mgau; int32 n_feat; int32 n_density; int32 *veclen; int32 byteswap, chksum_present; char **argname, **argval; uint32 chksum; E_INFO("Reading S3 mixture gaussian file '%s'/n", file_name); if ((fp = fopen(file_name, "rb")) == NULL) E_FATAL("fopen(%s,rb) failed/n", file_name); /* Read header, including argument-value info and 32-bit byteorder magic */ if (bio_readhdr(fp, &argname, &argval, &byteswap) < 0) E_FATAL("bio_readhdr(%s) failed/n", file_name); /* Parse argument-value list */ chksum_present = 0; for (i = 0; argname[i]; i++) { if (strcmp(argname[i], "version") == 0) { if (strcmp(argval[i], MGAU_PARAM_VERSION) != 0) E_WARN("Version mismatch(%s): %s, expecting %s/n", file_name, argval[i], MGAU_PARAM_VERSION); } else if (strcmp(argname[i], "chksum0") == 0) { chksum_present = 1; /* Ignore the associated value */ } } bio_hdrarg_free(argname, argval); argname = argval = NULL; chksum = 0; /* #Codebooks */ if (bio_fread(&n_mgau, sizeof(int32), 1, fp, byteswap, &chksum) != 1) E_FATAL("fread(%s) (#codebooks) failed/n", file_name); if (n_mgau != 1) { E_ERROR("%s: #codebooks (%d) != 1/n", file_name, n_mgau); fclose(fp); return -1; } /* #Features/codebook */ if (bio_fread(&n_feat, sizeof(int32), 1, fp, byteswap, &chksum) != 1) E_FATAL("fread(%s) (#features) failed/n", file_name); if (s->n_feat == 0) s->n_feat = n_feat; else if (n_feat != s->n_feat) E_FATAL("#Features streams(%d) != %d/n", n_feat, s->n_feat); /* #Gaussian densities/feature in each codebook */ if (bio_fread(&n_density, sizeof(int32), 1, fp, byteswap, &chksum) != 1) E_FATAL("fread(%s) (#density/codebook) failed/n", file_name); if (s->n_density == 0) s->n_density = n_density; else if (n_density != s->n_density) E_FATAL("%s: Number of densities per feature(%d) != %d/n", file_name, n_mgau, s->n_density); /* Vector length of feature stream */ veclen = ckd_calloc(s->n_feat, sizeof(int32)); if (bio_fread(veclen, sizeof(int32), s->n_feat, fp, byteswap, &chksum) != s->n_feat) E_FATAL("fread(%s) (feature vector-length) failed/n", file_name); for (i = 0, blk = 0; i < s->n_feat; ++i) { if (s->veclen[i] == 0) s->veclen[i] = veclen[i]; else if (veclen[i] != s->veclen[i]) E_FATAL("feature stream length %d is inconsistent (%d != %d)/n", i, veclen[i], s->veclen[i]); blk += veclen[i]; } /* #Floats to follow; for the ENTIRE SET of CODEBOOKS */ if (bio_fread(&n, sizeof(int32), 1, fp, byteswap, &chksum) != 1) E_FATAL("fread(%s) (total #floats) failed/n", file_name); if (n != n_mgau * n_density * blk) E_FATAL ("%s: #float32s(%d) doesn't match dimensions: %d x %d x %d/n", file_name, n, n_mgau, n_density, blk); *out_cb = ckd_calloc(s->n_feat, sizeof(float32 *)); for (i = 0; i < s->n_feat; ++i) { (*out_cb)[i] = (float32 *) ckd_calloc(n_density * veclen[i], sizeof(float32)); if (bio_fread ((*out_cb)[i], sizeof(float32), n_density * veclen[i], fp, byteswap, &chksum) != n_density * veclen[i]) E_FATAL("fread(%s, %d) of feat %d failed/n", file_name,//.........这里部分代码省略.........
开发者ID:elliotfiske,项目名称:cmu-lextool,代码行数:101,
示例9: ps_end_uttintps_end_utt(ps_decoder_t *ps){ int rv, i; if (ps->acmod->state == ACMOD_ENDED || ps->acmod->state == ACMOD_IDLE) { E_ERROR("Utterance is not started/n"); return -1; } acmod_end_utt(ps->acmod); /* Search any remaining frames. */ if ((rv = ps_search_forward(ps)) < 0) { ptmr_stop(&ps->perf); return rv; } /* Finish phone loop search. */ if (ps->phone_loop) { if ((rv = ps_search_finish(ps->phone_loop)) < 0) { ptmr_stop(&ps->perf); return rv; } } /* Search any frames remaining in the lookahead window. */ if (ps->acmod->output_frame >= ps->pl_window) { for (i = ps->acmod->output_frame - ps->pl_window; i < ps->acmod->output_frame; ++i) ps_search_step(ps->search, i); } /* Finish main search. */ if ((rv = ps_search_finish(ps->search)) < 0) { ptmr_stop(&ps->perf); return rv; } ptmr_stop(&ps->perf); /* Log a backtrace if requested. */ if (cmd_ln_boolean_r(ps->config, "-backtrace")) { const char* hyp; ps_seg_t *seg; int32 score; hyp = ps_get_hyp(ps, &score); if (hyp != NULL) { E_INFO("%s (%d)/n", hyp, score); E_INFO_NOFN("%-20s %-5s %-5s %-5s %-10s %-10s %-3s/n", "word", "start", "end", "pprob", "ascr", "lscr", "lback"); for (seg = ps_seg_iter(ps, &score); seg; seg = ps_seg_next(seg)) { char const *word; int sf, ef; int32 post, lscr, ascr, lback; word = ps_seg_word(seg); ps_seg_frames(seg, &sf, &ef); post = ps_seg_prob(seg, &ascr, &lscr, &lback); E_INFO_NOFN("%-20s %-5d %-5d %-1.3f %-10d %-10d %-3d/n", word, sf, ef, logmath_exp(ps_get_logmath(ps), post), ascr, lscr, lback); } } } return rv;}
开发者ID:dat2,项目名称:voice-hues,代码行数:65,
示例10: read_sendumpstatic int32read_sendump(s2_semi_mgau_t *s, mdef_t *mdef, char const *file){ FILE *fp; char line[1000]; int32 i, n; int32 do_swap, do_mmap; size_t filesize, offset; int n_clust = 256; /* Number of clusters (if zero, we are just using * 8-bit quantized weights) */ int r = s->n_density; int c = mdef_n_sen(mdef); s->n_sen = c; do_mmap = cmd_ln_boolean_r(s->config, "-mmap"); if ((fp = fopen(file, "rb")) == NULL) return -1; E_INFO("Loading senones from dump file %s/n", file); /* Read title size, title */ fread(&n, sizeof(int32), 1, fp); /* This is extremely bogus */ do_swap = 0; if (n < 1 || n > 999) { SWAP_INT32(&n); if (n < 1 || n > 999) { E_FATAL("Title length %x in dump file %s out of range/n", n, file); } do_swap = 1; } if (fread(line, sizeof(char), n, fp) != n) E_FATAL("Cannot read title/n"); if (line[n - 1] != '/0') E_FATAL("Bad title in dump file/n"); E_INFO("%s/n", line); /* Read header size, header */ fread(&n, 1, sizeof(n), fp); if (do_swap) SWAP_INT32(&n); if (fread(line, sizeof(char), n, fp) != n) E_FATAL("Cannot read header/n"); if (line[n - 1] != '/0') E_FATAL("Bad header in dump file/n"); /* Read other header strings until string length = 0 */ for (;;) { fread(&n, 1, sizeof(n), fp); if (do_swap) SWAP_INT32(&n); if (n == 0) break; if (fread(line, sizeof(char), n, fp) != n) E_FATAL("Cannot read header/n"); /* Look for a cluster count, if present */ if (!strncmp(line, "cluster_count ", strlen("cluster_count "))) { n_clust = atoi(line + strlen("cluster_count ")); } } /* Read #codewords, #pdfs */ fread(&r, 1, sizeof(r), fp); if (do_swap) SWAP_INT32(&r); fread(&c, 1, sizeof(c), fp); if (do_swap) SWAP_INT32(&c); E_INFO("Rows: %d, Columns: %d/n", r, c); if (n_clust) { E_ERROR ("Dump file is incompatible with PocketSphinx/n"); fclose(fp); return -1; } if (do_mmap) { E_INFO("Using memory-mapped I/O for senones/n"); } offset = ftell(fp); fseek(fp, 0, SEEK_END); filesize = ftell(fp); fseek(fp, offset, SEEK_SET); /* Allocate memory for pdfs (or memory map them) */ if (do_mmap) s->sendump_mmap = mmio_file_read(file); /* Otherwise, set up all pointers, etc. */ if (s->sendump_mmap) { s->mixw = ckd_calloc(s->n_feat, sizeof(*s->mixw)); for (i = 0; i < s->n_feat; i++) { /* Pointers into the mmap()ed 2d array */ s->mixw[i] = ckd_calloc(r, sizeof(**s->mixw)); } for (n = 0; n < s->n_feat; n++) { for (i = 0; i < r; i++) { s->mixw[n][i] = ((uint8 *) mmio_file_ptr(s->sendump_mmap)) + offset; offset += c; } } } else { s->mixw = ckd_calloc_3d(s->n_feat, r, c, sizeof(***s->mixw));//.........这里部分代码省略.........
开发者ID:elliotfiske,项目名称:cmu-lextool,代码行数:101,
示例11: read_mixwstatic int32read_mixw(s2_semi_mgau_t * s, char const *file_name, double SmoothMin){ char **argname, **argval; char eofchk; FILE *fp; int32 byteswap, chksum_present; uint32 chksum; float32 *pdf; int32 i, f, c, n; int32 n_sen; int32 n_feat; int32 n_comp; int32 n_err; E_INFO("Reading mixture weights file '%s'/n", file_name); if ((fp = fopen(file_name, "rb")) == NULL) E_FATAL("fopen(%s,rb) failed/n", file_name); /* Read header, including argument-value info and 32-bit byteorder magic */ if (bio_readhdr(fp, &argname, &argval, &byteswap) < 0) E_FATAL("bio_readhdr(%s) failed/n", file_name); /* Parse argument-value list */ chksum_present = 0; for (i = 0; argname[i]; i++) { if (strcmp(argname[i], "version") == 0) { if (strcmp(argval[i], MGAU_MIXW_VERSION) != 0) E_WARN("Version mismatch(%s): %s, expecting %s/n", file_name, argval[i], MGAU_MIXW_VERSION); } else if (strcmp(argname[i], "chksum0") == 0) { chksum_present = 1; /* Ignore the associated value */ } } bio_hdrarg_free(argname, argval); argname = argval = NULL; chksum = 0; /* Read #senones, #features, #codewords, arraysize */ if ((bio_fread(&n_sen, sizeof(int32), 1, fp, byteswap, &chksum) != 1) || (bio_fread(&n_feat, sizeof(int32), 1, fp, byteswap, &chksum) != 1) || (bio_fread(&n_comp, sizeof(int32), 1, fp, byteswap, &chksum) != 1) || (bio_fread(&n, sizeof(int32), 1, fp, byteswap, &chksum) != 1)) { E_FATAL("bio_fread(%s) (arraysize) failed/n", file_name); } if (n_feat != s->n_feat) E_FATAL("#Features streams(%d) != %d/n", n_feat, s->n_feat); if (n != n_sen * n_feat * n_comp) { E_FATAL ("%s: #float32s(%d) doesn't match header dimensions: %d x %d x %d/n", file_name, i, n_sen, n_feat, n_comp); } /* n_sen = number of mixture weights per codeword, which is * fixed at the number of senones since we have only one codebook. */ s->n_sen = n_sen; /* Quantized mixture weight arrays. */ s->mixw = ckd_calloc_3d(s->n_feat, s->n_density, n_sen, sizeof(***s->mixw)); /* Temporary structure to read in floats before conversion to (int32) logs3 */ pdf = (float32 *) ckd_calloc(n_comp, sizeof(float32)); /* Read senone probs data, normalize, floor, convert to logs3, truncate to 8 bits */ n_err = 0; for (i = 0; i < n_sen; i++) { for (f = 0; f < n_feat; f++) { if (bio_fread((void *) pdf, sizeof(float32), n_comp, fp, byteswap, &chksum) != n_comp) { E_FATAL("bio_fread(%s) (arraydata) failed/n", file_name); } /* Normalize and floor */ if (vector_sum_norm(pdf, n_comp) <= 0.0) n_err++; vector_floor(pdf, n_comp, SmoothMin); vector_sum_norm(pdf, n_comp); /* Convert to LOG, quantize, and transpose */ for (c = 0; c < n_comp; c++) { int32 qscr; qscr = -logmath_log(s->lmath_8b, pdf[c]); if ((qscr > MAX_NEG_MIXW) || (qscr < 0)) qscr = MAX_NEG_MIXW; s->mixw[f][c][i] = qscr; } } } if (n_err > 0) E_WARN("Weight normalization failed for %d senones/n", n_err); ckd_free(pdf);//.........这里部分代码省略.........
开发者ID:elliotfiske,项目名称:cmu-lextool,代码行数:101,
示例12: s2_semi_mgau_inits2_semi_mgau_t *s2_semi_mgau_init(cmd_ln_t *config, logmath_t *lmath, feat_t *fcb, mdef_t *mdef){ s2_semi_mgau_t *s; char const *sendump_path; float32 **fgau; int i; s = ckd_calloc(1, sizeof(*s)); s->config = config; s->lmath = logmath_retain(lmath); /* Log-add table. */ s->lmath_8b = logmath_init(logmath_get_base(lmath), SENSCR_SHIFT, TRUE); if (s->lmath_8b == NULL) { s2_semi_mgau_free(s); return NULL; } /* Ensure that it is only 8 bits wide so that fast_logmath_add() works. */ if (logmath_get_width(s->lmath_8b) != 1) { E_ERROR("Log base %f is too small to represent add table in 8 bits/n", logmath_get_base(s->lmath_8b)); s2_semi_mgau_free(s); return NULL; } /* Inherit stream dimensions from acmod, will be checked below. */ s->n_feat = feat_dimension1(fcb); s->veclen = ckd_calloc(s->n_feat, sizeof(int32)); for (i = 0; i < s->n_feat; ++i) s->veclen[i] = feat_dimension2(fcb, i); /* Read means and variances. */ if (s3_read_mgau(s, cmd_ln_str_r(s->config, "-mean"), &fgau) < 0) { s2_semi_mgau_free(s); return NULL; } s->means = (mfcc_t **)fgau; if (s3_read_mgau(s, cmd_ln_str_r(s->config, "-var"), &fgau) < 0) { s2_semi_mgau_free(s); return NULL; } s->vars = (mfcc_t **)fgau; /* Precompute (and fixed-point-ize) means, variances, and determinants. */ s->dets = (mfcc_t **)ckd_calloc_2d(s->n_feat, s->n_density, sizeof(**s->dets)); s3_precomp(s, s->lmath, cmd_ln_float32_r(s->config, "-varfloor")); /* Read mixture weights */ if ((sendump_path = cmd_ln_str_r(s->config, "-sendump"))) read_sendump(s, mdef, sendump_path); else read_mixw(s, cmd_ln_str_r(s->config, "-mixw"), cmd_ln_float32_r(s->config, "-mixwfloor")); s->ds_ratio = cmd_ln_int32_r(s->config, "-ds"); /* Determine top-N for each feature */ s->topn_beam = ckd_calloc(s->n_feat, sizeof(*s->topn_beam)); s->max_topn = cmd_ln_int32_r(s->config, "-topn"); split_topn(cmd_ln_str_r(s->config, "-topn_beam"), s->topn_beam, s->n_feat); E_INFO("Maximum top-N: %d ", s->max_topn); E_INFOCONT("Top-N beams:"); for (i = 0; i < s->n_feat; ++i) { E_INFOCONT(" %d", s->topn_beam[i]); } E_INFOCONT("/n"); /* Top-N scores from recent frames */ s->n_topn_hist = cmd_ln_int32_r(s->config, "-pl_window") + 2; s->topn_hist = (vqFeature_t ***) ckd_calloc_3d(s->n_topn_hist, s->n_feat, s->max_topn, sizeof(***s->topn_hist)); s->topn_hist_n = ckd_calloc_2d(s->n_topn_hist, s->n_feat, sizeof(**s->topn_hist_n)); for (i = 0; i < s->n_topn_hist; ++i) { int j; for (j = 0; j < s->n_feat; ++j) { int k; for (k = 0; k < s->max_topn; ++k) { s->topn_hist[i][j][k].score = WORST_DIST; s->topn_hist[i][j][k].codeword = k; } } } return s;}
开发者ID:elliotfiske,项目名称:cmu-lextool,代码行数:87,
示例13: parse_cmd_lnintparse_cmd_ln(int argc, char *argv[]){ uint32 isHelp; uint32 isExample; const char helpstr[] = "Description: /n/(copied from Eric's comments)/n/ * Create a tied-state-to-codebook mapping file for semi-continuous, /n/ * phone dependent or fully continuous Gaussian density tying."; const char examplestr[]= "Example: /n/(By Arthur: Not sure, may be obsolete) /n/mk_ts2cb -moddeffn semi -ts2cbfn ts2cb"; static arg_t defn[] = { { "-help", ARG_BOOLEAN, "no", "Shows the usage of the tool" }, { "-example", ARG_BOOLEAN, "no", "Shows example of how to use the tool" }, { "-ts2cbfn", ARG_STRING, NULL, "A SPHINX-III tied-state-to-cb file name" }, { "-moddeffn", ARG_STRING, NULL, "A SPHINX-III model definition file name" }, { "-tyingtype", /* either "semi", "pd", or "cont" */ ARG_STRING, "semi", "Output a state parameter def file for fully continuous models" }, { "-pclassfn", /* this switch is reference for -tyingtype pd */ ARG_STRING, NULL, "A SPHINX-II phone class file name" }, { NULL, 0, NULL, NULL } }; cmd_ln_parse(defn, argc, argv, TRUE); isHelp = cmd_ln_int32("-help"); isExample = cmd_ln_int32("-example"); if(isHelp) { printf("%s/n/n",helpstr); } if(isExample) { printf("%s/n/n",examplestr); } if(isHelp || isExample) { E_INFO("User asked for help or example./n"); exit(0); } return 0;}
开发者ID:feniks65,项目名称:pjn,代码行数:78,
示例14: live_utt_decode_blockint32 live_utt_decode_block (int16 *samples, int32 nsamples, int32 live_endutt, partialhyp_t **ohyp){ static int32 live_begin_new_utt = 1; static int32 frmno; static float32 ***live_feat = NULL; int32 live_nfr, live_nfeatvec; int32 nwds =0; float32 **mfcbuf; /* int i,j;*/ /* 2004/08/27 L Galescu <[email C++ E_NEW函数代码示例 C++ E_FATAL函数代码示例
|