Java gram文件中的更改和sphinx中的重新加载

Java gram文件中的更改和sphinx中的重新加载,java,cmusphinx,Java,Cmusphinx,在运行时,我们正在填充文件和文件夹的列表。我想在Gram文件中添加该列表。我真的不知道如何更改gram文件并再次加载它。我读过斯芬克斯JSGF,但由于时间不够,我无法完全阅读 我正在使用sphinx4-1.0beta6版本。以下是运行时更改语法所涉及的步骤: 获取JSGFGRAMR组件。JSGFDemo构造函数显示如何从ConfigurationManager检索JSGFGrammar组件(在演示中称为jsgfGrammarManager): URL url = JSGFDemo.class.g

在运行时,我们正在填充文件和文件夹的列表。我想在Gram文件中添加该列表。我真的不知道如何更改gram文件并再次加载它。我读过斯芬克斯JSGF,但由于时间不够,我无法完全阅读


我正在使用sphinx4-1.0beta6版本。

以下是运行时更改语法所涉及的步骤:

获取JSGFGRAMR组件。JSGFDemo构造函数显示如何从ConfigurationManager检索JSGFGrammar组件(在演示中称为jsgfGrammarManager):

URL url = JSGFDemo.class.getResource("jsgf.config.xml");
        ConfigurationManager cm = new ConfigurationManager(url);
        jsgfGrammarManager = (JSGFGrammar) cm.lookup("jsgfGrammar");
使用JSGFGrammar组件加载新的JSGF语法-可以通过loadJSGF方法加载新的JSGF语法。可以在“LoadandRecognite”方法中找到如何完成此操作的示例

private void loadAndRecognize(String grammarName) throws IOException, GrammarException  {
        jsgfGrammarManager.loadJSGF(grammarName);
        dumpSampleSentences(grammarName);
        recognizeAndReport();
     }
使用RuleGrammar添加新规则-可以直接从Java代码操作JSGF语法。可以为应用程序添加、启用和禁用规则。方法“LoadandRecogniteMusic”和“addRule”演示了应用程序如何添加新规则。下面是“addRule”方法,它显示了如何将新规则添加到ruleGrammar中

private void addRule(RuleGrammar ruleGrammar, String ruleName, 
                String jsgf)   throws GrammarException {
        Rule newRule = ruleGrammar.ruleForJSGF(jsgf);
        ruleGrammar.setRule(ruleName, newRule, true);
        ruleGrammar.setEnabled(ruleName, true);
    }
您可以看到以下资源:

  • [

  • 以下是运行时更改语法所涉及的步骤:

    获取JSGFGrammar组件。JSGFDemo构造函数显示如何从ConfigurationManager检索JSGFGrammar组件(在演示中称为jsgfGrammarManager):

    URL url = JSGFDemo.class.getResource("jsgf.config.xml");
            ConfigurationManager cm = new ConfigurationManager(url);
            jsgfGrammarManager = (JSGFGrammar) cm.lookup("jsgfGrammar");
    
    使用JSGFGrammar组件加载新的JSGF语法-可以通过loadJSGF方法加载新的JSGF语法。可以在“LoadandRecognite”方法中找到如何加载的示例

    private void loadAndRecognize(String grammarName) throws IOException, GrammarException  {
            jsgfGrammarManager.loadJSGF(grammarName);
            dumpSampleSentences(grammarName);
            recognizeAndReport();
         }
    
    使用RuleGrammar添加新规则-可以直接从Java代码操作JSGF语法。可以为您的应用程序添加、启用和禁用规则。方法“LoadandRecogniteMusic”和“addRule”演示了您的应用程序如何添加新规则。下面是“addRule”方法,它显示了如何将新规则添加到RuleGrammar中

    private void addRule(RuleGrammar ruleGrammar, String ruleName, 
                    String jsgf)   throws GrammarException {
            Rule newRule = ruleGrammar.ruleForJSGF(jsgf);
            ruleGrammar.setRule(ruleName, newRule, true);
            ruleGrammar.setEnabled(ruleName, true);
        }
    
    您可以看到以下资源:

  • [

  • 我已经在给定的链接中看到了,但我无法实现它。因为我对sphinx完全陌生。我正在使用helloworld的gram文件。我正在运行时修改它。当用户说“打开窗口”(已经在gram文件中)时。它将打开硬编码文件夹,需要在gram文件中添加子文件夹和文件。我可以通过文件操作修改gram文件。但它无法识别新单词(即文件/文件夹名称)。如果你有任何例子,请与我分享。这将减少花费的时间。谢谢你的时间。你尝试过我上面的代码吗?它肯定会工作。如果你通过sphinx网站上的各种演示并查看它们的源文件会更好。我已经在给定的链接中看到了这些,但我无法实现。因为我对sphinx是全新的nx。我正在使用helloworld的gram文件。我正在运行时修改它。当用户说“打开窗口”(已经在gram文件中)时,它将打开硬编码文件夹,子文件夹和文件需要添加到gram文件中。我可以通过文件操作修改gram文件。但它无法识别新单词(哪些是文件/文件夹名)。如果您有任何示例,请与我分享。这将减少花费的时间。感谢您的时间。您是否尝试了上面的代码?它肯定会起作用。如果您通过sphinx网站上的各种演示并查看其源文件,会更好。