| | #include <pocketsphinx.h> |
| | #include <stdio.h> |
| | #include <string.h> |
| | #include <time.h> |
| |
|
| | #include "lm/jsgf.h" |
| | #include "lm/fsg_model.h" |
| |
|
| | #include "pocketsphinx_internal.h" |
| | #include "fsg_search_internal.h" |
| | #include "test_macros.h" |
| |
|
| | int |
| | main(int argc, char *argv[]) |
| | { |
| | ps_decoder_t *ps; |
| | cmd_ln_t *config; |
| | jsgf_t *jsgf; |
| | jsgf_rule_t *rule; |
| | fsg_model_t *fsg; |
| | FILE *rawfh; |
| | char const *hyp; |
| | int32 score, prob; |
| |
|
| | (void)argc; |
| | (void)argv; |
| | TEST_ASSERT(config = |
| | ps_config_parse_json( |
| | NULL, |
| | "hmm: \"" MODELDIR "/en-us/en-us\"," |
| | "dict: \"" DATADIR "/turtle.dic\"," |
| | "samprate: 16000")); |
| | TEST_ASSERT(ps = ps_init(config)); |
| |
|
| | jsgf = jsgf_parse_file(DATADIR "/goforward.gram", NULL); |
| | TEST_ASSERT(jsgf); |
| | rule = jsgf_get_rule(jsgf, "goforward.move2"); |
| | TEST_ASSERT(rule); |
| | fsg = jsgf_build_fsg(jsgf, rule, ps->lmath, 7.5); |
| | TEST_ASSERT(fsg); |
| | fsg_model_write(fsg, stdout); |
| | ps_add_fsg(ps, "goforward.move2", fsg); |
| | ps_activate_search(ps, "goforward.move2"); |
| | TEST_ASSERT(rawfh = fopen(DATADIR "/goforward.raw", "rb")); |
| | ps_decode_raw(ps, rawfh, -1); |
| | hyp = ps_get_hyp(ps, &score); |
| | prob = ps_get_prob(ps); |
| | printf("%s (%d, %d)\n", hyp, score, prob); |
| | TEST_EQUAL(0, strcmp("go forward ten meters", hyp)); |
| | ps_free(ps); |
| | fclose(rawfh); |
| | ps_config_free(config); |
| |
|
| |
|
| | TEST_ASSERT(config = |
| | ps_config_parse_json( |
| | NULL, |
| | "hmm: \"" MODELDIR "/en-us/en-us\"," |
| | "dict: \"" DATADIR "/turtle.dic\"," |
| | "jsgf: \"" DATADIR "/goforward.gram\"," |
| | "samprate: 16000")); |
| | TEST_ASSERT(ps = ps_init(config)); |
| | TEST_ASSERT(rawfh = fopen(DATADIR "/goforward.raw", "rb")); |
| | ps_decode_raw(ps, rawfh, -1); |
| | hyp = ps_get_hyp(ps, &score); |
| | prob = ps_get_prob(ps); |
| | printf("%s (%d, %d)\n", hyp, score, prob); |
| | TEST_EQUAL(0, strcmp("go forward ten meters", hyp)); |
| | ps_free(ps); |
| | fclose(rawfh); |
| | ps_config_free(config); |
| |
|
| | TEST_ASSERT(config = |
| | ps_config_parse_json( |
| | NULL, |
| | "hmm: \"" MODELDIR "/en-us/en-us\"," |
| | "dict: \"" DATADIR "/turtle.dic\"," |
| | "jsgf: \"" DATADIR "/goforward.gram\"," |
| | "toprule: goforward.move2, samprate: 16000")); |
| | TEST_ASSERT(ps = ps_init(config)); |
| | TEST_ASSERT(rawfh = fopen(DATADIR "/goforward.raw", "rb")); |
| | ps_decode_raw(ps, rawfh, -1); |
| | hyp = ps_get_hyp(ps, &score); |
| | prob = ps_get_prob(ps); |
| | printf("%s (%d, %d)\n", hyp, score, prob); |
| | TEST_EQUAL(0, strcmp("go forward ten meters", hyp)); |
| | ps_free(ps); |
| | ps_config_free(config); |
| | fclose(rawfh); |
| |
|
| | TEST_ASSERT(config = |
| | ps_config_parse_json( |
| | NULL, |
| | "hmm: \"" MODELDIR "/en-us/en-us\"," |
| | "dict: \"" DATADIR "/turtle.dic\"," |
| | "jsgf: \"" DATADIR "/defective.gram\",")); |
| | TEST_ASSERT(NULL == ps_init(config)); |
| | ps_config_free(config); |
| |
|
| | return 0; |
| | } |
| |
|