我用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;
}
答案 0 :(得分:2)
根据项目的论坛,已删除解析标记的功能。
答案 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");