对个别关键短语的分裂假设

时间:2016-11-03 23:19:09

标签: android voice-recognition cmusphinx pocketsphinx-android

我在我的Android应用中使用Pocketsphinx。我有一组相对较小的命令可以独立识别,所以我最终使用了一个如下所示的文件中的关键字搜索:

one/1.0/
done/1.0/
recognition on/1e-10/
recognition off/1e-10/

实际列表不是英文,因此为了示例,这些关键字是任意选择的。我意识到这些阈值可能略低于最佳值,并且短词很容易出现不匹配。

这个方法出现了问题:

@Override
public void onPartialResult(Hypothesis hypothesis) {
    if (hypothesis != null) {
        Log.d(
                "Sphinx",
                "\"" + hypothesis.getHypstr() + "\" recognized"
        );
    }
}

请注意,有些单词听起来非常相似。事情是,

  • “一个”会产生"done one" recognized
  • “完成”会产生"one done" recognized

不幸的是,我找不到关于hypstr_get的任何文档(如果你能指导我,我会很感激)但实际上它似乎以递增的概率顺序返回一连串的可能匹配。

如何从hypothesis检索实际命令?我不能只用空格分割hypothesis.getHypstr(),因为有些命令是关键短语而不是关键字。我只想要一个最可能的结果。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以迭代细分,每个细分都是关键字

    for (Segment seg : recognizer.getDecoder().seg()) {
        System.out.println(seg.getWord() + " " + seg.getProb());
    }