GSL文件是VXML语音识别中用到的一种特定格式的文件。其格式如下:
1.GSL内部定义和外部定义.
内部定义是在VXML文档中完全用<grammer>元素定义.外部定义是定义一个外部文件,并在VXML中引用.在外部GSL文档中,所有的规则必须命名.在内部GSL定义中,如果只有一个语音识别规则,可以不命名,如果有多个语音识别规则,每一个都要命名.
GSL推荐的扩展名为.gsl.解释器也识别.grammar的扩展名.如果直接在VXML文档中定义grammar,一定要用CDATA括起来,否则VXML文档无法识别.如下:
<grammar...usageattributes...>
<![CDATA[
...grammarheader...
...grammarruledefinitions...
]]>
</grammar>
外部GSL文件不应该包含CDATA部分,格式如下:
;GSL2.0
...grammarruledefinitions...
2.GSL中的注释。
GSL中的注释可以出现在任何地方,注释用分号开始,分号后的内容将会被全部忽略.例如:
;thisisacomment
RuleName[ruleexpansion];thisisacomment,afteranon-comment
3.GSL中的保留字.
AND-n,OR-n,OP-n,KC-n,PC-n以上是GSL的保留字,不能够将它们定义为规则的名字.n是个整数.
4.GSL的头部声明.
GSL文件可以用一个self-identifyingheader开始,来说明GSLgrammar的版本。可以不写,要是有必须用
;GSL2.0
开头。ABNF和XML语法都限制一个grammer元素只能识别语音输入和DTMF中的一种,而不允许一个grammer同时包括语音输入和DTMF。GSL文件没有这个限制,任何的GSL语法都可以在同一个grammar元素,甚至同一个识别规则中,同时包括DTMF和语音输入。XML默认使用的是第一个public语法规则。
5.基本规则定义.
一个语法规则,包含两个部分。
第一规则的名字,这个名字可以在别的语法规则中引用。
第二和该规则相关的可能的话音输入。
大多数的语法规则,包括一系列的用户可能说的词语,语法规则扩展部分,一般用[]括起来。例如:
city[南京"北京"呼和浩特]
该规则的名字是city,语法规则扩展部分是可选的名字。如果用户说,南京,北京或呼和浩特,该语法就匹配上了。语法名称是一个字符串,用来标示这个语法规则。同一个grammar中的语法规则名称,必须不一样,但是相同的语法规则名称可以用在不同的grammar中。外部定义语法,所有的语法规则必须有名字,内部语法定义中,如果只有一个语法规则,可以没有名字,否则都必须有名字。语音规则名称大小写敏感,下面的字符都可以用在语音规则名称中。
-(连字符)_(下划线)‘(单引号)@(at符).(句号)
特殊的语法规则。GSL有三个预定义的规则。
<special:passthrough>
<special:roadblock>
<special:resistor>
NULL和<special:passthrough>代表的意义一样。VOID和<special:roadblock>代表的意义一样。定义在grammar中的语法规则,不能和他们重名。
<special:passthrough>,NULL和用户什么没有输入匹配。你可以用下面的grammer来匹配,“北京”“上海”和没有输入。
Trigger=[NULL北京上海]
<special:roadblock>,VOID定义的语法规则将不会被匹配。如,任何输入都不会匹配下面的规则。
Trigger=(VOID北京上海])
<special:resistor?weight=n>用来标示语音输入的可能性,权值n是标示输入可能性的一个浮点数(floatingpointnumber)。weight的值低于1,将会减少该规则匹配的可能性,weight值越接近零的,规则越不容易被匹配。大于1,将会增加匹配的可能性。使用上面三种规则,可以动态的改变规则。
6.语法规则定义的作用域。
每一个规则都有一个作用域,private或public.public修饰的语法规则对外部可见,外部引用可以用名称指定一个public语法规则。private语法规则只在包含它的grammar中可见,而且只能被在同一个grammar中的其他的语法规则引用。把一个语法规则标示为public的
格式为:RuleName:publicruleExpansion
没有标示为public的就是private的语法。如果一个grammar中,没有一个语法规则标示为public,那么所有的语法规则都是public的。如果有一个标示了public,那么其余的都是private。GSL中的根语法规则是第一个标示为public的语法规则。如果都没标示,默认是第一个。下面的例子,定义了一个public语法规则Snapper,和两个private语法规则,SnapperType和FishColors。根语法规则是Snapper。
SnapperType[muttonFishColors]
FishColors[blackgrayred]
Snapper:public(SnapperTypesnapper)
7.语法规则的递归。GSL文件中可以定义直接或间接引用自身的语法规则。
;Rulethatreferstoitselfdirectly
Digits[Digit(DigitDigits)]
Digit[0123456789]
;Rulethatindirectlyreferstoitself
NounPhrase(Noun?PrepositionalPhrase)
PrepositionalPhrase(PrepositionNounPhrase)
写此类语法时要注意,GSL不支持左递归,也就是说不能定义第一个子部分包含语法规则本身的语法规则。这是为了确保解释器不会进入无穷递归,来匹配一个语法规则。
;合法
Digits[Digit(DigitDigits)]
Digits[(DigitDigits)Digit]
;不合法
Digits[(DigitsDigit)Digit]
Digits[Digit(DigitsDigit)]
语音规则扩展部分。声音标示符(英语)应该使用小写字母,数字,-(连字符)_(下划线)‘(单引号)@(at符).(句号).如果使用其他的特殊符号(空格除外),必须用“”双引号括起来。下面是几条简单地规则:
1。避免缩写。例如,用usa代替USA,用vxml代替VXML。
2。展开缩写。例如,用street代替st.。用doctor代替dr.。
3。把标点拼出来。
4。把大于9的数拼出来。
DTMF标示符。
键DTMF标示符
0dtmf-0
1dtmf-1
2dtmf-2
3dtmf-3
4dtmf-4
5dtmf-5
6dtmf-6
7dtmf-7
8dtmf-8
9dtmf-9
*dtmf-star
#dtmf-pound
例如:[(小王)(dtmf-4dtmf-9dtmf-7dtmf-3)]
{<emp小王>}
用户或者说“小王”或者连续的按4973都能正确匹配。
语法规则的引用。
引用格式
本地语义规则语义规则名
本地语义规则的变量语义规则名:变量名
用URL指定根语义规则名<grammarURI>
用URL指定语义规则<grammarURI#RuleName>
特定规则<special:passthrough>,NULL
<special:roadblock>,VOID
<special:resistor?weight=n>
PrimaryColors(?Shades[redbluegreen])
Shades[darklight]
PrimaryColors[(?[darklight][redbluegreen])]
引用和宏替换差不多。上面两个等价。本地引用有两种形式。
RuleName
RuleName:variableName
第二个将会用RuleName的返回值替换。
外部引用也有两种形式。
<grammarURI>
<grammarURI#RuleName>
;指定外部语法为根grammar
<http://www.myCompany.com/grammars/fish.gram>
;引用外部语法规则
<../fish.gram#butterflies>
语法规则的综合使用。
选择:[北京南京呼和浩特]
序列:(whatiscoral)//sequenceoftokens
(QuestionSubject)//sequenceofrulereferences
(SubjectisType)//sequenceoftokensandrulereferences
重复:语法行为
?expr可选的
*expr重复该表达式0或更多次.
+expr重复该表达式1或更多次.
例如:
Gear=[鞋裤子袜子帽子手套围巾]
Action=[买购买]
MakeRequest=(我想Action+Gear?(和Gear))
下面的都是匹配项。
我想买手套.
我想买手套和围巾.
我想购买手套,围巾,裤子.
可以无限制的写下去,但是用户不可能永远地说下去,如果对结果设定范围,语音识别效果会更好。用户不可能说重复的名字。把上面的改为如下,只说1-5次。
MakeRequest=(我想Action+Gear我想Action+Gear?(和Gear)(和Gear)(和Gear)(和Gear))
权值:权值可以任意设2,2.5,0.8,或.4。大于1说明该选项可能性比较大。如果没有指定,各项的可能性是一样的。
格式:grammarExpression~probability
例如:
[cat~3.1415dogfish~.25]
[fish~10(angelfish)~2anthia~0.1]
也可以把权值加到?+*上面,这与一般的权值不一样。格式:
语法描述
?expr~.7575%会说一次.
+expr~.75不说,要是说了,75%的可能说第二次,类推。
*expr~.7575%的可能说第一次,第一次说了,75%的可能说第二次,类推。
例如:
;theword"angel"isoptionalandisnotverylikelytooccur.
?angel~0.25fish
;therulereferencecanoccur0ormoretimesanditis
;verylikelyitwilloccurmorethanonce.
*Digit~.8
赋值语句。用{}括起来。
两种形式,<slotnamevalue>和return(value)
需要注意的是return只能用于子语法规则,如果是根grammar则不能包含return语句。
slot的例子:
;GSL2.0;
ColoredOjbect:public(ColorObject)
Color[
[redpink]{<colorred>}
[yellowcanary]{<coloryellow>}
[greenkhaki]{<colorgreen>}
]
Object[
[truckcar]{<objectvehicle>}
[ballblock]{<objecttoy>}
[shirtblouse]{<objectclothing>}
]
;文件结束
这个规则可以识别"yellowshirt"或"canaryblouse"等短语。并返回相同的语义解释;
{
color:yellow;
object:clothing;
}
Return的例子:
Flight:public[
([fromleaving]City:frCity){<origin$frCity>}
([to(arrivingin)]City:toCity){<destination$toCity>}
]
City[
atlanta{return("Atlanta")}
chicago{return("Chicago")}
dallas{return("Dallas")}
]
;文件结束
从City子项返回一个值给Flight。
GSL中可以定义变量,也有整型和字符串类型(我也没用过),也可以调用函数。
主要函数为:
名称描述
add加两数
sub减运算
mul乘运算
div除运算
neg返回相反数
strcat连接两个字符串
(转载自http://www.xml.org.cn)
相关推荐
2. **语音识别**:VXML支持基于发音词典的语音识别(ASR,Automatic Speech Recognition),允许用户通过语音来响应系统提示。`<grammar>`元素用于定义语音语法,限制用户的输入范围。 3. **合成语音**:TTS(Text ...
VXml语音业务开发培训.ppt
9. **c3nform.vxml** - 语音XML(VoiceXML)文件,可能与浏览器的语音识别或交互功能有关。 10. **unite** - 这可能是Opera Unite的关联文件,一个早期的Opera特性,允许用户直接通过浏览器分享和托管内容。 综上所...
IVR系统通过读取VXML脚本来播放预录的语音,接收用户输入,然后根据用户的选择或语音识别结果执行相应的业务逻辑。 3. **新员工IVR开发常见问题及解析**:新入职的开发人员可能会遇到语音识别准确性、用户交互设计...
4. **p2vXML.dll**:可能与物理到虚拟(P2V)转换有关,帮助将物理服务器的系统转换为虚拟机。 5. **tools-key.pub**:这可能与虚拟机的自动化工具或更新密钥有关,用于安装或更新虚拟机的增强功能。 6. **vmnat.exe...
它结合了自然语言处理、语音识别和文本转语音(TTS)技术,创建了一个标准化的框架,使得语音应用可以在不同的平台和设备上运行。 **2. VoiceXML语言** VoiceXML文档由一系列的字段(fields)、菜单(menus)、提示...
VXML电话流程脚本编程指南提供了一套完整的解决方案,涵盖了脚本的编写、编译、执行等多个方面,同时也详细介绍了系统变量的定义和用途,为企业和个人开发者提供了一个强大的工具,帮助他们轻松应对复杂的电话语音...
- **VXML编辑工具概述**:介绍如何使用VXML编辑工具创建和编辑交互式语音应答脚本。 - **重要术语** - **菜单**:VXML脚本中的菜单节点用于构建多级菜单结构。 - **TTS**:文本转语音(Text To Speech)技术,用于将...
实现平台需要支持语音识别、合成、事件处理和脚本执行等功能。 6. **VoiceXML的一些概念**: - **对话框和子对话框**:对话框是VoiceXML应用的基本单元,包含一系列交互步骤。子对话框是可重用的对话片段。 - **...
Voice XML中的`<say-as>`元素用来控制语音合成的发音方式,如数字读法、日期格式等。 4. **流转控制**:Voice XML提供了一套流控制机制,如`<if>`、`<block>`、`<goto>`等,用于根据用户的行为和输入来决定流程的...
**VoiceXML(Voice Extensible Markup Language)** 是一种标准的XML方言,主要用于构建交互式语音应答(IVR)系统,使用户可以通过电话语音进行交互。**Vxml4net** 是一个针对.NET 2.0框架开发的开源库,旨在简化...
VXML是一种语音可扩展标记语言,它为电话语音系统提供了一种新的开发方法,使得开发者能够以更简洁的方式构建复杂的语音交互系统。VXML允许设计和实现交互式语音响应(IVR)服务,使用户可以通过电话进行自然语言...
- 语音应用偏好设置:对各种语音文件格式如CCXML、GRXML、VXML的配置偏好。 - GVP(Genesys Voice Platform)调试器偏好设置:针对Genesys平台的调试配置。 5. **创建语音应用程序** - GVP的介绍:了解GVP平台的...
1. **语音识别**:IVR系统的核心之一是语音识别技术,它允许用户通过说话而非按键来与系统交互。这一过程包括了语音信号的采集、预处理、特征提取、模型匹配等步骤。 2. **DTMF解码**:DTMF(Dual-Tone Multi-...
avaya genesis 华为,对ivr开发都可以写vxml文件,不用每次都去学使用每个公司的ivr开发软件
- **VoiceXML (VXML)**:一种用于创建基于语音的应用的标准。 - **grXML**:扩展了VoiceXML功能的语言。 - **Frost Library**:用于处理语音输入的库。 - **WALL**:Web Audio Library,用于处理音频数据。 - **SMS/...
VoiceXML文档遵循XML的标准格式,并且具有特定的元素和属性来支持语音交互。一个基本的VoiceXML文档通常包含以下元素: - `<vxml>`:根元素,定义了一个VoiceXML文档的开始。 - `<form>`:表示一个表单,用来收集...
该门户集成了多种先进的通信技术,包括语音自助服务、视频自助服务、TTS(文本转语音)、ASR(语音识别)等功能,以满足不同场景下的客户需求。 1. **系统架构**: 华为联络中心采用控制层与资源层分离的架构,...