本文整理汇总了C++中cmd_ln_float32_r函数的典型用法代码示例。如果您正苦于以下问题:C++ cmd_ln_float32_r函数的具体用法?C++ cmd_ln_float32_r怎么用?C++ cmd_ln_float32_r使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cmd_ln_float32_r函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fe_parse_melfb_params
static int
fe_parse_melfb_params(cmd_ln_t *config, fe_t *fe, melfb_t * mel)
{
mel->sampling_rate = fe->sampling_rate;
mel->fft_size = fe->fft_size;
mel->num_cepstra = fe->num_cepstra;
mel->num_filters = cmd_ln_int32_r(config, "-nfilt");
if (fe->log_spec)
fe->feature_dimension = mel->num_filters;
else
fe->feature_dimension = fe->num_cepstra;
mel->upper_filt_freq = cmd_ln_float32_r(config, "-upperf");
mel->lower_filt_freq = cmd_ln_float32_r(config, "-lowerf");
mel->doublewide = cmd_ln_boolean_r(config, "-doublebw");
mel->warp_type = cmd_ln_str_r(config, "-warp_type");
mel->warp_params = cmd_ln_str_r(config, "-warp_params");
mel->lifter_val = cmd_ln_int32_r(config, "-lifter");
mel->unit_area = cmd_ln_boolean_r(config, "-unit_area");
mel->round_filters = cmd_ln_boolean_r(config, "-round_filters");
if (fe_warp_set(mel, mel->warp_type) != FE_SUCCESS) {
E_ERROR("Failed to initialize the warping function.\n");
return -1;
}
fe_warp_set_parameters(mel, mel->warp_params, mel->sampling_rate);
return 0;
}
示例2: fe_parse_general_params
int
fe_parse_general_params(cmd_ln_t *config, fe_t * fe)
{
int j;
fe->config = config;
fe->sampling_rate = cmd_ln_float32_r(config, "-samprate");
fe->frame_rate = (int16)cmd_ln_int32_r(config, "-frate");
if (cmd_ln_boolean_r(config, "-dither")) {
fe->dither = 1;
fe->seed = cmd_ln_int32_r(config, "-seed");
}
#ifdef WORDS_BIGENDIAN
fe->swap = strcmp("big", cmd_ln_str_r(config, "-input_endian")) == 0 ? 0 : 1;
#else
fe->swap = strcmp("little", cmd_ln_str_r(config, "-input_endian")) == 0 ? 0 : 1;
#endif
fe->window_length = cmd_ln_float32_r(config, "-wlen");
fe->pre_emphasis_alpha = cmd_ln_float32_r(config, "-alpha");
fe->num_cepstra = (uint8)cmd_ln_int32_r(config, "-ncep");
fe->fft_size = (int16)cmd_ln_int32_r(config, "-nfft");
/* Check FFT size, compute FFT order (log_2(n)) */
for (j = fe->fft_size, fe->fft_order = 0; j > 1; j >>= 1, fe->fft_order++) {
if (((j % 2) != 0) || (fe->fft_size <= 0)) {
E_ERROR("fft: number of points must be a power of 2 (is %d)\n",
fe->fft_size);
return -1;
}
}
/* Verify that FFT size is greater or equal to window length. */
if (fe->fft_size < (int)(fe->window_length * fe->sampling_rate)) {
E_ERROR("FFT: Number of points must be greater or equal to frame size (%d samples)\n",
(int)(fe->window_length * fe->sampling_rate));
return -1;
}
fe->remove_dc = cmd_ln_boolean_r(config, "-remove_dc");
if (0 == strcmp(cmd_ln_str_r(config, "-transform"), "dct"))
fe->transform = DCT_II;
else if (0 == strcmp(cmd_ln_str_r(config, "-transform"), "legacy"))
fe->transform = LEGACY_DCT;
else if (0 == strcmp(cmd_ln_str_r(config, "-transform"), "htk"))
fe->transform = DCT_HTK;
else {
E_ERROR("Invalid transform type (values are 'dct', 'legacy', 'htk')\n");
return -1;
}
if (cmd_ln_boolean_r(config, "-logspec"))
fe->log_spec = RAW_LOG_SPEC;
if (cmd_ln_boolean_r(config, "-smoothspec"))
fe->log_spec = SMOOTH_LOG_SPEC;
return 0;
}
示例3: srch_FLAT_FWD_bestpath_impl
glist_t
srch_FLAT_FWD_bestpath_impl(void *srch, /**< A void pointer to a search structure */
dag_t * dag)
{
srch_t *s;
srch_FLAT_FWD_graph_t *fwg;
float32 bestpathlw;
float64 lwf;
srch_hyp_t *tmph, *bph;
glist_t ghyp, rhyp;
s = (srch_t *) srch;
fwg = (srch_FLAT_FWD_graph_t *) s->grh->graph_struct;
assert(fwg->lathist);
bestpathlw = cmd_ln_float32_r(kbcore_config(fwg->kbcore), "-bestpathlw");
lwf = bestpathlw ? (bestpathlw / cmd_ln_float32_r(kbcore_config(fwg->kbcore), "-lw")) : 1.0;
flat_fwd_dag_add_fudge_edges(fwg,
dag,
cmd_ln_int32_r(kbcore_config(fwg->kbcore), "-dagfudge"),
cmd_ln_int32_r(kbcore_config(fwg->kbcore), "-min_endfr"),
(void *) fwg->lathist, s->kbc->dict);
/* Bypass filler nodes */
if (!dag->filler_removed) {
/* If Viterbi search terminated in filler word coerce final DAG node to FINISH_WORD */
if (dict_filler_word(s->kbc->dict, dag->end->wid))
dag->end->wid = s->kbc->dict->finishwid;
if (dag_bypass_filler_nodes(dag, lwf, s->kbc->dict, s->kbc->fillpen) < 0)
E_ERROR("maxedge limit (%d) exceeded\n", dag->maxedge);
else
dag->filler_removed = 1;
}
bph =
dag_search(dag, s->uttid, lwf, dag->end,
s->kbc->dict, s->kbc->lmset->cur_lm, s->kbc->fillpen);
if (bph != NULL) {
ghyp = NULL;
for (tmph = bph; tmph; tmph = tmph->next)
ghyp = glist_add_ptr(ghyp, (void *) tmph);
rhyp = glist_reverse(ghyp);
return rhyp;
}
else {
return NULL;
}
}
示例4: ngram_model_read
ngram_model_t *
ngram_model_read(cmd_ln_t * config,
const char *file_name,
ngram_file_type_t file_type, logmath_t * lmath)
{
ngram_model_t *model = NULL;
switch (file_type) {
case NGRAM_AUTO:{
if ((model =
ngram_model_trie_read_bin(config, file_name,
lmath)) != NULL)
break;
if ((model =
ngram_model_trie_read_arpa(config, file_name,
lmath)) != NULL)
break;
if ((model =
ngram_model_trie_read_dmp(config, file_name,
lmath)) != NULL)
break;
return NULL;
}
case NGRAM_ARPA:
model = ngram_model_trie_read_arpa(config, file_name, lmath);
break;
case NGRAM_BIN:
if ((model =
ngram_model_trie_read_bin(config, file_name, lmath)) != NULL)
break;
if ((model =
ngram_model_trie_read_dmp(config, file_name, lmath)) != NULL)
break;
return NULL;
default:
E_ERROR("language model file type not supported\n");
return NULL;
}
/* Now set weights based on config if present. */
if (config) {
float32 lw = 1.0;
float32 wip = 1.0;
if (cmd_ln_exists_r(config, "-lw"))
lw = cmd_ln_float32_r(config, "-lw");
if (cmd_ln_exists_r(config, "-wip"))
wip = cmd_ln_float32_r(config, "-wip");
ngram_model_apply_weights(model, lw, wip);
}
return model;
}
示例5: srch_FLAT_FWD_nbest_impl
glist_t
srch_FLAT_FWD_nbest_impl(void *srch, /**< A void pointer to a search structure */
dag_t * dag)
{
srch_t *s;
srch_FLAT_FWD_graph_t *fwg;
float32 bestpathlw;
float64 lwf;
char str[2000];
s = (srch_t *) srch;
fwg = (srch_FLAT_FWD_graph_t *) s->grh->graph_struct;
assert(fwg->lathist);
if (!(cmd_ln_exists_r(kbcore_config(fwg->kbcore), "-nbestdir")
&& cmd_ln_str_r(kbcore_config(fwg->kbcore), "-nbestdir")))
return NULL;
ctl_outfile(str, cmd_ln_str_r(kbcore_config(fwg->kbcore), "-nbestdir"),
cmd_ln_str_r(kbcore_config(fwg->kbcore), "-nbestext"),
(s->uttfile ? s->uttfile : s->uttid), s->uttid,
cmd_ln_boolean_r(kbcore_config(fwg->kbcore), "-build_outdirs"));
bestpathlw = cmd_ln_float32_r(kbcore_config(fwg->kbcore), "-bestpathlw");
lwf = bestpathlw ? (bestpathlw / cmd_ln_float32_r(kbcore_config(fwg->kbcore), "-lw")) : 1.0;
flat_fwd_dag_add_fudge_edges(fwg,
dag,
cmd_ln_int32_r(kbcore_config(fwg->kbcore), "-dagfudge"),
cmd_ln_int32_r(kbcore_config(fwg->kbcore), "-min_endfr"),
(void *) fwg->lathist, s->kbc->dict);
/* Bypass filler nodes */
if (!dag->filler_removed) {
/* If Viterbi search terminated in filler word coerce final DAG node to FINISH_WORD */
if (dict_filler_word(s->kbc->dict, dag->end->wid))
dag->end->wid = s->kbc->dict->finishwid;
dag_remove_unreachable(dag);
if (dag_bypass_filler_nodes(dag, lwf, s->kbc->dict, s->kbc->fillpen) < 0)
E_ERROR("maxedge limit (%d) exceeded\n", dag->maxedge);
}
dag_compute_hscr(dag, kbcore_dict(s->kbc), kbcore_lm(s->kbc), lwf);
dag_remove_bypass_links(dag);
dag->filler_removed = 0;
nbest_search(dag, str, s->uttid, lwf,
kbcore_dict(s->kbc),
kbcore_lm(s->kbc), kbcore_fillpen(s->kbc)
);
return NULL;
}
示例6: main
int
main(int argc, char *argv[])
{
cmd_ln_t *config;
logmath_t *lmath;
acmod_t *acmod[5];
sbthread_t *thr[5];
featbuf_t *fb;
FILE *raw;
int16 buf[2048];
int nsamp;
int i;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", TESTDATADIR "/hub4wsj_sc_8k",
"-lm", TESTDATADIR "/bn10000.3g.arpa",
"-dict", TESTDATADIR "/bn10000.dic",
"-compallsen", "yes",
NULL);
ps_init_defaults(config);
fb = featbuf_init(config);
TEST_ASSERT(fb);
lmath = logmath_init(cmd_ln_float32_r(config, "-logbase"),
0, FALSE);
acmod[0] = acmod_init(config, lmath, fb);
TEST_ASSERT(acmod[0]);
/* Create a couple threads to pull features out of it. */
for (i = 0; i < 5; ++i) {
if (i != 0)
acmod[i] = acmod_copy(acmod[0]);
thr[i] = sbthread_start(NULL, consumer, acmod[i]);
}
/* Feed them some data. */
raw = fopen(TESTDATADIR "/chan3.raw", "rb");
featbuf_producer_start_utt(fb, "chan3");
while ((nsamp = fread(buf, 2, 2048, raw)) > 0) {
int rv;
rv = featbuf_producer_process_raw(fb, buf, nsamp, FALSE);
printf("Producer processed %d samples\n", nsamp);
TEST_ASSERT(rv > 0);
}
fclose(raw);
printf("Waiting for consumers\n");
featbuf_producer_end_utt(fb);
printf("Finished waiting\n");
/* Reap those threads. */
for (i = 0; i < 5; ++i) {
sbthread_wait(thr[i]);
sbthread_free(thr[i]);
acmod_free(acmod[i]);
printf("Reaped consumer %p\n", acmod[i]);
}
featbuf_free(fb);
logmath_free(lmath);
cmd_ln_free_r(config);
return 0;
}
示例7: ps_set_jsgf_string
int
ps_set_jsgf_string(ps_decoder_t *ps, const char *name, const char *jsgf_string)
{
fsg_model_t *fsg;
jsgf_rule_t *rule;
char const *toprule;
jsgf_t *jsgf = jsgf_parse_string(jsgf_string, NULL);
float lw;
int result;
if (!jsgf)
return -1;
rule = NULL;
/* Take the -toprule if specified. */
if ((toprule = cmd_ln_str_r(ps->config, "-toprule"))) {
rule = jsgf_get_rule(jsgf, toprule);
if (rule == NULL) {
E_ERROR("Start rule %s not found\n", toprule);
return -1;
}
} else {
rule = jsgf_get_public_rule(jsgf);
if (rule == NULL) {
E_ERROR("No public rules found in input string\n");
return -1;
}
}
lw = cmd_ln_float32_r(ps->config, "-lw");
fsg = jsgf_build_fsg(jsgf, rule, ps->lmath, lw);
result = ps_set_fsg(ps, name, fsg);
fsg_model_free(fsg);
return result;
}
示例8: acmod_init_feat
static int
acmod_init_feat(acmod_t *acmod)
{
acmod->fcb =
feat_init(cmd_ln_str_r(acmod->config, "-feat"),
cmn_type_from_str(cmd_ln_str_r(acmod->config,"-cmn")),
cmd_ln_boolean_r(acmod->config, "-varnorm"),
agc_type_from_str(cmd_ln_str_r(acmod->config, "-agc")),
1, cmd_ln_int32_r(acmod->config, "-ceplen"));
if (acmod->fcb == NULL)
return -1;
if (cmd_ln_str_r(acmod->config, "-lda")) {
E_INFO("Reading linear feature transformation from %s\n",
cmd_ln_str_r(acmod->config, "-lda"));
if (feat_read_lda(acmod->fcb,
cmd_ln_str_r(acmod->config, "-lda"),
cmd_ln_int32_r(acmod->config, "-ldadim")) < 0)
return -1;
}
if (cmd_ln_str_r(acmod->config, "-svspec")) {
int32 **subvecs;
E_INFO("Using subvector specification %s\n",
cmd_ln_str_r(acmod->config, "-svspec"));
if ((subvecs = parse_subvecs(cmd_ln_str_r(acmod->config, "-svspec"))) == NULL)
return -1;
if ((feat_set_subvecs(acmod->fcb, subvecs)) < 0)
return -1;
}
if (cmd_ln_exists_r(acmod->config, "-agcthresh")
&& 0 != strcmp(cmd_ln_str_r(acmod->config, "-agc"), "none")) {
agc_set_threshold(acmod->fcb->agc_struct,
cmd_ln_float32_r(acmod->config, "-agcthresh"));
}
if (acmod->fcb->cmn_struct
&& cmd_ln_exists_r(acmod->config, "-cmninit")) {
char *c, *cc, *vallist;
int32 nvals;
vallist = ckd_salloc(cmd_ln_str_r(acmod->config, "-cmninit"));
c = vallist;
nvals = 0;
while (nvals < acmod->fcb->cmn_struct->veclen
&& (cc = strchr(c, ',')) != NULL) {
*cc = '\0';
acmod->fcb->cmn_struct->cmn_mean[nvals] = FLOAT2MFCC(atof_c(c));
c = cc + 1;
++nvals;
}
if (nvals < acmod->fcb->cmn_struct->veclen && *c != '\0') {
acmod->fcb->cmn_struct->cmn_mean[nvals] = FLOAT2MFCC(atof_c(c));
}
ckd_free(vallist);
}
return 0;
}
示例9: file
bool FSpeechRecognitionWorker::Init() {
std::string modelPath = contentPath_str + "model/" + langStr + "/" + langStr;
std::string languageModel = contentPath_str + "model/" + langStr + "/" + langStr + ".lm.bin";
std::string dictionaryPath = contentPath_str + "model/" + langStr + "/" + langStr + ".dict";
// load dictionary
dictionaryMap.clear();
std::ifstream file(dictionaryPath);
std::vector<std::string> words;
std::string currentLine;
while (file.good())
{
std::getline(file, currentLine);
std::string word = currentLine.substr(0, currentLine.find(" "));
std::string phrase = currentLine.substr(currentLine.find(" ") + 1, currentLine.size());
dictionaryMap.insert(make_pair(word, phrase));
}
// Start Sphinx
config = cmd_ln_init(NULL, ps_args(), 1,
"-hmm", modelPath.c_str(),
"-lm", languageModel.c_str(),
NULL);
ps = ps_init(config);
if (!Manager | !ps) {
ClientMessage(FString(TEXT("Speech Recognition Thread failed to start")));
initSuccess = false;
return false;
}
// only include the words/phrases that have been added
for (auto It = dictionaryList.CreateConstIterator(); It; ++It)
{
FString word = *It;
std::string wordStr = std::string(TCHAR_TO_UTF8(*word));
if (dictionaryMap.find(wordStr) != dictionaryMap.end())
{
std::string phraseStr = dictionaryMap.at(wordStr);
ps_add_word(ps, wordStr.c_str(), phraseStr.c_str(), TRUE);
}
}
// attempt to open the default recording device
if ((ad = ad_open_dev(cmd_ln_str_r(config, "-adcdev"),
(int)cmd_ln_float32_r(config,
"-samprate"))) == NULL) {
ClientMessage(FString(TEXT("Failed to open audio device")));
initSuccess = false;
return initSuccess;
}
utt_started = 0;
return true;
}
示例10: main
int
main(int argc, char *argv[])
{
cmd_ln_t *config;
ngram_model_t *lm = NULL;
logmath_t *lmath;
const char *lmfn, *probdefn, *lsnfn, *text;
if ((config = cmd_ln_parse_r(NULL, defn, argc, argv, TRUE)) == NULL)
return 1;
verbose = cmd_ln_boolean_r(config, "-verbose");
/* Create log math object. */
if ((lmath = logmath_init
(cmd_ln_float64_r(config, "-logbase"), 0, 0)) == NULL) {
E_FATAL("Failed to initialize log math\n");
}
/* Load the language model. */
lmfn = cmd_ln_str_r(config, "-lm");
if (lmfn == NULL
|| (lm = ngram_model_read(config, lmfn,
NGRAM_AUTO, lmath)) == NULL) {
E_FATAL("Failed to load language model from %s\n",
cmd_ln_str_r(config, "-lm"));
}
if ((probdefn = cmd_ln_str_r(config, "-probdef")) != NULL)
ngram_model_read_classdef(lm, probdefn);
ngram_model_apply_weights(lm,
cmd_ln_float32_r(config, "-lw"),
cmd_ln_float32_r(config, "-wip"),
cmd_ln_float32_r(config, "-uw"));
/* Now evaluate some text. */
lsnfn = cmd_ln_str_r(config, "-lsn");
text = cmd_ln_str_r(config, "-text");
if (lsnfn) {
evaluate_file(lm, lmath, lsnfn);
}
else if (text) {
evaluate_string(lm, lmath, text);
}
return 0;
}
示例11: models_init
static void
models_init(void)
{
mdef = mdef_init(cmd_ln_str_r(config, "-mdef"), 1);
dict = dict_init(mdef,
cmd_ln_str_r(config, "-dict"),
cmd_ln_str_r(config, "-fdict"),
cmd_ln_boolean_r(config, "-lts_mismatch"),
cmd_ln_boolean_r(config, "-mdef_fillers"),
FALSE, TRUE);
lmset = lmset_init(cmd_ln_str_r(config, "-lm"),
cmd_ln_str_r(config, "-lmctlfn"),
cmd_ln_str_r(config, "-ctl_lm"),
cmd_ln_str_r(config, "-lmname"),
cmd_ln_str_r(config, "-lmdumpdir"),
cmd_ln_float32_r(config, "-lw"),
cmd_ln_float32_r(config, "-wip"),
cmd_ln_float32_r(config, "-uw"), dict,
logmath);
/* Filler penalties */
fpen = fillpen_init(dict, cmd_ln_str_r(config, "-fillpen"),
cmd_ln_float32_r(config, "-silprob"),
cmd_ln_float32_r(config, "-fillprob"),
cmd_ln_float32_r(config, "-lw"),
cmd_ln_float32_r(config, "-wip"),
logmath);
}
示例12: srch_FLAT_FWD_srch_one_frame_lv2
int
srch_FLAT_FWD_srch_one_frame_lv2(void *srch)
{
int32 bestscr; /* Best state score for any whmm evaluated in this frame */
int32 whmm_thresh; /* Threshold for any whmm to stay alive in search */
int32 word_thresh; /* Threshold for a word-final whmm to succeed */
int32 phone_penalty;
srch_FLAT_FWD_graph_t *fwg;
srch_t *s;
s = (srch_t *) srch;
fwg = (srch_FLAT_FWD_graph_t *) s->grh->graph_struct;
ptmr_start(&(fwg->tm_hmmeval));
bestscr = whmm_eval(fwg, s->ascr->senscr);
/* E_INFO("bestscr %d RENORM_THRESH %d\n",bestscr, RENORM_THRESH); */
ptmr_stop(&(fwg->tm_hmmeval));
whmm_thresh = bestscr + s->beam->hmm;
word_thresh = bestscr + s->beam->word;
phone_penalty = logs3(kbcore_logmath(s->kbc), cmd_ln_float32_r(kbcore_config(fwg->kbcore), "-phonepen"));
assert(s->ascr->senscr);
/* E_INFO("fwg->n_frm %d\n",fwg->n_frm); */
dump_fwd_dbg_info(fwg, fwg->fwdDBG, s->ascr, bestscr, whmm_thresh,
word_thresh, s->ascr->senscr);
{
ptmr_start(&(fwg->tm_hmmtrans));
fwg->lathist->frm_latstart[fwg->n_frm] = fwg->lathist->n_lat_entry;
whmm_exit(fwg, fwg->whmm, fwg->lathist,
whmm_thresh, word_thresh,
phone_penalty);
ptmr_stop(&(fwg->tm_hmmtrans));
/* Please read, the In whmm_exit, if word ends are reach,
n_lat_entry will increase, see whmm_exit(). Then word_trans
will be triggered.
*/
ptmr_start(&(fwg->tm_wdtrans));
if (fwg->lathist->frm_latstart[fwg->n_frm] < fwg->lathist->n_lat_entry)
word_trans(fwg, fwg->whmm, fwg->lathist, whmm_thresh, phone_penalty);
ptmr_stop(&(fwg->tm_wdtrans));
}
if (bestscr < RENORM_THRESH) {
E_INFO("Frame %d: bestscore= %d; renormalizing\n", fwg->n_frm,
bestscr);
whmm_renorm(fwg, fwg->whmm, bestscr);
}
fwg->lathist->n_frm++;
fwg->n_frm++;
return SRCH_SUCCESS;
}
示例13: gauden_mllr_transform
int32
gauden_mllr_transform(gauden_t *g, ps_mllr_t *mllr, cmd_ln_t *config)
{
int32 i, m, f, d, *flen;
float32 ****fgau;
/* Reload means and variances (un-precomputed). */
fgau = NULL;
gauden_param_read(&fgau, &g->n_mgau, &g->n_feat, &g->n_density,
&g->featlen, cmd_ln_str_r(config, "-mean"));
g->mean = (mfcc_t ****)fgau;
fgau = NULL;
gauden_param_read(&fgau, &m, &f, &d, &flen, cmd_ln_str_r(config, "-var"));
g->var = (mfcc_t ****)fgau;
/* 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);
/* Transform codebook for each stream s */
for (i = 0; i < g->n_mgau; ++i) {
for (f = 0; f < g->n_feat; ++f) {
float64 *temp;
temp = (float64 *) ckd_calloc(g->featlen[f], sizeof(float64));
/* Transform each density d in selected codebook */
for (d = 0; d < g->n_density; d++) {
int l;
for (l = 0; l < g->featlen[f]; l++) {
temp[l] = 0.0;
for (m = 0; m < g->featlen[f]; m++) {
/* FIXME: For now, only one class, hence the zeros below. */
temp[l] += mllr->A[f][0][l][m] * g->mean[i][f][d][m];
}
temp[l] += mllr->b[f][0][l];
}
for (l = 0; l < g->featlen[f]; l++) {
g->mean[i][f][d][l] = (float32) temp[l];
g->var[i][f][d][l] *= mllr->h[f][0][l];
}
}
ckd_free(temp);
}
}
/* Re-precompute (if we aren't adapting variances this isn't
* actually necessary...) */
gauden_dist_precompute(g, g->lmath, cmd_ln_float32_r(config, "-varfloor"));
return 0;
}
示例14: main
int
main(int argc, char *argv[])
{
ngram_trie_t *t;
dict_t *dict;
bin_mdef_t *mdef;
logmath_t *lmath;
cmd_ln_t *config;
FILE *arpafh;
config = cmd_ln_init(NULL, ps_args(), TRUE,
"-hmm", TESTDATADIR "/hub4wsj_sc_8k",
"-dict", TESTDATADIR "/bn10000.homos.dic",
NULL);
ps_init_defaults(config);
lmath = logmath_init(cmd_ln_float32_r(config, "-logbase"),
0, FALSE);
mdef = bin_mdef_read(config, cmd_ln_str_r(config, "-mdef"));
dict = dict_init(config, mdef);
t = ngram_trie_init(dict, lmath);
arpafh = fopen(TESTDATADIR "/bn10000.3g.arpa", "r");
ngram_trie_read_arpa(t, arpafh);
fclose(arpafh);
/* Test 1, 2, 3-gram probs without backoff. */
test_lookups(t, lmath);
arpafh = fopen("tmp.bn10000.3g.arpa", "w");
ngram_trie_write_arpa(t, arpafh);
fclose(arpafh);
ngram_trie_free(t);
t = ngram_trie_init(dict, lmath);
arpafh = fopen("tmp.bn10000.3g.arpa", "r");
ngram_trie_read_arpa(t, arpafh);
fclose(arpafh);
/* Test 1, 2, 3-gram probs without backoff. */
test_lookups(t, lmath);
/* Test adding nodes. */
test_add_nodes(t, lmath);
ngram_trie_free(t);
dict_free(dict);
logmath_free(lmath);
bin_mdef_free(mdef);
cmd_ln_free_r(config);
return 0;
}
示例15: acmod_init_am
static int
acmod_init_am(acmod_t *acmod)
{
char const *mdeffn, *tmatfn;
/* Read model definition. */
if ((mdeffn = cmd_ln_str_r(acmod->config, "-mdef")) == NULL) {
E_ERROR("Must specify -mdef or -hmm\n");
return -1;
}
if ((acmod->mdef = bin_mdef_read(acmod->config, mdeffn)) == NULL) {
E_ERROR("Failed to read model definition from %s\n", mdeffn);
return -1;
}
/* Read transition matrices. */
if ((tmatfn = cmd_ln_str_r(acmod->config, "-tmat")) == NULL) {
E_ERROR("No tmat file specified\n");
return -1;
}
acmod->tmat = tmat_init(tmatfn, acmod->lmath,
cmd_ln_float32_r(acmod->config, "-tmatfloor"),
TRUE);
/* Read the acoustic models. */
if ((cmd_ln_str_r(acmod->config, "-mean") == NULL)
|| (cmd_ln_str_r(acmod->config, "-var") == NULL)
|| (cmd_ln_str_r(acmod->config, "-tmat") == NULL)) {
E_ERROR("No mean/var/tmat files specified\n");
return -1;
}
if (cmd_ln_str_r(acmod->config, "-senmgau")) {
E_INFO("Using general multi-stream GMM computation\n");
acmod->mgau = ms_mgau_init(acmod->config, acmod->lmath, acmod->mdef);
if (acmod->mgau == NULL)
return -1;
}
else {
E_INFO("Attempting to use SCHMM computation module\n");
if ((acmod->mgau = s2_semi_mgau_init(acmod)) == NULL) {
E_INFO("Attempting to use PTHMM computation module\n");
if ((acmod->mgau = ptm_mgau_init(acmod)) == NULL) {
E_INFO("Falling back to general multi-stream GMM computation\n");
acmod->mgau = ms_mgau_init(acmod->config, acmod->lmath, acmod->mdef);
if (acmod->mgau == NULL)
return -1;
}
}
}
return 0;
}