使用PocketSphinx打印置信度值

时间:2016-01-19 02:29:17

标签: c speech-recognition confidence-interval pocketsphinx

我的程序中有以下代码:

cmd_ln_t *config = cmd_ln_init(NULL, ps_args(), TRUE,
                                   "-hmm", MODELDIR "/en-us/en-us",
                                   "-lm", MODELDIR "/en-us/en-us.lm.bin",
                                   "-dict", MODELDIR "/en-us/cmudict-en-us.dict",
                                   NULL);
ps_decoder_t *ps = ps_init(config);
// ...
const char *text = recognizeFromFile(ps, fileName);
// ...
fprintf(stdout, "Recognized text: %s\n", text);
fprintf(stdout, "Confidence: %g%%\n", logmath_exp(ps_get_logmath(ps), ps_get_prob(ps)) * 100);

但是每当我得到一个置信度输出时,它看起来并不像我正在寻找的值正确打印。

例如,这是我说“测试”和生成的输出的情况:

Recognized text: toes
Confidence: 8.17663%
...
Recognized text: test
Confidence: 0.195157%

正如你从我第一次说的那样可以看出,该程序猜测我说的不正确,但仍然具有比实际猜测正确时更高的置信度值。

从我从互联网上获得的东西,我以为我一直在正确地计算信心。这是不正确的?如何修复它以使输出更准确?

1 个答案:

答案 0 :(得分:1)

  

从我从互联网上获得的内容来看,我以为我一直在正确地计算信心。这是不正确的吗?

您的代码是正确的

  

如何修复它以使输出更准确?

导致精度较差的问题很多,大多数与代码无关,其中一个是错误的输入格式。另一个是由于体积估计缓慢而对第一个样本的识别不良。通常可以正确识别以下样本。要获得此方面的帮助,您需要提供完整数据以重现问题,如FAQ