搜索
查看: 533|回复: 0

语音识别离线语法编写规则说明 [复制链接]

Rank: 10Rank: 10Rank: 10

最佳写手 活跃会员 突出贡献 精! 入门会员 回复小达人 邮箱勋章 手机 常驻居民 最佳写手(竖)

发表于 2016-11-18 13:48:56 |显示全部楼层
ISpeak Grammar语法规则

1、参考文档

捷通华声iSpeakGrammar语法识别接收的语法格式为JSGF(Java Speech Grammar Format, 国际标准的语法格式),其格式的具体规范请参见:http://www.w3.org/TR/jsgf/。

2、语法文件格式2.1文件编码

语法文件内容均采用UTF8编码,文件开头必须有UTF-8 BOM头:0xe,0xbb,0xbf。

2.2语法文件头

语法文件头必须采用固定内容:#JSGF  V版本号

  

#JSGF V1.0

  

grammar Mobile.call;

  

public <main>=打电话给<contactname>;

  

<contactname>=(张三|李四|王五|赵六);

  
2.3行注释

双斜杠(//)作为注释的起始。

注意:请不要将注释作为语法文件的第一行或者最后一行。

3、语法3.1语法文件名

语法名称采用java语言的命名方法:

包名(packagename).简单语法名(simple grammar name)

  

#JSGF V1.0

  

grammar  Mobile.call;

  

以上示例定义的语法名为Mobile.call

3.2语法定义

使用关键词grammar来定义语法,如:

  

#JSGF V1.0

  

grammar Mobile.call;

  

以上示例使用grammar定义了Mobile.call

4、规则4.1规则名

一个语法可以包含若干条语法规则,每条规则的名称都是唯一的。每条规则的内容可以包含对话文本或引用其他规则。

引用或定义语法规则时,必须由尖括号(<>)标出规则名称,定义规则时用分号(;)作为结尾。

规则名称中不可包含以下字符:

  

<>

  

分别为英文字符:左尖括号,右尖括号

4.2规则项

规则项需要包含可发音字符,不支持标点、符号,如:不可包含空格及以下字符:

  

<  > $ { } ( ) [ ] | ; : ? / , ” * +

  

分别为英文字符:左尖括号、右尖括号、美元符号、左花括号、右花括号、左方括号、右方括号、竖线、分号、冒号、斜线、逗号、单引号、双引号、星号、加号。

注意:以下关键词暂不能作为规则项:”gmail”,”nexus”, ”gingerbread”, ”optimus”, ”iOS”, ”iCloud”, ”eclair”, ”rom”, ”ime”, ”lua”, ”japan”, ”bag”, ”bowl”, ”java”, ”bluetooth”, ”ebook”, ”email”, ”baidu”, ”sohu”, ”souhu”,

4.3规则格式              4.3.1

竖线(|)表示逻辑或的关系。

下列的阿拉伯数字规则,其表示任选其中一个并仅限一个数字:

  

<alphabet>=(0|1|2|3|4|5|6|7|9|8);

  
              4.3.2 集合

使用一对英文圆括号表示为括号内元素一个任选其一的集合,如:

  

<greeting>=hello<Harry|Paul|Rose);

  

          这条规则表示可以任意说出三个名字中的一个。

              4.3.3 可选项

使用一对英文方括号表示括号内的元素为任选其一或者不说,如:

  

<greet>=[good  morning]How are you;

  

          这条规则中“goodmorning”为可选项。

              4.3.4 通配符

星号(*)和加号(+)作为通配符来使用;

星号(*):表示该字段可以不说或者说多次,如:

  

<hesitation>=This  is (a)* mine;

  

这条规则中表示“a”可以出现0次或者多次;

加号(+):加号表示该字段至少说一次,如:

  

<hesitation2>=This  is (an)+ mine;

  

          这条规则表示“an”至少出现1次或多次;

4.4规则限定

public关键词可以限定此语法规则是本语法文件的根规则。

每个语法文件中最多只能有一个public规则。

5、语法示例5.1 WordList(语法词表)
  

#JSGF V1.0

  

grammar city;

  

public <cityname>=(北京|上海|广州|深圳|天津|重庆|拉沙|呼和浩特);

  
5.2 MultiSlot(多槽语法)
  

#JSGF V1.0

  

grammar voyage;

  

public <airline>=[]<cityname>飞往<cityname>;

  

<cityname>=(北京|上海|广州|深圳|天津|重庆|拉沙|呼和浩特);

  
5.3 WordLoop(词表循环语法)
  

#JSGF V1.0

  

grammar numberarray;

  

public <array>=(<number>)+;

  

<number>=(0|1|2|3|4|5|6|7|9|8);

  


踩过的脚印
回复

举报

验证问答 换一个 验证码 换一个

Archiver|任务|灵云 ( 京ICP证030095号 )

GMT+8, 2017-3-29 15:27 , Processed in 0.074559 second(s), 23 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部