2

我用 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;
    }
4

3 回答 3

2

根据该项目的论坛,解析标签的能力已被删除。

论坛帖子讨论它不是一个功能。

于 2014-10-24T14:52:00.270 回答
1

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

于 2012-12-30T20:03:31.420 回答
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");
于 2017-05-25T19:09:38.707 回答