1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#include <pocketsphinx.h>
#include <stdio.h>
#include <string.h>
#include "pocketsphinx_internal.h"
#include "test_macros.h"
#include "test_ps.c"
int
main(int argc, char *argv[])
{
ps_decoder_t *ps;
ps_nbest_t *nbest;
cmd_ln_t *config;
FILE *rawfh;
char const *hyp;
int32 score, n;
(void)argc;
(void)argv;
TEST_ASSERT(config =
ps_config_parse_json(
NULL,
"hmm: \"" MODELDIR "/en-us/en-us\","
"lm: \"" MODELDIR "/en-us/en-us.lm.bin\","
"dict: \"" MODELDIR "/en-us/cmudict-en-us.dict\","
"fwdtree: true,"
"fwdflat: true,"
"bestpath: true,"
"samprate: 16000"));
TEST_ASSERT(ps = ps_init(config));
TEST_ASSERT(rawfh = fopen(DATADIR "/goforward.raw", "rb"));
ps_decode_raw(ps, rawfh, -1);
fclose(rawfh);
hyp = ps_get_hyp(ps, &score);
printf("BESTPATH: %s (%d)\n", hyp, score);
for (n = 1, nbest = ps_nbest(ps); nbest && n < 10; nbest = ps_nbest_next(nbest), n++) {
ps_seg_t *seg;
hyp = ps_nbest_hyp(nbest, &score);
printf("NBEST %d: %s (%d)\n", n, hyp, score);
for (seg = ps_nbest_seg(nbest); seg;
seg = ps_seg_next(seg)) {
char const *word;
int sf, ef;
word = ps_seg_word(seg);
ps_seg_frames(seg, &sf, &ef);
printf("%s %d %d\n", word, sf, ef);
}
}
if (nbest)
ps_nbest_free(nbest);
ps_free(ps);
ps_config_free(config);
return 0;
}
|