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

接收JSGF语法规则名称

奚瑾瑜
2023-03-14

我创造了一个语法

#JSGF V1.0;

/**
 * JSGF Grammar 
 */

grammar grammar;

public <number> = ( zero | one | two | three | four | five | six | seven | nine | ten
                   | eleven | twelve | thirteen | fourteen | fifteen | sixteen | seventeen | eighteen | nineteen | twenty 
                   | thirty | forty | fifty | sixty | seventy | eighty | ninety |
                    hundred | thousand | million | billion)+;                   
public <operation> = <number>{1} (plus | minus | multiply | division){1} <number>{1};
public <greet> = ( hello | hey | hi )* world;
public <sport> = (football | tennis);
public <program> = (notepad | calculator);
public <run> = (run | open | start) <program>;

我正在简单的Sphinx4语音识别器中使用它,我将创建程序答案的基本逻辑。

即“程序如何识别单词(代码片段):

Configuration configuration = new Configuration();
        //SetVoice
        textToSpeech.setVoice("cmu-bdl-hsmm");
        // Load model from the jar
        configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
        configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
        configuration.setGrammarPath("resource:/grammars");
        configuration.setGrammarName("grammar");
        configuration.setUseGrammar(true);

try {
            recognizer = new LiveSpeechRecognizer(configuration);
        } catch (IOException ex) {
            logger.log(Level.SEVERE, null, ex);
        }

        // Start recognition process pruning previously cached data.
        recognizer.startRecognition(true);

        SpeechResult speechResult = recognizer.getResult();
                    if (speechResult != null) {

                        result = speechResult.getHypothesis();
                        System.out.println("You said: [" + result + "]\n");

有没有办法获得公认的语法规则名称?当做

共有1个答案

东方海
2023-03-14

没有办法做到这一点。如果要执行语义分析,只需使用正则表达式解析语音识别器输出。另请参见

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

为什么pocketsphinx中不支持标记?

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

  • 请注意,我不是在询问Java包命名约定。 例如,Java在法律上不允许包名以数字开头。 然而,官方的Java文档似乎并没有涵盖实际的规则,管理什么可以或不可以在一个包名称中使用。 那套合法的包名是什么?

  • 主要内容:JSON 中的键,JSON 中的值,JSON 与 JavaScript 对象的区别JSON 的语法与 JavaScript 中的对象很像,在 JSON 中主要使用以下两种方式来表示数据: Object(对象):键/值对(名称/值)的集合,使用花括号定义。在每个键/值对中,以键开头,后跟一个冒号,最后是值。多个键/值对之间使用逗号分隔,例如; Array(数组):值的有序集合,使用方括号定义,数组中每个值之间使用逗号进行分隔。 下面展示了一个简单的 JSON 数据: 注意:所有

  • CSS 样式由一系列规则组成,这些规则由 Web 浏览器解析,然后应用于 HTML 文档相应的元素上。CSS 样式规则由三个部分组成,分别是选择器、属性和值: 选择器:由 HTML 元素的 id、class 属性或元素名本身以及一些特殊符号构成,用来指定要为哪个 HTML 元素定义样式,例如选择器就表示为页面中的所有标签定义样式; 属性:您希望给 HTML 元素设置的样式名称,由一系列关键词组成,

  • 我的语法允许以下操作: 我从其他语法中抓了几个东西来玩。我的主要问题是我的expr规则。给定以下输入:,我期望解析树会找到..规则,但它将解释0。并不正确解析其余部分。 如果在我的0后面加上一个空格,就可以了: 谢了!

  • 样式规则是CSS的基本单位,每个样式规则由选择器(selector)和声明块(declaration block)两个基本部分构成。 选择器决定为哪些元素应用样式,声明块定义相应的样式。声明块包裹在一对花括号中。声明块由一条或多条声明(declaration)组成,每条声明由一个属性和一个值组成,属性和值之间用冒号隔开。属性是希望设置的样式属性,每个属性有一个值。 具体来讲,一个样式规则由选择器、