如何使用sphinx从JSGF语法中检索标签?

时间:2012-12-30 19:48:39

标签: java sphinx cmusphinx jsapi

我用Java编写了一个应用程序,它使用CloudGarden API来解析JSAPI语法,从语法规则中返回标记,然后相应地处理这些标记。 CloudGarden API的问题在于它依赖于Windows。我需要一个可以执行相同任务的跨平台库。我不需要语音合成,也不需要语音识别。基本上,一个字符串被传递给包含一些转录语音的程序。我需要根据我的语法文件解析这个字符串,以检索动作标记(JSGF语法规则中{}之间的文本)。然后我的程序使用检索到的动作标签来执行其他功能。

我一直在寻找一个可以解析符合JSAPI的JSGF语法文件的免费库。我找到的唯一现实的选择是语音识别引擎Sphinx / CMUSphinx。我一直在研究Sphinx,它在我们的文档中将我带到了ActionTagsParser类。我无法弄清楚如何解析语法并检索标签。有人能指出我正确的方向或向我解释吗?

谢谢你, 诺亚

编辑:

是否需要配置Sphinx才能解析语法?在以下代码中,RuleParse始终求值为NULL。 RuleGrammar和文本有效。

    try {
        if(recognizer == null){
            recognizer = new BaseRecognizer();
            recognizer.allocate();
        }

        rg.setEnabled(true);
        recognizer.commitChanges();

        RuleParse p = rg.parse(text, null);
        if (p == null) {
            return null;
        }

        return p.getTags();
    } catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }

3 个答案:

答案 0 :(得分:2)

根据项目的论坛,已删除解析标记的功能。

Forum post discussing it not being a feature.

答案 1 :(得分:1)

我们删除了标签,请参阅下面的Travis答案。

答案 2 :(得分:0)

我昨天写了一个图书馆,这可能就是你需要的:

链结> https://github.com/goxr3plus/JSFG-Grammar-Rules-Parser-Library-for-Sphinx4-5

使用它的示例代码(您可以在github上找到更多示例):

List<String> rules;

rules = JSGFGrammarParser.getAllGrammarRules(JSGFGrammarParserTester.class.getResourceAsStream("grammar1.gram"), false);
System.out.println("Grammar Rules , without definitions: " + rules + "\n");

rules = JSGFGrammarParser.getAllGrammarRules(JSGFGrammarParserTester.class.getResourceAsStream("grammar1.gram"), true);
System.out.println("Grammar Rules , with definitions: " + rules + "\n");