本文整理汇总了C++中ckd_calloc函数的典型用法代码示例。如果您正苦于以下问题:C++ ckd_calloc函数的具体用法?C++ ckd_calloc怎么用?C++ ckd_calloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ckd_calloc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: s3gau_read_maybe_full
int
s3gau_read_maybe_full(const char *fn,
vector_t *****out,
uint32 *out_n_mgau,
uint32 *out_n_feat,
uint32 *out_n_density,
uint32 **out_veclen,
uint32 need_full)
{
FILE *fp;
const char *do_chk;
const char *ver;
uint32 n_mgau, n_feat, n_density;
uint32 *veclen, maxveclen;
uint32 blk, i, j, k, l, r, n;
uint32 chksum = 0;
uint32 sv_chksum, ignore = 0;
float32 *raw;
vector_t ****o;
uint32 swap;
fp = s3open(fn, "rb", &swap);
if (fp == NULL)
return S3_ERROR;
/* check version id */
ver = s3get_gvn_fattr("version");
if (ver) {
if (strcmp(ver, GAU_FILE_VERSION) != 0) {
E_FATAL("Version mismatch for %s, file ver: %s != reader ver: %s\n",
fn, ver, GAU_FILE_VERSION);
}
}
else {
E_FATAL("No version attribute for %s\n", fn);
}
/* if do_chk is non-NULL, there is a checksum after the data in the file */
do_chk = s3get_gvn_fattr("chksum0");
if (do_chk && !strcmp(do_chk, "no")) {
do_chk = NULL;
}
if (bio_fread(&n_mgau, sizeof(uint32), 1, fp, swap, &chksum) != 1) {
goto error;
}
if (bio_fread(&n_feat, sizeof(uint32), 1, fp, swap, &chksum) != 1) {
goto error;
}
if (bio_fread(&n_density, sizeof(uint32), 1, fp, swap, &chksum) != 1) {
goto error;
}
veclen = ckd_calloc(n_feat, sizeof(uint32));
if (bio_fread(veclen, sizeof(uint32), n_feat, fp, swap, &chksum) != n_feat) {
goto error;
}
if (bio_fread_1d((void **)&raw, sizeof(float32), &n, fp, swap, &chksum) < 0) {
ckd_free(veclen);
goto error;
}
for (i = 0, blk = 0, maxveclen = 0; i < n_feat; i++) {
blk += veclen[i] * veclen[i];
if (veclen[i] > maxveclen) maxveclen = veclen[i];
}
if (n != n_mgau * n_density * blk) {
if (need_full)
E_ERROR("Failed to read full covariance file %s (expected %d values, got %d)\n",
fn, n_mgau * n_density * blk, n);
goto error;
}
o = (vector_t ****)ckd_calloc_4d(n_mgau, n_feat, n_density,
maxveclen, sizeof(vector_t));
for (i = 0, r = 0; i < n_mgau; i++) {
for (j = 0; j < n_feat; j++) {
for (k = 0; k < n_density; k++) {
for (l = 0; l < veclen[j]; l++) {
o[i][j][k][l] = &raw[r];
r += veclen[j];
}
}
}
}
if (do_chk) {
/* See if the checksum in the file matches that which
was computed from the read data */
if (bio_fread(&sv_chksum, sizeof(uint32), 1, fp, swap, &ignore) != 1) {
goto error;
}
//.........这里部分代码省略.........
开发者ID:ShahAlay,项目名称:sphinxtrain,代码行数:101,代码来源:s3gau_full_io.c
示例2: feat_s2mfc2feat
int32
feat_s2mfc2feat(feat_t * fcb, const char *file, const char *dir, const char *cepext,
int32 sf, int32 ef, mfcc_t *** feat, int32 maxfr)
{
char *path;
char *ps = "/";
int32 win, nfr;
int32 file_length, cepext_length, path_length = 0;
mfcc_t **mfc;
if (fcb->cepsize <= 0) {
E_ERROR("Bad cepsize: %d\n", fcb->cepsize);
return -1;
}
if (cepext == NULL)
cepext = "";
/*
* Create mfc filename, combining file, dir and extension if
* necessary
*/
/*
* First we decide about the path. If dir is defined, then use
* it. Otherwise assume the filename already contains the path.
*/
if (dir == NULL) {
dir = "";
ps = "";
/*
* This is not true but some 3rd party apps
* may parse the output explicitly checking for this line
*/
E_INFO("At directory . (current directory)\n");
}
else {
E_INFO("At directory %s\n", dir);
/*
* Do not forget the path separator!
*/
path_length += strlen(dir) + 1;
}
/*
* Include cepext, if it's not already part of the filename.
*/
file_length = strlen(file);
cepext_length = strlen(cepext);
if ((file_length > cepext_length)
&& (strcmp(file + file_length - cepext_length, cepext) == 0)) {
cepext = "";
cepext_length = 0;
}
/*
* Do not forget the '\0'
*/
path_length += file_length + cepext_length + 1;
path = (char*) ckd_calloc(path_length, sizeof(char));
#ifdef HAVE_SNPRINTF
/*
* Paranoia is our best friend...
*/
while ((file_length = snprintf(path, path_length, "%s%s%s%s", dir, ps, file, cepext)) > path_length) {
path_length = file_length;
path = (char*) ckd_realloc(path, path_length * sizeof(char));
}
#else
sprintf(path, "%s%s%s%s", dir, ps, file, cepext);
#endif
win = feat_window_size(fcb);
/* Pad maxfr with win, so we read enough raw feature data to
* calculate the requisite number of dynamic features. */
if (maxfr >= 0)
maxfr += win * 2;
if (feat != NULL) {
/* Read mfc file including window or padding if necessary. */
nfr = feat_s2mfc_read(path, win, sf, ef, &mfc, maxfr, fcb->cepsize);
ckd_free(path);
if (nfr < 0) {
ckd_free_2d((void **) mfc);
return -1;
}
/* Actually compute the features */
feat_compute_utt(fcb, mfc, nfr, win, feat);
ckd_free_2d((void **) mfc);
}
else {
/* Just calculate the number of frames we would need. */
nfr = feat_s2mfc_read(path, win, sf, ef, NULL, maxfr, fcb->cepsize);
ckd_free(path);
if (nfr < 0)
return nfr;
}
//.........这里部分代码省略.........
开发者ID:adityasriteja4u,项目名称:pocketsphinx-fpga,代码行数:101,代码来源:feat.c
示例3: feat_init
feat_t *
feat_init(char const *type, cmn_type_t cmn, int32 varnorm,
agc_type_t agc, int32 breport, int32 cepsize)
{
feat_t *fcb;
if (cepsize == 0)
cepsize = 13;
if (breport)
E_INFO
("Initializing feature stream to type: '%s', ceplen=%d, CMN='%s', VARNORM='%s', AGC='%s'\n",
type, cepsize, cmn_type_str[cmn], varnorm ? "yes" : "no", agc_type_str[agc]);
fcb = (feat_t *) ckd_calloc(1, sizeof(feat_t));
fcb->refcount = 1;
fcb->name = (char *) ckd_salloc(type);
if (strcmp(type, "s2_4x") == 0) {
/* Sphinx-II format 4-stream feature (Hack!! hardwired constants below) */
if (cepsize != 13) {
E_ERROR("s2_4x features require cepsize == 13\n");
ckd_free(fcb);
return NULL;
}
fcb->cepsize = 13;
fcb->n_stream = 4;
fcb->stream_len = (int32 *) ckd_calloc(4, sizeof(int32));
fcb->stream_len[0] = 12;
fcb->stream_len[1] = 24;
fcb->stream_len[2] = 3;
fcb->stream_len[3] = 12;
fcb->out_dim = 51;
fcb->window_size = 4;
fcb->compute_feat = feat_s2_4x_cep2feat;
}
else if (strcmp(type, "s3_1x39") == 0) {
/* 1-stream cep/dcep/pow/ddcep (Hack!! hardwired constants below) */
if (cepsize != 13) {
E_ERROR("s2_4x features require cepsize == 13\n");
ckd_free(fcb);
return NULL;
}
fcb->cepsize = 13;
fcb->n_stream = 1;
fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
fcb->stream_len[0] = 39;
fcb->out_dim = 39;
fcb->window_size = 3;
fcb->compute_feat = feat_s3_1x39_cep2feat;
}
else if (strncmp(type, "1s_c_d_dd", 9) == 0) {
fcb->cepsize = cepsize;
fcb->n_stream = 1;
fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
fcb->stream_len[0] = cepsize * 3;
fcb->out_dim = cepsize * 3;
fcb->window_size = FEAT_DCEP_WIN + 1; /* ddcep needs the extra 1 */
fcb->compute_feat = feat_1s_c_d_dd_cep2feat;
}
else if (strncmp(type, "1s_c_d_ld_dd", 12) == 0) {
fcb->cepsize = cepsize;
fcb->n_stream = 1;
fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
fcb->stream_len[0] = cepsize * 4;
fcb->out_dim = cepsize * 4;
fcb->window_size = FEAT_DCEP_WIN * 2;
fcb->compute_feat = feat_1s_c_d_ld_dd_cep2feat;
}
else if (strncmp(type, "cep_dcep", 8) == 0 || strncmp(type, "1s_c_d", 6) == 0) {
/* 1-stream cep/dcep */
fcb->cepsize = cepsize;
fcb->n_stream = 1;
fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
fcb->stream_len[0] = feat_cepsize(fcb) * 2;
fcb->out_dim = fcb->stream_len[0];
fcb->window_size = 2;
fcb->compute_feat = feat_s3_cep_dcep;
}
else if (strncmp(type, "cep", 3) == 0 || strncmp(type, "1s_c", 4) == 0) {
/* 1-stream cep */
fcb->cepsize = cepsize;
fcb->n_stream = 1;
fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
fcb->stream_len[0] = feat_cepsize(fcb);
fcb->out_dim = fcb->stream_len[0];
fcb->window_size = 0;
fcb->compute_feat = feat_s3_cep;
}
else if (strncmp(type, "1s_3c", 5) == 0 || strncmp(type, "1s_4c", 5) == 0) {
/* 1-stream cep with frames concatenated, so called cepwin features */
if (strncmp(type, "1s_3c", 5) == 0)
fcb->window_size = 3;
else
fcb->window_size = 4;
fcb->cepsize = cepsize;
fcb->n_stream = 1;
fcb->stream_len = (int32 *) ckd_calloc(1, sizeof(int32));
fcb->stream_len[0] = feat_cepsize(fcb) * (2 * fcb->window_size + 1);
fcb->out_dim = fcb->stream_len[0];
fcb->compute_feat = feat_s3_cepwin;
//.........这里部分代码省略.........
开发者ID:adityasriteja4u,项目名称:pocketsphinx-fpga,代码行数:101,代码来源:feat.c
示例4: fsg_model_read
//.........这里部分代码省略.........
n = nextline_str2words(fp, &lineno, &lineptr, &wordptr);
if (n <= 0) {
E_ERROR("Line[%d]: transition or FSG_END statement expected\n",
lineno);
goto parse_error;
}
if ((strcmp(wordptr[0], FSG_MODEL_END_DECL) == 0)) {
break;
}
if ((strcmp(wordptr[0], FSG_MODEL_T_DECL) == 0)
|| (strcmp(wordptr[0], FSG_MODEL_TRANSITION_DECL) == 0)) {
if (((n != 4) && (n != 5))
|| (sscanf(wordptr[1], "%d", &i) != 1)
|| (sscanf(wordptr[2], "%d", &j) != 1)
|| (i < 0) || (i >= fsg->n_state)
|| (j < 0) || (j >= fsg->n_state)) {
E_ERROR
("Line[%d]: transition spec malformed; Expecting: from-state to-state trans-prob [word]\n",
lineno);
goto parse_error;
}
p = atof_c(wordptr[3]);
if ((p <= 0.0) || (p > 1.0)) {
E_ERROR
("Line[%d]: transition spec malformed; Expecting float as transition probability\n",
lineno);
goto parse_error;
}
}
else {
E_ERROR("Line[%d]: transition or FSG_END statement expected\n",
lineno);
goto parse_error;
}
tprob = (int32) (logmath_log(lmath, p) * fsg->lw);
/* Add word to "dictionary". */
if (n > 4) {
if (hash_table_lookup_int32(vocab, wordptr[4], &wid) < 0) {
(void) hash_table_enter_int32(vocab,
ckd_salloc(wordptr[4]),
lastwid);
wid = lastwid;
++lastwid;
}
fsg_model_trans_add(fsg, i, j, tprob, wid);
++n_trans;
}
else {
if (fsg_model_null_trans_add(fsg, i, j, tprob) == 1) {
++n_null_trans;
nulls =
glist_add_ptr(nulls, fsg_model_null_trans(fsg, i, j));
}
}
}
E_INFO("FSG: %d states, %d unique words, %d transitions (%d null)\n",
fsg->n_state, hash_table_inuse(vocab), n_trans, n_null_trans);
/* Now create a string table from the "dictionary" */
fsg->n_word = hash_table_inuse(vocab);
fsg->n_word_alloc = fsg->n_word + 10; /* Pad it a bit. */
fsg->vocab = ckd_calloc(fsg->n_word_alloc, sizeof(*fsg->vocab));
for (itor = hash_table_iter(vocab); itor;
itor = hash_table_iter_next(itor)) {
char const *word = hash_entry_key(itor->ent);
int32 wid = (int32) (long) hash_entry_val(itor->ent);
fsg->vocab[wid] = (char *) word;
}
hash_table_free(vocab);
/* Do transitive closure on null transitions */
nulls = fsg_model_null_trans_closure(fsg, nulls);
glist_free(nulls);
ckd_free(lineptr);
ckd_free(wordptr);
return fsg;
parse_error:
for (itor = hash_table_iter(vocab); itor;
itor = hash_table_iter_next(itor))
ckd_free((char *) hash_entry_key(itor->ent));
glist_free(nulls);
hash_table_free(vocab);
ckd_free(fsgname);
ckd_free(lineptr);
ckd_free(wordptr);
fsg_model_free(fsg);
return NULL;
}
开发者ID:AtDinesh,项目名称:Jaf_pose_est,代码行数:101,代码来源:fsg_model.c
示例5: s3_decode_record_hyps
int
s3_decode_record_hyps(s3_decode_t * _decode, int _end_utt)
{
int32 i = 0;
glist_t hyp_list;
gnode_t *node;
srch_hyp_t *hyp;
char *hyp_strptr = 0;
char *hyp_str = 0;
srch_t *srch;
srch_hyp_t **hyp_segs = 0;
int hyp_seglen = 0;
int hyp_strlen = 0;
int finish_wid = 0;
kb_t *kb = 0;
dict_t *dict;
int rv;
if (_decode == NULL)
return S3_DECODE_ERROR_NULL_POINTER;
s3_decode_free_hyps(_decode);
kb = &_decode->kb;
dict = kbcore_dict(_decode->kbcore);
srch = (srch_t *) _decode->kb.srch;
hyp_list = srch_get_hyp(srch);
if (hyp_list == NULL) {
E_WARN("Failed to retrieve viterbi history.\n");
return S3_DECODE_ERROR_INTERNAL;
}
/** record the segment length and the overall string length */
finish_wid = dict_finishwid(dict);
for (node = hyp_list; node != NULL; node = gnode_next(node)) {
hyp = (srch_hyp_t *) gnode_ptr(node);
hyp_seglen++;
if (!dict_filler_word(dict, hyp->id) && hyp->id != finish_wid) {
hyp_strlen +=
strlen(dict_wordstr(dict, dict_basewid(dict, hyp->id))) +
1;
}
}
if (hyp_strlen == 0) {
hyp_strlen = 1;
}
/** allocate array to hold the segments and/or decoded string */
hyp_str = (char *) ckd_calloc(hyp_strlen, sizeof(char));
hyp_segs =
(srch_hyp_t **) ckd_calloc(hyp_seglen + 1, sizeof(srch_hyp_t *));
if (hyp_segs == NULL || hyp_str == NULL) {
E_WARN("Failed to allocate storage for hypothesis.\n");
rv = S3_DECODE_ERROR_OUT_OF_MEMORY;
goto s3_decode_record_hyps_cleanup;
}
/** iterate thru to fill in the array of segments and/or decoded string */
i = 0;
hyp_strptr = hyp_str;
for (node = hyp_list; node != NULL; node = gnode_next(node), i++) {
hyp = (srch_hyp_t *) gnode_ptr(node);
hyp_segs[i] = hyp;
hyp->word = dict_wordstr(dict, dict_basewid(dict, hyp->id));
if (!dict_filler_word(dict, hyp->id) && hyp->id != finish_wid) {
strcat(hyp_strptr,
dict_wordstr(dict, dict_basewid(dict, hyp->id)));
hyp_strptr += strlen(hyp_strptr);
*hyp_strptr = ' ';
hyp_strptr += 1;
}
}
glist_free(hyp_list);
hyp_str[hyp_strlen - 1] = '\0';
hyp_segs[hyp_seglen] = 0;
_decode->hyp_frame_num = _decode->num_frames_decoded;
_decode->hyp_segs = hyp_segs;
_decode->hyp_str = hyp_str;
return S3_DECODE_SUCCESS;
s3_decode_record_hyps_cleanup:
if (hyp_segs != NULL) {
ckd_free(hyp_segs);
}
if (hyp_str != NULL) {
ckd_free(hyp_str);
}
if (hyp_list != NULL) {
for (node = hyp_list; node != NULL; node = gnode_next(node)) {
if ((hyp = (srch_hyp_t *) gnode_ptr(node)) != NULL) {
ckd_free(hyp);
}
}
glist_free(hyp_list);
}
//.........这里部分代码省略.........
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:101,代码来源:s3_decode.c
示例6: split_node_comp
void
split_node_comp(dtree_t *tr,
uint32 node_id,
float32 ****mixw,
float32 ****means,
float32 ****vars,
uint32 *veclen,
uint32 n_model,
uint32 n_state,
uint32 n_stream,
uint32 n_density,
float32 *stwt,
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,
float32 mwfloor)
{
uint32 *id, n_id;
uint32 *id_yes, n_yes;
uint32 *id_no, n_no;
dtree_node_t *node;
uint32 node_id_yes;
uint32 node_id_no;
uint32 ii, i;
node = &tr->node[node_id];
id = node->id;
n_id = node->n_id;
for (ii = 0, n_yes = 0, n_no = 0; ii < n_id; ii++) {
i = id[ii];
if (eval_comp_quest((comp_quest_t *)node->q, dfeat[i], n_dfeat)) {
++n_yes;
}
else {
++n_no;
}
}
#if 0
fprintf(stderr, "Comp Split: ");
print_comp_quest(stderr, pset, (comp_quest_t *)node->q);
fprintf(stderr, " %u/%u %.3e\n", n_yes, n_no, node->wt_ent_dec);
#endif
id_yes = ckd_calloc(n_yes, sizeof(uint32));
id_no = ckd_calloc(n_no, sizeof(uint32));
for (ii = 0, n_yes = 0, n_no = 0; ii < n_id; ii++) {
i = id[ii];
if (eval_comp_quest((comp_quest_t *)node->q, dfeat[i], n_dfeat)) {
id_yes[n_yes] = i;
++n_yes;
}
else {
id_no[n_no] = i;
++n_no;
}
}
node_id_yes = tr->n_node++;
node_id_no = tr->n_node++;
node->y = &tr->node[node_id_yes];
node->n = &tr->node[node_id_no];
node->y->p = node;
node->n->p = node;
mk_node(node->y,
node_id_yes,
id_yes, n_yes,
mixw, means, vars, veclen,
n_model, n_state, n_stream, n_density, stwt, mwfloor);
node->y->q = (void *)mk_comp_quest(&(node->y->wt_ent_dec),
mixw, means, vars, veclen,
n_model, n_state, n_stream, n_density,
stwt, id_yes, n_yes,
all_q, n_all_q, pset, n_base_phone,
dfeat, n_dfeat,
split_min, split_max, split_thr, mwfloor);
mk_node(node->n,
node_id_no,
id_no, n_no,
mixw, means, vars, veclen,
n_model, n_state, n_stream, n_density, stwt, mwfloor);
node->n->q = (void *)mk_comp_quest(&(node->n->wt_ent_dec),
mixw, means, vars, veclen,
n_model, n_state, n_stream, n_density,
stwt, id_no, n_no,
//.........这里部分代码省略.........
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:101,代码来源:dtree.c
示例7: ep_endpoint
int
ep_endpoint(endptr_t * _ep, int *_classes, int _num_frames, int **_endpts)
{
int i;
int *endpts;
assert(_ep != NULL);
assert(_endpts != NULL);
if (_ep->max_endpts < _num_frames) {
if (_ep->endpts != NULL) {
ckd_free(_ep->endpts);
}
_ep->endpts = NULL;
_ep->max_endpts = _ep->num_endpts = 0;
if ((_ep->endpts =
(int *) ckd_calloc(sizeof(int), _num_frames)) == NULL) {
return -1;
}
_ep->max_endpts = _num_frames;
}
_ep->num_endpts = _num_frames;
endpts = _ep->endpts;
for (i = 0; i < _num_frames; i++) {
switch (_ep->state) {
case EP_STATE_IDLE:
if (_classes[i] == CLASS_OWNER) {
_ep->start_counter = 1;
_ep->state = EP_STATE_LEADER;
endpts[i] = EP_MAYBE;
}
else {
endpts[i] = EP_SILENCE;
}
break;
case EP_STATE_LEADER:
if (_classes[i] == CLASS_OWNER) {
if (++_ep->start_counter >= _ep->pad_leader) {
_ep->state = EP_STATE_SPEECH;
endpts[i] = EP_SPEECH;
}
else {
endpts[i] = EP_MAYBE;
}
}
else {
_ep->cancel_counter = 1;
_ep->state = EP_STATE_CANCEL;
endpts[i] = EP_MAYBE;
}
break;
case EP_STATE_SPEECH:
if (_classes[i] == CLASS_OWNER) {
endpts[i] = EP_SPEECH;
}
else {
_ep->end_counter = 1;
_ep->state = EP_STATE_TRAILER;
endpts[i] = EP_SPEECH;
}
break;
case EP_STATE_TRAILER:
if (_classes[i] == CLASS_OWNER) {
_ep->state = EP_STATE_SPEECH;
endpts[i] = EP_SPEECH;
}
else if (++_ep->end_counter >= _ep->pad_trailer) {
_ep->state = EP_STATE_IDLE;
endpts[i] = EP_SILENCE;
}
else {
endpts[i] = EP_SPEECH;
}
break;
case EP_STATE_CANCEL:
_ep->start_counter++;
if (_classes[i] == CLASS_OWNER) {
_ep->state = EP_STATE_LEADER;
endpts[i] = EP_MAYBE;
}
else if (++_ep->cancel_counter >= _ep->pad_cancel) {
_ep->state = EP_STATE_IDLE;
endpts[i] = EP_SILENCE;
}
else {
endpts[i] = EP_MAYBE;
}
break;
}
}
*_endpts = endpts;
return 0;
}
开发者ID:4auka,项目名称:cmusphinx,代码行数:100,代码来源:classifier.c
示例8: setup_obs_1class
static uint32
setup_obs_1class(uint32 strm, uint32 n_frame, uint32 n_stream, uint32 *veclen, uint32 blksize)
{
float32 *buf;
vector_t *frm;
uint32 i, l, o;
uint32 n_sv_frame;
uint32 ignore = 0;
n_sv_frame = n_frame / stride;
if (l_strm == strm) {
E_INFO("No need to read data; using existing buffered data\n");
return n_sv_frame;
}
n_tot_frame += n_sv_frame;
l_strm = strm;
E_INFO("alloc'ing %uMb obs buf\n",
n_sv_frame*veclen[strm]*sizeof(float32) / (1024 * 1024));
if (obuf) {
ckd_free(obuf);
obuf = NULL;
}
obuf = ckd_calloc(n_sv_frame * veclen[strm], sizeof(float32));
buf = (float32 *)ckd_calloc(blksize, sizeof(float32));
frm = (vector_t *)ckd_calloc(n_stream, sizeof(float32 *));
for (i = 0, l = 0; i < n_stream; i++) {
frm[i] = &buf[l];
l += veclen[i];
}
assert(l == blksize);
assert(dmp_fp != NULL);
if (fseek(dmp_fp, data_offset, SEEK_SET) < 0) {
E_ERROR_SYSTEM("Can't seek to start of data\n");
return 0;
}
for (i = 0, o = 0; i < n_frame; i++) {
if (s3read(buf, sizeof(float32), blksize, dmp_fp, dmp_swp, &ignore) != blksize) {
E_ERROR_SYSTEM("Can't read dump file\n");
return 0;
}
if ((i % stride) == 0) {
memcpy(&obuf[o],
(void *)&frm[strm][0],
sizeof(float32) * veclen[strm]);
o += veclen[strm];
}
}
ckd_free(buf);
ckd_free(frm);
return n_sv_frame;
}
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:66,代码来源:main.c
示例9: setup_obs_multiclass
static uint32
setup_obs_multiclass(uint32 ts, uint32 strm, uint32 n_frame, uint32 veclen)
{
uint32 i, o, k;
uint32 n_i_frame;
vector_t **feat;
uint32 d_ts;
uint32 n_sv_frame;
n_sv_frame = n_frame / stride;
if ((l_ts == ts) && (l_strm == strm)) {
E_INFO("No need to read data; using existing buffered data\n");
return n_sv_frame;
}
n_tot_frame += n_sv_frame;
l_ts = ts;
l_strm = strm;
E_INFO("alloc'ing %uMb obs buf\n", n_sv_frame*veclen*sizeof(float32) / (1024 * 1024));
if (obuf) {
ckd_free(obuf);
obuf = NULL;
}
obuf = ckd_calloc(n_sv_frame * veclen, sizeof(float32));
if (stride == 1) {
E_INFO("Reading all frames\n");
}
else {
E_INFO("Reading 1 out of every %u frames from obs dmp file...\n", stride);
}
if (o2d) {
E_INFO("o_ts == %u ->", ts);
for (k = 0; k < n_o2d[ts]; k++) {
E_INFOCONT(" %d", o2d[ts][k]);
}
E_INFOCONT("\n");
for (k = 0, o = 0; k < n_o2d[ts]; k++) {
d_ts = o2d[ts][k];
for (i = 0; segdmp_next_feat(d_ts, &feat, &n_i_frame); i++) {
assert(n_i_frame == 1);
if ((i % stride) == 0) {
memcpy(&obuf[o],
(void *)&feat[0][strm][0],
sizeof(float32) * veclen);
o += veclen;
}
ckd_free((void *)&feat[0][0][0]);
ckd_free_2d((void **)feat);
}
}
}
else {
E_INFO("dmp mdef == output mdef\n");
for (i = 0, o = 0; segdmp_next_feat(ts, &feat, &n_i_frame); i++) {
assert(n_i_frame == 1);
if ((i % stride) == 0) {
memcpy(&obuf[o],
(void *)&feat[0][strm][0],
sizeof(float32) * veclen);
o += veclen;
}
ckd_free((void *)&feat[0][0][0]);
ckd_free_2d((void **)feat);
}
}
if ((o / veclen) != n_sv_frame) {
E_WARN("Expected %u frames, but read %u\n",
n_sv_frame, o / veclen);
}
E_INFO("done reading %u frames\n", n_sv_frame);
return n_sv_frame;
}
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:86,代码来源:main.c
示例10: setup_d2o_map
uint32
setup_d2o_map(model_def_t *d_mdef,
model_def_t *o_mdef)
{
model_def_entry_t *o_defn, *d_defn;
uint32 d_ts;
uint32 o_ts;
uint32 *mapped;
uint32 i, j, k, d;
const char *nm;
int did_warn = FALSE;
if (d_mdef->n_tied_state < o_mdef-> n_tied_state) {
E_FATAL("more tied states in output than in dump mdef (%u vs %u)\n",
o_mdef->n_tied_state, d_mdef->n_tied_state);
}
if (d_mdef->n_tied_ci_state != o_mdef->n_tied_ci_state) {
E_FATAL("# tied ci state in output, %u not equal to # in dmp, %u\n",
o_mdef->n_tied_ci_state, d_mdef->n_tied_ci_state);
}
n_o2d = (uint32 *)ckd_calloc(o_mdef->n_tied_state, sizeof(uint32));
i_o2d = (uint32 *)ckd_calloc(o_mdef->n_tied_state, sizeof(uint32));
o2d = (uint32 **)ckd_calloc(o_mdef->n_tied_state, sizeof(uint32 *));
mapped = (uint32 *)ckd_calloc(d_mdef->n_tied_state, sizeof(uint32));
for (i = 0; i < o_mdef->n_defn; i++) {
nm = acmod_set_id2name(o_mdef->acmod_set, i);
d = acmod_set_name2id(d_mdef->acmod_set, nm);
if (d == NO_ID) {
if (!did_warn) {
E_WARN("Some models in the output mdef not in the dump mdef\n");
did_warn = TRUE;
}
continue;
}
o_defn = &o_mdef->defn[i];
d_defn = &d_mdef->defn[d];
for (j = 0; j < o_defn->n_state; j++) {
o_ts = o_defn->state[j];
d_ts = d_defn->state[j];
if ((o_ts != TYING_NO_ID) && (o_ts != TYING_NO_ID)) {
if (mapped[d_ts] == FALSE) {
++n_o2d[o_ts];
mapped[d_ts] = TRUE;
}
}
else {
if (!((o_ts == TYING_NO_ID) && (o_ts == TYING_NO_ID))) {
E_INFO("%s state is NULL but %s isn't.\n",
(o_ts == TYING_NO_ID ? "output" : "dump"),
(o_ts == TYING_NO_ID ? "dump" : "output"));
}
}
}
}
for (i = 0; i < o_mdef->n_tied_state; i++) {
o2d[i] = (uint32 *)ckd_calloc(n_o2d[i], sizeof(uint32));
}
for (i = 0; i < o_mdef->n_defn; i++) {
/* Figure out the index in the dump mdef
for the model in the output mdef */
nm = acmod_set_id2name(o_mdef->acmod_set, i);
d = acmod_set_name2id(d_mdef->acmod_set, nm);
if (d == NO_ID) continue;
o_defn = &o_mdef->defn[i];
d_defn = &d_mdef->defn[d];
for (j = 0; j < o_defn->n_state; j++) {
o_ts = o_defn->state[j];
d_ts = d_defn->state[j];
if ((o_ts != TYING_NO_ID) && (o_ts != TYING_NO_ID)) {
for (k = 0; k < i_o2d[o_ts]; k++) {
if (o2d[o_ts][k] == d_ts)
break;
}
if (k == i_o2d[o_ts]) {
o2d[o_ts][i_o2d[o_ts]++] = d_ts;
}
}
else {
if (!((o_ts == TYING_NO_ID) && (o_ts == TYING_NO_ID))) {
E_INFO("%s state is NULL but %s isn't.\n",
(o_ts == TYING_NO_ID ? "output" : "dump"),
(o_ts == TYING_NO_ID ? "dump" : "output"));
}
}
}
}
//.........这里部分代码省略.........
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:101,代码来源:main.c
示例11: reest_sum
float64
reest_sum(uint32 ts,
vector_t **mean,
vector_t **var,
float32 **mixw,
uint32 n_density,
uint32 n_stream,
uint32 n_in_obs,
uint32 *veclen,
uint32 blksize,
uint32 n_iter,
uint32 twopassvar,
uint32 vartiethr)
{
uint32 o, i, j, k, l;
float32 *mixw_acc;
float32 *cb_acc;
vector_t **mean_acc_xx;
vector_t **var_acc_xx;
vector_t *mean_acc;
vector_t *var_acc;
float64 ol, ttt, diff, log_tot_ol = 0, p_log_tot_ol = 0;
float64 **norm, *den;
float64 log_a_den=0;
float32 mixw_norm;
vector_t obs;
uint32 n_obs;
vector_t ***n_mean_xx = NULL;
vector_t *n_mean = NULL;
float64 avg_lik=0, p_avg_lik=0;
uint32 tievar = FALSE;
E_INFO("EM reestimation of mixw/means/vars\n");
if (twopassvar) {
n_mean_xx = gauden_alloc_param(1, 1, n_density, veclen);
n_mean = n_mean_xx[0][0];
}
/* allocate mixing weight accumulators */
mixw_acc = (float32 *)ckd_calloc(n_density, sizeof(float32));
cb_acc = (float32 *)ckd_calloc(n_density, sizeof(float32));
mean_acc_xx = (vector_t **)alloc_gau_acc(1, n_density, veclen, blksize);
mean_acc = mean_acc_xx[0];
var_acc_xx = (vector_t **)alloc_gau_acc(1, n_density, veclen, blksize);
var_acc = var_acc_xx[0];
den = (float64 *)ckd_calloc(n_density, sizeof(float64));
norm = (float64 **)ckd_calloc_2d(n_stream, n_density, sizeof(float64));
for (j = 0; j < n_stream; j++) {
n_obs = setup_obs(ts, j, n_in_obs, n_stream, veclen, blksize);
if (n_obs < vartiethr) tievar = TRUE;
for (i = 0; i < n_iter; i++) {
p_log_tot_ol = log_tot_ol;
log_tot_ol = 0;
for (k = 0; k < n_density; k++) {
/* floor variances */
for (l = 0; l < veclen[j]; l++)
if (var[j][k][l] < 1e-4) var[j][k][l] = 1e-4;
/* compute normalization factors for Gaussian
densities */
norm[j][k] = diag_norm(var[j][k], veclen[j]);
/* precompute 1/(2sigma^2) terms */
diag_eval_precomp(var[j][k], veclen[j]);
}
if (twopassvar) {
/* do a pass over the corpus to compute reestimated means */
for (o = 0; o < n_obs; o++) {
float64 mx;
obs = get_obs(o);
mx = MIN_NEG_FLOAT64;
for (k = 0; k < n_density; k++) {
/* really log(den) for the moment */
den[k] = log_diag_eval(obs, norm[j][k], mean[j][k], var[j][k], veclen[j]);
if (mx < den[k]) mx = den[k];
}
for (k = 0, ol = 0; k < n_density; k++) {
den[k] = exp(log_a_den - mx);
ol += mixw[j][k] * den[k];
}
for (k = 0; k < n_density; k++) {
ttt = mixw[j][k] * den[k] / ol;
cb_acc[k] += ttt;
for (l = 0; l < veclen[j]; l++) {
//.........这里部分代码省略.........
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:101,代码来源:main.c
示例12: ckd_calloc
SWIGINTERN Nbest *new_Nbest(Decoder *d){
Nbest *nbest = ckd_calloc(1, sizeof(*nbest));
nbest->nbest = ps_nbest(d, 0, -1, NULL, NULL);
return nbest;
}
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:5,代码来源:pocketsphinx_wrap.c
示例13: cmn_prior
void cmn_prior(float32 **incep, int32 varnorm, int32 nfr, int32 ceplen,
int32 endutt)
{
static float32 *cur_mean = NULL; /* the mean subtracted from input frames */
static float32 *sum = NULL; /* the sum over input frames */
static int32 nframe; /* the total number of input frames */
static int32 initialize=1;
float32 sf;
int32 i, j;
if (varnorm)
E_FATAL("Variance normalization not implemented in live mode decode\n");
if (initialize){
cur_mean = (float32 *) ckd_calloc(ceplen, sizeof(float32));
/* A front-end dependent magic number */
cur_mean[0] = 12.0;
sum = (float32 *) ckd_calloc(ceplen, sizeof(float32));
nframe = 0;
initialize = 0;
E_INFO("mean[0]= %.2f, mean[1..%d]= 0.0\n", cur_mean[0], ceplen-1);
}
if (nfr <= 0)
return;
for (i = 0; i < nfr; i++){
for (j = 0; j < ceplen; j++){
sum[j] += incep[i][j];
incep[i][j] -= cur_mean[j];
}
++nframe;
}
/* Shift buffer down if we have more than CMN_WIN_HWM frames */
if (nframe > CMN_WIN_HWM) {
sf = (float32) (1.0/nframe);
for (i = 0; i < ceplen; i++)
cur_mean[i] = sum[i] * sf;
/* Make the accumulation decay exponentially */
if (nframe >= CMN_WIN_HWM) {
sf = CMN_WIN * sf;
for (i = 0; i < ceplen; i++)
sum[i] *= sf;
nframe = CMN_WIN;
}
}
if (endutt) {
/* Update mean buffer */
/* 01.15.01 RAH - removing this printf, it is damn annoying
printf("Mean norm update: from <");
for (i = 0; i < ceplen; i++)
printf("%5.2f ", cur_mean[i]);
printf(">\n");
*/
sf = (float32) (1.0/nframe);
for (i = 0; i < ceplen; i++)
cur_mean[i] = sum[i] * sf;
/* Make the accumulation decay exponentially */
if (nframe > CMN_WIN_HWM) {
sf = CMN_WIN * sf;
for (i = 0; i < ceplen; i++)
sum[i] *= sf;
nframe = CMN_WIN;
}
/* 01.15.01 RAH - removing this printf, it is damn annoying
printf("Mean norm update: to < ");
for (i = 0; i < ceplen; i++)
printf("%5.2f ", cur_mean[i]);
printf(">\n");
*/
}
}
开发者ID:phillipstanleymarbell,项目名称:sunflower-simulator,代码行数:81,代码来源:cmn_prior.c
示例14: lm3g_template_iter
static ngram_iter_t *
lm3g_template_iter(ngram_model_t *base, int32 wid,
int32 *history, int32 n_hist)
{
NGRAM_MODEL_TYPE *model = (NGRAM_MODEL_TYPE *)base;
lm3g_iter_t *itor = (lm3g_iter_t *)ckd_calloc(1, sizeof(*itor));
ngram_iter_init((ngram_iter_t *)itor, base, n_hist, FALSE);
if (n_hist == 0) {
/* Unigram is the easiest. */
itor->ug = model->lm3g.unigrams + wid;
return (ngram_iter_t *)itor;
}
else if (n_hist == 1) {
int32 i, n, b;
/* Find the bigram, as in bg_score above (duplicate code...) */
itor->ug = model->lm3g.unigrams + history[0];
b = FIRST_BG(model, history[0]);
n = FIRST_BG(model, history[0] + 1) - b;
itor->bg = model->lm3g.bigrams + b;
/* If no such bigram exists then fail. */
if ((i = find_bg(itor->bg, n, wid)) < 0) {
ngram_iter_free((ngram_iter_t *)itor);
return NULL;
}
itor->bg += i;
return (ngram_iter_t *)itor;
}
else if (n_hist == 2) {
int32 i, n;
tginfo_t *tginfo, *prev_tginfo;
/* Find the trigram, as in tg_score above (duplicate code...) */
itor->ug = model->lm3g.unigrams + history[1];
prev_tginfo = NULL;
for (tginfo = model->lm3g.tginfo[history[0]];
tginfo; tginfo = tginfo->next) {
if (tginfo->w1 == history[1])
break;
prev_tginfo = tginfo;
}
if (!tginfo) {
load_tginfo(model, history[1], history[0]);
tginfo = model->lm3g.tginfo[history[0]];
}
else if (prev_tginfo) {
prev_tginfo->next = tginfo->next;
tginfo->next = model->lm3g.tginfo[history[0]];
model->lm3g.tginfo[history[0]] = tginfo;
}
tginfo->used = 1;
/* Trigrams for w1,w2 now pointed to by tginfo */
n = tginfo->n_tg;
itor->tg = tginfo->tg;
if ((i = find_tg(itor->tg, n, wid)) >= 0) {
itor->tg += i;
/* Now advance the bigram pointer accordingly. FIXME:
* Note that we actually already found the relevant bigram
* in load_tginfo. */
itor->bg = model->lm3g.bigrams;
while (FIRST_TG(model, (itor->bg - model->lm3g.bigrams + 1))
<= (itor->tg - model->lm3g.trigrams))
++itor->bg;
return (ngram_iter_t *)itor;
}
else {
ngram_iter_free((ngram_iter_t *)itor);
return (ngram_iter_t *)NULL;
}
}
else {
/* Should not happen. */
assert(n_hist == 0); /* Guaranteed to fail. */
ngram_iter_free((ngram_iter_t *)itor);
return NULL;
}
}
开发者ID:Independent-Scientist,项目名称:sphinxbase,代码行数:80,代码来源:lm3g_templates.c
示例15: read_final_tree
dtree_t *
read_final_tree(FILE *fp,
pset_t *pset,
uint32 n_pset)
{
dtree_t *out;
dtree_node_t *node;
uint32 n_node;
char *s, str[128];
lineiter_t *ln = NULL;
uint32 n_scan;
uint32 i, node_id, node_id_y, node_id_n;
comp_quest_t *q;
float64 ent;
float32 occ;
int err;
out = ckd_calloc(1, sizeof(dtree_t));
ln = lineiter_start_clean(fp);
s = ln->buf;
sscanf(s, "%s%n", str, &n_scan);
if (strcmp(str, "n_node") == 0) {
s += n_scan;
sscanf(s, "%u", &n_node);
}
else {
E_FATAL("Format error; expecting n_node\n");
}
out->n_node = n_node;
out->node = node = ckd_calloc(n_node, sizeof(dtree_node_t));
for (i = 0; i < n_node; i++)
node[i].node_id = i;
err = FALSE;
while ((ln = lineiter_next(ln))) {
s = ln->buf;
sscanf(s, "%u%n", &node_id, &n_scan);
s += n_scan;
sscanf(s, "%s%n", str, &n_scan);
s += n_scan;
if (strcmp(str, "-") == 0) {
node_id_y = NO_ID;
}
else {
node_id_y = atoi(str);
}
sscanf(s, "%s%n", str, &n_scan);
s += n_scan;
if (strcmp(str, "-") == 0) {
node_id_n = NO_ID;
}
else {
node_id_n = atoi(str);
}
sscanf(s, "%le%n", &ent, &n_scan);
s += n_scan;
sscanf(s, "%e%n", &occ, &n_scan);
s += n_scan;
if ((node_id_y != NO_ID) && (node_id_y != NO_ID)) {
q = (comp_quest_t *)ckd_calloc(1, sizeof(comp_quest_t));
if (s3parse_comp_quest(pset, n_pset, q, s) != S3_SUCCESS) {
err = TRUE;
}
node[node_id].q = q;
}
else
node[node_id].q = NULL;
/* ck if internal node */
if ((node_id_y != NO_ID) && (node_id_y != NO_ID))
node[node_id].wt_ent_dec = ent;
else
node[node_id].wt_ent = ent;
node[node_id].occ = occ;
if ((node_id_y != NO_ID) && (node_id_y != NO_ID)) {
node[node_id].y = &node[node_id_y];
node[node_id].n = &node[node_id_n];
node[node_id_y].p = node[node_id_n].p = &node[node_id];
}
else {
node[node_id].y = NULL;
node[node_id].n = NULL;
}
}
if (err == TRUE) {
free_tree(out);
out = NULL;
}
//.........这里部分代码省略.........
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:101,代码来源:dtree.c
示例16: furthest_neighbor_kmeans
static float64
furthest_neighbor_kmeans(uint32 n_obs,
uint32 veclen,
vector_t *mean,
uint32 n_mean,
float32 min_ratio,
uint32 max_iter)
{
uint32 **obs_of;
uint32 *occ_cnt;
codew_t *lbl;
uint32 k_max=0, occ_max;
uint32 n_mean_cur;
vector_t *extr_mean;
uint32 k, l;
float64 sqerr;
lbl = ckd_calloc(n_obs, sizeof(codew_t));
occ_cnt = ckd_calloc(n_mean, sizeof(uint32));
n_mean_cur = 1;
extr_mean = (float32 **)ckd_calloc_2d(2, veclen, sizeof(float32));
do {
E_INFO("n_mean == %u\n", n_mean_cur);
obs_of = cw_obs(lbl, n_mean_cur, n_obs, occ_cnt);
occ_max = 0;
for (k = 0; k < n_mean_cur; k++) {
if (occ_cnt[k] > occ_max) {
occ_max = occ_cnt[k];
k_max = k;
}
}
/* set the initial values of the new means by extreme means */
E_INFO("d_max == %e\n",
find_farthest_neigh(obs_of[k_max], occ_cnt[k_max], veclen,
extr_mean[0], extr_mean[1]));
sqerr = k_means_subset(extr_mean, 2,
obs_of[k_max], occ_cnt[k_max],
veclen,
min_ratio,
max_iter,
NULL);
for (l = 0; l < veclen; l++) {
mean[k_max][l] = extr_mean[0][l];
mean[n_mean_cur][l] = extr_mean[1][l];
}
++n_mean_cur;
ckd_free(lbl);
sqerr = k_means(mean, n_mean_cur, n_obs,
veclen,
min_ratio,
max_iter,
&lbl);
E_INFO("\tsquerr == %e\n", sqerr);
} while (n_mean_cur < n_mean);
return sqerr;
}
开发者ID:Ankit77,项目名称:cmusphinx,代码行数:71,代码来源:main.c
示例17: mk_node
int
mk_node(dtree_node_t *node,
uint32 node_id,
uint32 *id,
uint32 n_id,
float32 ****mixw,
float32 ****means,
float32 **
|
请发表评论