【问题标题】:Printing confidence values with PocketSphinx使用 PocketSphinx 打印置信度值
【发布时间】:2016-01-19 17:50:31
【问题描述】:

我的程序中有以下代码:

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%

正如你在我第一次说它时看到的那样,程序猜错了我说的内容,但仍然比它实际猜对时具有更高的置信度值。

根据我从互联网上获得的信息,我认为我一直在正确计算置信度。这是不正确的吗?如何修复它以使输出更准确?

【问题讨论】:

    标签: c speech-recognition confidence-interval pocketsphinx


    【解决方案1】:

    根据我从互联网上获得的信息,我认为我一直在正确计算置信度。不对吗?

    你的代码是正确的

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

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

    【讨论】:

    • 但是,精度下降是否会导致置信度值似乎被切换?
    • 准确度差意味着置信度可能具有任意值。所以你根本不应该依赖第一次识别。
    • 但这不是 PocketSphinx 的最佳猜测吗?
    • 对不起,我不太明白你的问题。当音频设置不正确时,例如,在第一次识别尝试中,结果很差,信心也很差。这是因为音频检测器根本不起作用。你不应该认为信心有任何意义。
    • 问题是算法通过比较解码变体来计算置信度。如果所有变体都是错误的,那么信心就是错误的。它不知道“事情完全出错了”。总体而言,我们的置信度值远非完美,您不应过于依赖它。
    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2010-10-07
    相关资源
    最近更新 更多