使用PocketSphinx打印置信值

使用PocketSphinx打印置信值,c,speech-recognition,confidence-interval,pocketsphinx,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"

我的程序中有以下代码:

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);
但每次我得到一个信心输出,它似乎并不完全像我所寻找的值被正确打印

例如,这里有一个我说“test”并生成输出的例子:

正如你从我第一次说出来时所看到的,程序猜错了我说的话,但仍然比实际猜对的时候有更高的置信值

根据我从互联网上获得的信息,我认为我已经正确计算了信心。这不对吗?如何修复它以使输出更准确

根据我从互联网上获得的信息,我认为我已经正确计算了信心。这不对吗

你的代码是正确的

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


有许多问题会导致精度降低,大多数与代码无关,其中之一是输入格式不正确。另一个问题是,由于体积估计缓慢,对第一个样本的识别能力较差。以下样本通常能够正确识别。要获得这方面的帮助,您需要提供完整的数据来重现您的问题,如中所示。

但是,精度恶化是否会导致信心值似乎被切换?精度差意味着信心可能具有任意值。所以你根本不应该依赖于第一次识别。但这不是Pocketsphenx最好的猜测吗?对不起,我不太明白你的问题。如果音频设置不正确,例如,在第一次识别尝试中,结果不好,可信度也不好。这是因为音频探测器根本不工作。你不应该认为置信度有任何意义,问题是算法通过比较解码变量来计算置信度。如果所有变体都是错误的,那么信心就是错误的。它不知道“有些事情完全错了”。总的来说,我们的信心值远远不够完美,你不应该太依赖它。
Recognized text: toes
Confidence: 8.17663%
...
Recognized text: test
Confidence: 0.195157%