当前位置: 首页 > 知识库问答 >
问题:

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

徐栋
2023-03-14

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

我一直在寻找一个可以解析符合JSAPI的JSGF语法文件的免费库。我找到的唯一现实的替代方案是语音识别引擎Sphinx/CMUSphinx。我一直在研究Sphinx,它将我带到了文档中的ActionTagsParser类。我不知道如何解析语法和检索标记。有人能给我指出正确的方向或向我解释一下吗?

谢谢你,诺亚

编辑:

Sphinx是否需要配置才能解析语法?在以下代码中,RuleParse的计算结果始终为NULL。规则语法和文本有效。

    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个答案

魏成济
2023-03-14

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

链接-

使用它的示例代码(您可以在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");
越健
2023-03-14

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

张嘉熙
2023-03-14

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

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

 类似资料:
  • 我正在使用python中的pocketpshinx,使用JSGF语法文件进行语音识别。语法由规则组成,语音与要识别的规则相匹配。 识别效果很好,但我似乎找不到如何检索每个单词的规则名称。我对标记不感兴趣,因为我读到它不是在Pocketsphenx中实现的,只是在规则名称中实现的。例如,我刚刚编写了一个简单的语法文件: 如果识别出的语音是“请稍候,谢谢”,我希望能够检索“命令”部分(“在此等待”)并

  • 我想使用jsoup从RSS提要检索数据。我可以在所有的标签,但我不能这样做,当有内容:编码标签。请任何人帮助我如何从内容:编码标签获取数据。我的订阅源URL是https://sambad.in/feed/我的代码也是Document doc=Jsoup。解析(String.valueOf(response));元素itemElements=doc。选择(“项目”);

  • 问题内容: 在MongoDB中,您可以使用函数从ObjectId检索日期。如何使用SQL从MongoDBObjectId中检索日期(例如,在将ObjectId存储在MySQL数据库中的情况下)? 输入示例: 想要的输出: 问题答案: 这可以通过以下方式实现(假设是一个字符串): 它的工作方式如下: 从十六进制字符串中获取前8个字符 将十六进制数字转换为十进制数字,并将其作为字符串返回(代表UNIX

  • 我创造了一个语法 我正在简单的Sphinx4语音识别器中使用它,我将创建程序答案的基本逻辑。 即“程序如何识别单词(代码片段): 有没有办法获得公认的语法规则名称?当做

  • 问题内容: 我想使用HTTP GET和POST命令从网站检索URL并解析HTML。我该怎么做呢? 问题答案: 您可以将HttpURLConnection与URL结合使用。

  • 问题内容: 下面的代码使用javamail API访问gmail, 问题在于此代码仅列出了INBOX文件夹,而定义的标签不少于20个。如何使代码列出/访问这些嵌套的文件夹/标签,该怎么做? 问题答案: 不要使用POP,如果需要标签/文件夹,请使用IMAP。 如javamail docs 中所述,由于POP协议的性质,POP消息存储区始终 仅包含一个文件夹“ INBOX”。