int ld_init(live_decoder_t *decoder, int argc, char **argv) { param_t fe_param; if (argc == 2) { /* * lgalescu: check if args need to be processed from file */ parse_args_file(argv[1]); } else cmd_ln_parse(arg_def, argc, argv); unlimit(); /* some decoder parameter capturing * !!! NOTE - HARDCODED FOR NOW. REPLACE WITH PARSE_ARG() ASAP !!!! */ memset(decoder, 0, sizeof(live_decoder_t)); kb_init(&decoder->kb); decoder->max_wpf = cmd_ln_int32 ("-maxwpf");; decoder->max_histpf = cmd_ln_int32 ("-maxhistpf"); decoder->max_hmmpf = cmd_ln_int32 ("-maxhmmpf"); decoder->phones_skip = cmd_ln_int32 ("-ptranskip"); decoder->hmm_log = cmd_ln_int32("-hmmdump") ? stderr : NULL; decoder->kbcore = decoder->kb.kbcore; decoder->kb.uttid = decoder->uttid; decoder->hypsegs = 0; decoder->num_hypsegs = 0; decoder->hypstr_len = 0; decoder->hypstr[0] = '\0'; decoder->features = feat_array_alloc(kbcore_fcb(decoder->kbcore), LIVEBUFBLOCKSIZE); decoder->ld_state = LD_STATE_IDLE; /* some front-end parameter capturing * !!! NOTE - HARDCODED FOR NOW. REPLACE WITH PARSE_ARG() ASAP !!!! */ memset(&fe_param, 0, sizeof(param_t)); fe_param.SAMPLING_RATE = (float32)cmd_ln_int32 ("-samprate"); fe_param.LOWER_FILT_FREQ = cmd_ln_float32("-lowerf"); fe_param.UPPER_FILT_FREQ = cmd_ln_float32("-upperf"); fe_param.NUM_FILTERS = cmd_ln_int32("-nfilt"); fe_param.FRAME_RATE = cmd_ln_int32("-frate"); fe_param.PRE_EMPHASIS_ALPHA = cmd_ln_float32("-alpha"); fe_param.FFT_SIZE = cmd_ln_int32("-nfft"); fe_param.WINDOW_LENGTH = cmd_ln_float32("-wlen"); decoder->fe = fe_init(&fe_param); if (!decoder->fe) { E_WARN("Front end initialization fe_init() failed\n"); return -1; } return 0; }
/* This routine initializes decoder variables for live mode decoding */ void live_initialize_decoder(char *live_args) { static kb_t live_kb; int32 maxcepvecs, maxhyplen, samprate, ceplen; param_t *fe_param; /*char const *uttIdNotDefined = "null";*/ parse_args_file(live_args); unlimit(); kb_init(&live_kb); kb = &live_kb; kbcore = kb->kbcore; kb->uttid = ckd_calloc(1000,sizeof(char)); hmmdumpfp = cmd_ln_int32("-hmmdump") ? stderr : NULL; maxwpf = cmd_ln_int32 ("-maxwpf"); maxhistpf = cmd_ln_int32 ("-maxhistpf"); maxhmmpf = cmd_ln_int32 ("-maxhmmpf"); ptranskip = cmd_ln_int32 ("-ptranskip"); maxhyplen = cmd_ln_int32 ("-maxhyplen"); if (!parthyp) parthyp = (partialhyp_t *) ckd_calloc(maxhyplen, sizeof(partialhyp_t)); parthyplen = 0; fe_param = (param_t *) ckd_calloc(1, sizeof(param_t)); samprate = cmd_ln_int32 ("-samprate"); if (samprate != 8000 && samprate != 16000) E_FATAL("Sampling rate %d not supported. Must be 8000 or 16000\n",samprate); fe_param->SAMPLING_RATE = (float32) samprate; fe_param->LOWER_FILT_FREQ = cmd_ln_float32("-lowerf"); fe_param->UPPER_FILT_FREQ = cmd_ln_float32("-upperf"); fe_param->NUM_FILTERS = cmd_ln_int32("-nfilt"); /* 20040413, by ARCHAN. Clear the hardwiring. Hmm. Many people say no to do this, I just can't take it. */ fe_param->FRAME_RATE = cmd_ln_int32("-frate"); /* fe_param->FRAME_RATE = 100; */ fe_param->PRE_EMPHASIS_ALPHA = cmd_ln_float32("-alpha"); fe_param->FFT_SIZE = cmd_ln_int32("-nfft"); fe_param->WINDOW_LENGTH = cmd_ln_float32("-wlen"); fe_param->doublebw=OFF; fe = fe_init(fe_param); if (!fe) E_FATAL("Front end initialization fe_init() failed\n"); maxcepvecs = cmd_ln_int32 ("-maxcepvecs"); ceplen = kbcore->fcb->cepsize; dummyframe = (float32*) ckd_calloc(1 * ceplen,sizeof(float32)); /* */ }
int main (int argc, char *argv[]) { short *samps; int i, j, buflen, endutt, blksize, nhypwds, nsamp; char *argsfile, *ctlfile, *indir; char filename[512], cepfile[512]; partialhyp_t *parthyp; FILE *fp, *sfp; fprintf(stderr,"At the beginning\n"); if (argc != 4) { argsfile = NULL; parse_args_file(argsfile); E_FATAL("\nUSAGE: %s <ctlfile> <inrawdir> <argsfile>\n",argv[0]); } ctlfile = argv[1]; indir = argv[2]; argsfile = argv[3]; fprintf(stderr,"before calloc\n"); samps = (short *) calloc(MAXSAMPLES,sizeof(short)); blksize = 2000; fprintf(stderr,"after calloc\n"); if ((fp = fopen(ctlfile,"r")) == NULL) E_FATAL("Unable to read %s\n",ctlfile); live_initialize_decoder(argsfile); fprintf(stderr,"after initialize decode\n"); #ifdef VTUNE VTResume(); #endif while (fscanf(fp,"%s",filename) != EOF){ sprintf(cepfile,"%s/%s.raw",indir,filename); if ((sfp = fopen(cepfile,"rb")) == NULL) E_FATAL("Unable to read %s\n",cepfile); nsamp = fread(samps, sizeof(short), MAXSAMPLES, sfp); fprintf(stdout,"%d samples in file %s.\nWill be decoded in blocks of %d\n",nsamp,cepfile,blksize); fflush(stdout); fclose(sfp); for (i=0;i<nsamp;i+=blksize){ buflen = i+blksize < nsamp ? blksize : nsamp-i; endutt = i+blksize <= nsamp-1 ? 0 : 1; nhypwds = live_utt_decode_block(samps+i,buflen,endutt,&parthyp); E_INFO("PARTIAL HYP:"); if (nhypwds > 0) for (j=0; j < nhypwds; j++) fprintf(stderr," %s",parthyp[j].word); fprintf(stderr,"\n"); } } return 0; }
/* This routine initializes decoder variables for live mode decoding */ void live_initialize_decoder(char *live_args) { static kb_t live_kb; int32 maxcepvecs, maxhyplen, samprate, ceplen; param_t *fe_param; char const *uttIdNotDefined = "null"; parse_args_file(live_args); unlimit(); kb_init(&live_kb); kb = &live_kb; kbcore = kb->kbcore; kb->uttid = ckd_salloc(uttIdNotDefined); hmmdumpfp = cmd_ln_int32("-hmmdump") ? stderr : NULL; maxwpf = cmd_ln_int32 ("-maxwpf"); maxhistpf = cmd_ln_int32 ("-maxhistpf"); maxhmmpf = cmd_ln_int32 ("-maxhmmpf"); ptranskip = cmd_ln_int32 ("-ptranskip"); maxhyplen = cmd_ln_int32 ("-maxhyplen"); if (!parthyp) parthyp = (partialhyp_t *) ckd_calloc(maxhyplen, sizeof(partialhyp_t)); fe_param = (param_t *) ckd_calloc(1, sizeof(param_t)); samprate = cmd_ln_int32 ("-samprate"); if (samprate != 8000 && samprate != 16000) E_FATAL("Sampling rate %s not supported. Must be 8000 or 16000\n",samprate); fe_param->SAMPLING_RATE = (float32) samprate; fe_param->LOWER_FILT_FREQ = cmd_ln_float32("-lowerf"); fe_param->UPPER_FILT_FREQ = cmd_ln_float32("-upperf"); fe_param->NUM_FILTERS = cmd_ln_int32("-nfilt"); fe_param->FRAME_RATE = 100; /* HARD CODED TO 100 FRAMES PER SECOND */ fe_param->PRE_EMPHASIS_ALPHA = (float32) 0.97; fe = fe_init(fe_param); if (!fe) E_FATAL("Front end initialization fe_init() failed\n"); maxcepvecs = cmd_ln_int32 ("-maxcepvecs"); ceplen = kbcore->fcb->cepsize; dummyframe = (float32*) ckd_calloc(1 * ceplen,sizeof(float32)); /* */ #if defined(THRD) score_barrier = thread_barrier_init(NUM_THREADS); if (!score_barrier) E_FATAL("Cannot initialize score_barrier\n"); #endif }
int main(int argc, char *argv[]) { char *lm_file; char *args_file; char *ngrams_file; char *lmLoadTimer = "LM Load"; char *lmLookupTimer = "LM Lookup"; char *ngrams[MAX_NGRAMS]; float64 lw, wip, uw, logbase; int i, n, score; int32 *nwdptr; int32 nwords[MAX_NGRAMS]; int scores[MAX_NGRAMS]; lm_t *lm; s3lmwid_t wid[MAX_NGRAMS][MAX_WORDS_PER_NGRAM]; FILE* fp; if (argc < 3) { E_FATAL("USAGE: %s <lm_file> <args_file> <ngrams_file>\n", argv[0]); } args_file = argv[1]; lm_file = argv[2]; ngrams_file = argv[3]; parse_args_file(args_file); lw = cmd_ln_float32("-lw"); wip = cmd_ln_float32("-wip"); uw = cmd_ln_float32("-uw"); logbase = cmd_ln_float32("-logbase"); logs3_init(logbase); metricsStart(lmLoadTimer); /* initialize the language model */ lm = lm_read(lm_file, lw, wip, uw); metricsStop(lmLoadTimer); if ((fp = fopen(ngrams_file, "r")) == NULL) { E_FATAL("Unable to open N-gram file %s\n", ngrams_file); } while (has_more_utterances(fp)) { /* read in all the N-grams */ n = read_ngrams(fp, ngrams, wid, nwords, MAX_NGRAMS, lm); metricsStart(lmLookupTimer); /* scores the N-grams */ for (i = 0; i < n; i++) { scores[i] = score_ngram(wid[i], nwords[i], lm); printf("%-10d %s\n", scores[i], ngrams[i]); /* printf("%-10d %s %d %d %d\n", scores[i], ngrams[i], wid[i][0], wid[i][1], wid[i][2]); */ } /* reset cache if <END_UTT> was reached */ if (n != MAX_NGRAMS) { lm_cache_reset(lm); } metricsStop(lmLookupTimer); } printf("Bigram misses: %d \n", lm->n_bg_bo); printf("Trigram misses: %d \n", lm->n_tg_bo); fflush(stdout); metricsPrint(); }
int main(int argc, char *argv[]) { char *lm_file; char *args_file; char *ngrams_file; char *lmLoadTimer = "LM Load"; char *lmLookupTimer = "LM Lookup"; char *ngrams[MAX_NGRAMS]; float64 lw, wip, uw, logbase; int i, n; int32 nwords[MAX_NGRAMS]; int scores[MAX_NGRAMS]; lm_t *lm; s3lmwid32_t *wid[MAX_NGRAMS]; if (argc < 3) { E_FATAL("USAGE: %s <lm_file> <args_file> <ngrams_file>\n", argv[0]); } args_file = argv[1]; lm_file = argv[2]; ngrams_file = argv[3]; parse_args_file(args_file); lw = cmd_ln_float32("-lw"); wip = cmd_ln_float32("-wip"); uw = cmd_ln_float32("-uw"); logbase = cmd_ln_float32("-logbase"); logs3_init(logbase, 1, 1); /*Report progress and use log table */ metricsStart(lmLoadTimer); /* initialize the language model */ /* HACK! This doesn't work for class-based LM */ lm = lm_read_advance(lm_file, "default", lw, wip, uw, 0, NULL, 1); metricsStop(lmLoadTimer); /* read in all the N-grams */ n = read_ngrams(ngrams_file, ngrams, wid, nwords, MAX_NGRAMS, lm); metricsStart(lmLookupTimer); /* scores the N-grams */ for (i = 0; i < n; i++) { scores[i] = score_ngram(wid[i], nwords[i], lm); } metricsStop(lmLookupTimer); for (i = 0; i < n; i++) { printf("%-10d %s\n", scores[i], ngrams[i]); } printf("Bigram misses: %d \n", lm->n_bg_bo); printf("Trigram misses: %d \n", lm->n_tg_bo); fflush(stdout); metricsPrint(); return 0; }