创建用于字母数字概念的语音识别语法的制作方法

文档序号:2822439阅读:152来源:国知局
专利名称:创建用于字母数字概念的语音识别语法的制作方法
技术领域
本发明涉及语音识别,尤其涉及自动创建用于字母数字概念的语音识别语法。
背景技术
语音识别系统越来越多地由公司和组织使用来降低成本、改进顾客服务和/或完全或部分地自动化任务。这些系统用于各种各样的计算设备,其范围从独立的台式机、网络设备到移动手持式计算设备。语音识别为应用程序开发者提供了自然的用户界面。例如,对于诸如手持式移动设备等计算设备,如果没有显著地增大计算设备的尺寸,完整的字母数字键盘是不切实际的。由此,语音识别提供了一种用于小型设备的方便的输入方法,并且也允许用户诸如通过简单电话等远程地访问计算机。
随着语音识别被越来越广泛地接受(如果不是必需),需要快速且有效地创建灵活、准确、启用语音地应用程序。针对口语理解模型的研究实现了灵活性,因为这类系统允许系统和用户之间混合发起的对话。尽管这类系统和研究在对包含多个短语语义单元(时隙)的命令建模方面实现了准确性,例如,在航空旅行信息系统领域中如“列出周二从西雅图到波士顿的价格不高于$400的航班”等“显示航班”命令,然而它们很少学习对于诸如日期、时间、信用卡号、航班号等低级概念的短语模型的采集。相反,它们采用语法库和数据库条目(例如,来自应用程序数据库的城市名)用于解决方案。
尽管如此,迄今为止所采用的大多数口语系统是系统发起的、定向的对话系统。在这类系统中,大多数语法开发努力致力于低级概念。尽管语法库和数据库条目是可行的解决方案,然而它们无法完全解决问题。例如,语法库开发者无法预见到所有可能的领域专用概念并为它们预先构建语法。另外,拼字正确形式的数据库条目不足以用作语音识别语法。例如,正确的语音识别语法需要对字母数字串的各种备选口头表达建模。假定应用程序需要识别零件号,且“ABB123”是零件号之一。启用语音的系统应当即时在该零件号以诸如“A B B一二三”或“A两个B一二十三”等不同方法说出的情况下也能够识别该零件号。
因此,都认识到,对诸如零件号和驾照号等字母数字概念的语法开发是最具挑战性的任务之一。一种尝试是采用基于单个状态有限状态模型的简单语法。这一模型对每一字符(A-Z)和每一数字(0-9)都具有一个循环。然而,该模型一般由于包括语法不捕捉目标子语言的特殊性等原因不能运作良好。因此,模型的困惑程度远高于它应有的困惑程度。例如,如果知道零件号总是以字母“B”开始,则语法应当明确地对该约束建模,使得将“E”与“D”、“E”、“G”和“P”混淆的识别错误永远不会出现。
另外,简单语法不对许多类型的串的语言表达的多样性建模。在以上的示例中,“ABB123”的“ABB”部分和“123”部分都可以用不同但十分常见的方法来提供,这些方法中的许多种都未由简单语法建模。
此外,如“-”、“*”等特殊字符经常出现在诸如零件号等字母数字序列中。这将要求通用字母数字语法在这种情况下是定制的。
鉴于以上问题,通常迫使开发者对特定的字母数字概念编写其自己的语法。该过程是单调乏味且易于出错的。与语法库不同,由较无经验的开发者创作的语法通常不是最优的,由此在由解码器使用时具有较差的性能。
因此,解决以上需求中的一个、几个或所有的、用于生成字母数字语法的系统和方法将是有益的。

发明内容
一种生成适用于由语音识别器使用的语法的方法和系统包括接收字母数字表达的表示。例如,该表示可采取正则表达式或掩码的形式。语法基于该表示生成。以此方式,开发者可提供例如用于该字母数字表达的正则表达式,且系统自动构造该语法。
在其它实施例中,该语法可适用于备选字符口头表达(例如,“零”或“欧”,它们都可被说成“0”),和/或用于识别备选的字符序列口头表达(例如,“AA”或“两个A”,它们都可被说成“AA”)的规则。在这些情况下,该语法也可被修改成提供归一化的信息,使得可由语音识别器使用该语法输出归一化的输出。在又一实施例中,该语法用前缀优化来构造。
尽管语法的质量最终是通过提供该表示的方法来确定的,但是此处描述的方法和系统将开发者从语法开发的困难任务中释放出来,尤其是用于可能对于特定的应用程序是独特的字母数字表达的语法。以此方式,可以更快地,且无需语法开发者的独特专家经验,来开发用于字母数字表达的语法。


图1是其中可实施本发明的通用计算环境的框图。
图2是示意性地示出了生成基于字母数字概念的表示或表达的语法的系统的框图。
图3是用于创建语法的流程图。
图4A是未被前缀优化的语法的一部分的图示。
图4B是前缀优化的语法的一部分的图示。
具体实施例方式
本发明涉及生成用于字母数字概念或表达的语法的系统、模块和方法。然而,在更详细讨论本发明之前,首先讨论其中可使用本发明的一个说明性环境。
示例性操作环境
图1示出了适合在其中实现本发明的计算系统环境100的一个示例。计算系统环境100仅为合适的计算环境的一个示例,并非暗示对本发明的使用范围或功能的局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。
本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用本发明的众所周知的计算系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
本发明可以在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。本领域的技术人员可以将此处的描述和/或附图实现为可在以下讨论的任何形式的计算机可读介质上具体化的计算机可执行指令。
本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参考图1,用于实现本发明的示例系统包括计算机110形式的通用计算装置。计算机110的组件包括但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM131中。RAM132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对可移动、非易失性光盘156,如CD ROM或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
上文讨论并在图1示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。
用户可以通过输入设备,如键盘162、话筒163和定位设备161(诸如鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121。除监视器之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,它们通过输出外围接口190连接。
计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括许多或所有相对于计算机110所描述的元件。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例,而非局限,图1示出远程应用程序185驻留在远程计算机180上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
应当注意,本发明可以在诸如相对于图1所描述的计算机系统上实现。然而,本发明可以在服务器、专用于消息处理的计算机、或分布式系统上实现,在分布式系统中,本发明的不同部分在其不同的部分上实现。
语法生成系统
如上所述,本发明的一方面包括使具有极少语法创作经验的开发者能够构造用于诸如零件号、驾照等字母数字概念或表达的高性能语音语法的系统和方法。表达的这些类型存在于许多类型的应用程序中,然而,表达一般对于应用程序是唯一的,因此较不可能在跨许多类型的应用程序使用的语法库中预先构建。
图2示出了可用于以上所讨论的任一形式的操作环境实例的语法生成模块200。一般而言,语法生成模块200接收指示要识别的字母数字概念或表达的类型的表示。该表示一般指定了要识别的字母数字表达可包括的字符以及它们互相的位置。换言之,该表示指定了对要识别的字母数字表达的约束。该表示可采取许多形式来表示该信息,诸如但不限于,例如由可从www.w3.org/TR/xmlschema-2/获得的“XML Schema Part2Datatypes W3C Recommendation 02 May 2001(XML模式部分2数据类型W3C推荐,2001年5月2日)”中的W3C定义的“正则表达式”,它将在下文用作示例。以另一种形式,该表示可采用“掩模”的形式,它允许用户为要识别的字母数字表达定义模式。
语法生成模块200接收表示,并处理该表示以创建适用于识别所期望的字母数字表达的语法202。语法生成模块200可适用于处理一种或多种形式的表示。然而,鉴于要识别的字母数字表达可采用的一般良好定义的形式,使用可任选的转换器204是可能的,它接受一种或多种形式的表示,并将所有形式的表示转换成被设计成由语法生成模块200接收的单个形式。
作为示例,语法生成模块200将被描述为处理如由W3C定义的正则表达式。该标准的简要回顾将是有帮助的。W3C标准具有用于正则表达式的以下形式定义
regExp=branch(′|′branch)*
branch=pieces*
piece =atom quantifier?
atom =char|charClass|(′(′regExp′)′)
依照该定义,一个正则表达式由一个或多个备选者(分支(branch))构成,其中,备选者由“|”来定界。每一分支由片断(piece)序列构成。每一片断是可任选地被定量化的原子(atom)。量词(quantifier)指定了原子的重复。它可以是数字(例如,{3})、数字范围(例如,{0-3})或保留字符(例如,“+”表示一次以上,或“*”表示零或多次)。原子可以是字符(char)、字符类(charClass)(例如,[A-Z]表示所有大写字母,或\d表示十个数字
)、或递归地为带括号的正则表达式(regExp)。
应当注意,具有递归正则表达式原子的正则表达式可以被转换成没有递归原子的正则表达式。例如,“(\d{3}|[A-Z]){2}C”定义了与“\d{3}[A-Z]C|\d{6}C|[A-Z]\d{3}C|[A-Z]{2}C”所定义的相同的语法。以下讨论的算法处理没有递归正则表达式原子的正则表达式;由此,如果在表示中存在递归正则表达式,则适当的转换是必需的。
同样,为本描述的目的,但是不是为了在以下转换算法中使用,“分支”和“片断”也将应用于处理掩码形式的表示。例如,假定用于零件号的掩码具有“&##-###-&&&”的形式,其中“&”表示集合{A-Z}中的任何字符,而“#”表示数字{0-9}中的任何字符,则“片断”包括“&##”、“###”和“&&&”,而“原子”包括任何“&”、“#”或“-”。
转换算法
以下伪代码是用于处理表示(此处为正则表达式“regexp”)来获得适用于识别由regexp定义的所期望的字母数字表达的语法“gram”的一个示例性实施例。包含在该伪代码中的模块及其在图2中对应的表示不应当被认为是限制的。部分地提供了伪代码和图2的框图以解释处理概念,其形式不应当被认为是限制的。如本领域的技术人员所理解的,处理可以使用不同的步骤或顺序的改变来执行,而不影响最终结果。另外,由图2的模块执行的处理可以被分离成其它模块和/或与所示出的模块或另外的其它模块相组合,而不脱离本发明的各方面。
表1
行号
  1.create_regexp_grammar(regexp,gram){  2. foreach branch in(regexp .branches()){  3.string symbol=  4. create_branch_grammar(branch,gram);  5.rule_token token(symbol,1,1);  6.array RHS=(token);  7.gram.add_rule(gram.root(),RHS);  8. }  9.}  10. create_pranch_grammar(branch,gram){  11. array RHS=();  12. foreach piece in(branch.pieces()){  13. string symbol=  14. create_piece_grammar(piece,gram);  15. rule_token token(symbol,1,1);  16. RHS.add(token);  17. }  18. string LHS=new_symbol();  19. gram.add_rule(LHS,RHS);  20. return LHS;  21. }  22. create_piece_grammr(piece,gram){  23. atom unit=piece.atom();  24. pair(min,max)=piece.quantity();  25. set charset=unit.CharSet();  26. if(charset=={0,...,9}){  27. string LHS=new_symbol();  28. for(int i=min;i<=max;i++){  29. string ref=ruleref(lib,digit_i);  30. array RHS=(rule_token(ref,1,1));  31. gram.add_rule(LHS,RHS);  32. }  33. return LHS;<!-- SIPO <DP n="8"> --><dp n="d8"/>  34.}  35.else{  36. string charset_nt=  37.create_charset_grammar(charset,gram);  38. return  39.create_repeats(charset_nt,min,max);  40.}  41. }  42. create_repeats(symbol,min,max){  43.if(hash[symbol,min,max]!=null)  44. return hash(symbol,min,max);  45.string LHS=new_symbol();  46.hash[symbol,min,max]=LHS;  47.array RHS=();  48.if(min==0){  49. rule_token token(symbol,0,0);  50. RHS.add(token);  51. gram.add_rule(LHS,RHS);  52.}  53.if(max<=0)return LHS  54.rule_token token(symbol,1,1);  55.RHS=(token);  56.if(min<=1)  57. gram.add_rule(LHS,RHS);  58.if(max>=2){  59. string rest1=  60.create_repeats(symbol,min-1,max-1);  61. rule_token rest1_token(rest1,1,1);  62. RHS.add(rest1_token);  63. gram.add_rule(LHS,RHS);  64. RHS=(rule_token(″double″,1,1));  65. RHS.add(token);  66. string rest2=  67.create_repeats(symbol,min-2,max-2);  68. rule_token rest2_token(rest2,1,1);<!-- SIPO <DP n="9"> --><dp n="d9"/>  69. RHS.add(rest2_token);  70. gram.add_rule(LHS,RHS);  71.}  72.if(max>=3){  73. RHS=(rule_token(″triple″,1,1));  74. RHS.add(token);  75. string rest3=  76.create_repeats(symbol,min-3,max-3);  77. rule_token rest3_token(rest3,1,1);  78. RHS.add(rest2_token);  79. gram.add_rule(LHS,RHS);  80.}  81.return LHS;  82. }  83. create_charset_grammar(charset,gram){  84.string LHS=new_symbol();  85.array RHS=();  86.foreach ch in(charset){  87. switch(ch){  88. case′0′RHS=(rule_token(″zero″,1,1));  89. gram.add_rule(LHS,RHS);  90. RHS=(rule_token(″oh″,1,1));  91. gram.add_rule(LHS,RHS);  92. break;  93. case′1′......  94.}  95.return LHS;  96. }
应当注意,以上提供的伪代码假定正则表达式语法分析模块206具有访问其组件的方法。例如,方法branches()返回正则表达式中分支的列表,而方法pieces()返回分支(正则表达式中的分支)中的片断的列表。它将规则的右侧表示为rule_token(规则标记)的数组。每一rule_token是元组(符号,最小,最大),它指定了在重写规则中重复从最小到最大次数的符号。
还参考示出用于处理表示的方法300的图3,处于在理步骤302开始,由语法生成模块200接收该表示。该表示然后在步骤304由语法分析模块206进行语法分析,以标识该表示的子组(即,分支)。通常分支由诸如“|”等分隔字符来确定。
标识了分支之后,在该示例性实施例中,处理每一分支,以生成语法202的规则,其中,特别是每一分支的每一片断被处理。该步骤在图3中306处表示,而分支处理由图2中的分支规则生成器模块208来提供,片断处理由图2中的片断规则生成器模块210来提供。以更宽泛的术语而言,分支规则生成器模块208为所标识的表示的分支生成备选规则,而片断规则生成器210为首先提到的分支的每一个的较小部分(片断)生成规则。通常,正则表达式语法分析模块标识由定界符“-”、“/”、空格等分隔的片断。
在图2中,来自分支规则生成器模块208和片断规则生成器模块210的处理结果被提供给将规则添加到语法202的规则添加模块212。
参考以上转换算法,第一(主)函数create_regexp_grammar(行1-9)调用第二函数create_branch_grammar(行10-21),以对输入正则表达式的每一分支创建规则,并将重写根符号的规则添加到分支的“符号”(由该算法生成)。第二函数create_branch_grammar调用第三函数create_piece_grammar(行22-41),以对分支中的每一片断创建规则,并将重写分支符号的规则添加到片断序列中(即,将片断串接在一起)。应当注意,如果一个表示包括“-”或用作片断定界符的其它字符,则它也被认为是片断,并且特别地,当片断被串接在一起时,通常被认为是可任选片断。由此,对于包括“AXD-134”的零件号,用户可以说“A X D短划线一三四”或“A X D一三四”(即,没有说出短划线),但是该语法将认为两种话语是等效的。应当注意,诸如短划线、斜杠等字符可任选地包含在语法规则中。
第三函数create_piece_grammar为片断创建规则。规则由函数gram.add.rule(LHS,RHS)添加,其中LHS和RHS表示规则的左侧和右侧。
片断处理可任选地利用可能存在于许多形式的字母数字表达中的某些相似性。例如,一个或多个数字的序列的口语变体的识别是都理解的。由此,对于包括“AXD-134”的零件号,用户可说“A X D一三四”、“A X D一三十四”、“A X D一百三十四”等等。被表示为正则表达式中的片断“\d3”的号码序列或数字集合“134”然后可由片断规则生成模块210标识,并且其中,片断规则生成模块210访问所储存的语法规则库214,以获得用于识别该类型的数字集合的语法规则。所储存的库214也可包括用于识别例如由诸如“\d{1-3}”等范围定义的可任选长度的数字集合。所储存的库214不限于用于数字集合的语法规则;然而,它们可以是最常见的。在该转换算法中,行26-34通过从库中获得规则标识和处理了数字集合。
如果片断处理未标识具有库中所储存的语法规则的片断,或者所处理的片断不是具有库214中所储存的语法规则的类型,则然后标识片断的特征以对该片断提供一组丰富的语法规则。在该转换算法中,该处理在行36-41处控制。
作为示例,使用片断正则表达式“[A-C]{1-3}”,片断规则生成模块210可标识片断中的各个字符,并生成对应的规则。然而,另外,片断规则生成模块可对每一字符标识适当的备选口头表达,并在每一备选字符口头表达的语法202内包括对应的规则。在该转换算法中,行36-37处调用且在行83-96处指定的函数create_charset_grammar创建了覆盖字符集的所有元素的语法规则,其中每一字符的所有字符表达在“case”语句中定义,其中作为示例提供了“case′0′”。
如行88-92所指示的,对“0”作为“零”以及“欧”的发音的语法添加规则。未示出的另一示例可提供用于字符“A”作为“a”或“阿尔法”的发音的语法规则。在图2中,与备选字符口头表达相关联的数据在216指示,并可储存在库中或在片断规则生成模块210中编码。
除如上所述地标识和生成用于备选字符口头表达的规则以外,片断规则生成模块210也可标识备选字符序列口头表达。使用以上示例“[A-C]{1-3}”,除诸如“A B”、“A”、“A B C”等表达之外,用户可提供“两个A”表示“AA”,或“三个B”表示“BBB”。在该转换算法中,行42-82处定义且最初在行39处调用(并且如果有必要的话要递归调用,取决于片断表达式)的函数create_repeats创建了用于0次出现(行48-52);一次出现的(行54-57);一次以上出现(行58-80)的前缀语法规则-注意在行64-70中它是如何对诸如“两个零”等表达建模的;以及两次以上出现(行72-80)。当然,也可包括备选字符序列口头表达的其它变体,如“四个”或对字符序列的任何其它口头表达。在图2中,与备选字符序列口头表达相关联的数据在218处指示,并可被储存在库中或在片断规则生成模块210中编码。
在某些字母数字表达中,存在相同的某些片断。如果这些片断对应于具有如在所储存的语法库214中找到的所储存的语法规则集,如数字集的片断,则它们可被添加到语法202。然而,即使该片断不对应于库214中的语法集,这些片断在表示中也可以是相同的。例如,在表示“[A-Z]{1-2}-\d{2}-[A-Z]{1-2}”中,片断“[A-Z]{1-2}”出现两次。因此,在另一实施例中,片断规则生成器模块210适用于标识相同的片断,并使用从对该片断的先前处理中生成的语法规则,使得不必对该片断再一次重复规则的生成。在该转换算法中,使用散列表(行43-46)作为当处理表示时跟踪每一片断部分的机制,尽管也可使用其它机制。如果在对表示的进一步处理期间,遇到相同的片断,则可复制先前生成的规则。在图2中,这一方面由储存用于已处理片断部分的规则的库200来表示。
如上所述,语法202的识别规则的生成包括用于备选口头表达的语法规则的生成,例如“零”和“欧”表示“0”,“两个A”表示“AA”以及“二十三”表示“23”。在另一实施例中,也提供归一化,使得来自语音识别器的输出是已知的,因此接收来自语音识别器的输出的应用程序不必辨别“AA”和“两个A”是等效的。
在第一实施例中,可在语法202的规则的编码或编写过程中提供归一化。具体地,由于片断规则生成模块210较佳地是已编码的,以在处理片断来生成规则时标识备选字符口头表达和备选字符序列口头表达,因此它可在适当时提供语法202中的归一化信息。作为示例,如果语法202是使用XML语义解释标记以W3C语音识别语法规范(SRGS)格式来编写的,则该语法中的标签提供了归一化。作为示例,以W3C SRGS格式编写的用于“AA”的识别的规则可采用以下形式
<rule id=″S2″>
<one-of>
<item>A A
<tag>$=AA</tag>
</item>
<item>double A
<tag>$=AA</tag>
</item>
</one-of>
</rule>
其中,“<tag>$=AA</tag>”指示归一化的输出。尽管未在该转换算法中具体示出,该算法可在生成语义解释标签时将其附加到规则标记,使得基于语法获得的识别输出被适当地归一化。尽管上文对字符序列示出了归一化,然而在可以用类似的方式提供对单个字符以及对数字序列的归一化。
在图2的说明性实施例中,开发了用于数字集或序列的语法规则并将其储存在库214内。因此,对于数字集或其它片断的归一化也可与语法规则一起储存。
在一个替换实施例中,归一化规则可与语法202分开储存。例如,归一化可通过在与语法202相关联的归一化映射数据库226中储存归一化映射(例如,“AA”“AA”;“两个A”“AA”)来提供。适当的归一化映射由片断规则生成器模块210在片断处理期间提供,或者适当的映射可以从诸如用于数字集等用于对应的所储存语法规则的库214中获得。在这一形式的归一化中,语法指示了用户的实际话语,如“两个A”;然而,在语音识别器返回这一结果之前,它检查对该结果是否存在归一化形式,如果存在,则用归一化的结果来代替该结果。尽管语音识别器的实现或操作可在这些技术的每一个之间变化,然而开发者只需提供字母数字表达的表示,然后系统考虑可以被适当地归一化成由开发者提供的表示指定的格式的备选口头表达。
在一个实施例中,语法202是用前缀优化来创建的。这提供了通过将识别期间的备选假设最小化来与语音识别器一起有效地工作的语法。如果没有前缀优化,语法可包括单独的规则,它们也图示地在图4A中示出
S→aB
S→aC
然而,如上所述,如果语音识别器识别了“a”,它然后必需考虑两个假设“aB”和“aC”。
相反,在前缀优化的语法中,规则可以是以下的形式且在图4B中示出
S→aD
D→B
D→C
由此,在识别了“a”之后,语音识别器只需考虑一个假设“aD”。
在以上转换算法中,形成语法的规则作为前缀树(例如,以由图4B的图解表示来表示的形式)来储存,其顶层节点包括左侧“LHS”,而其它节点作为形成右侧“RHS”的数组来储存。以此方式,当诸如图4A的那些规则被添加到语法中,已经用图4B的前缀树实现了前缀优化。在该转换算法中,函数gram.add.rule()将每一规则添加或追加到语法中,这在图2中由规则添加模块212表示。如果如在转换算法中,规则最初作为前缀树来储存,则到诸如使用XML的W3C SRGS格式等任何形式的适当转换也可由规则添加模块212来实现。
总之,本发明的各方面允许从诸如正则表达式或掩码等适当的表示中对字母数字概念自动构造高质量的语音识别语法。自动语法创建将开发者从创建有效工作且准确地用于应用专用字母数字概念的语法的任务中释放出来。其它特征允许所创建的语法可通过使用前缀结构来优化,和/或例如通过分配适当的语义解释标签来提供归一化。以此方式,此处所描述的方法和系统对于具有极少语音识别语法创作经验的开发者很大程度上加速了语法开发。
尽管参考特定实施例描述了本发明,然而本领域的技术人员将认识到,可以在不脱离本发明的精神和范围的情况下在形式和细节上做出改变。
权利要求
1.一种生成适于供语音识别器使用的语法的计算机实现的方法,所述方法包括
接收字母数字表达的表示;以及
基于所述表示生成语法。
2.如权利要求1所述的计算机实现的方法,其特征在于,生成所述语法包括将所述表示语法分析成部分。
3.如权利要求2所述的计算机实现的方法,其特征在于,生成所述语法包括对所述部分的每一个生成语法规则。
4.如权利要求3所述的计算机实现的方法,其特征在于,对所述表示语法分析包括将所述表示语法分析成分支。
5.如权利要求4所述的计算机实现的方法,其特征在于,生成所述语法包括对所述分支的每一个生成语法规则。
6.如权利要求3所述的计算机实现的方法,其特征在于,生成所述语法包括标识所述表示的首先提到的部分的每一个的较小部分,并且生成所述语法包括对所述较小部分的每一个生成规则。
7.如权利要求6所述的计算机实现的方法,其特征在于,对所述较小部分的每一个生成语法规则包括标识具有储存在库中的规则的较小部分,并基于所述储存在库中的规则生成所述语法的规则。
8.如权利要求6所述的计算机实现的方法,其特征在于,对所述较小部分的每一个生成语法规则包括对备选字符口头表达生成规则。
9.如权利要求8所述的计算机实现的方法,其特征在于,生成所述语法包括使用一机制来对备选字符口头表达的识别提供来自语音识别器的归一化输出。
10.如权利要求9所述的计算机实现的方法,其特征在于,生成所述语法包括提供所述语法中的归一化信息,以对备选字符口头表达提供来自语音识别器的归一化输出。
11.如权利要求10所述的计算机实现的方法,其特征在于,生成所述语法包括生成与所述语法相关联的数据库,所述数据库具有归一化信息。
12.如权利要求6所述的计算机实现的方法,其特征在于,对所述较小部分的每一个生成语法规则包括对备选字符序列口头表达生成规则。
13.如权利要求9所述的计算机实现的方法,其特征在于,生成所述语法包括使用一机制来对备选字符口头表达的识别提供来自语音识别器的归一化输出。
14.如权利要求13所述的计算机实现的方法,其特征在于,生成所述语法包括提供所述语法中的归一化信息,以对备选字符口头表达的识别提供来自语音识别器的归一化输出。
15.如权利要求14所述的计算机实现的方法,其特征在于,生成所述语法包括生成与所述语法相关联的数据库,所述数据库具有归一化信息。
16.如权利要求6所述的计算机实现的方法,其特征在于,对所述较小部分的每一个生成语法规则包括标识与所述表示中该语法规则先前所基于的第二较小部分相同的第一较小部分,并通过使用基于所述第二较小部分的规则生成基于所述第一较小部分的规则。
17.如权利要求1所述的计算机实现的方法,其特征在于,生成所述语法包括生成前缀优化的语法规则。
18.如权利要求1所述的计算机实现的方法,其特征在于,所述表示具有正则表达式或掩码的形式。
19.一种具有指令的计算机可读介质,所述指令在计算机上操作以生成适于供语音识别器使用的语法,所述指令包括
接收字母数字表达的表示;以及
基于所述表示生成语法。
20.如权利要求19所述的计算机可读介质,其特征在于,所述表示包括正则表达式或掩码。
21.如权利要求20所述的计算机可读介质,其特征在于,生成语法包括标识所述表示的分支和片断。
22.如权利要求21所述的计算机可读介质,其特征在于,生成所述语法包括对每一所述分支和每一所述片断生成规则。
23.如权利要求22所述的计算机可读介质,其特征在于,对所述每一片断生成规则包括以下的至少一个对备选字符口头表达生成规则;对备选字符序列口头表达生成规则;以及标识具有储存在库中的规则的片断并基于所述储存在库中的规则生成语法的规则。
24.如权利要求23所述的计算机可读介质,其特征在于,生成所述语法包括使用一机制来对备选字符口头表达和备选字符序列口头表达的至少一个的识别提供来自语音识别器的归一化输出。
25.如权利要求24所述的计算机可读介质,其特征在于,生成所述语法包括提供所述语法中的归一化信息,以对备选字符口头表达和备选字符序列口头表达的至少一个的识别提供来自语音识别器的归一化输出。
26.如权利要求25所述的计算机可读介质,其特征在于,生成所述语法包括生成与所述语法相关联的数据库,所述数据库具有用于备选字符口头表达和备选字符序列口头表达的至少一个的归一化信息。
27.一种生成适于供语音识别器使用的语法的计算机系统,所述计算机系统包括
一语法分析模块,它适用于接收字母数字表达的表示并标识所述表示的分支;
一分支规则生成器模块,它适用于基于所述分支生成所述语法的规则;以及
一片断规则生成器模块,它适用于标识所述分支的每一个的片断,并基于所述片断的每一个生成所述语法的规则。
28.如权利要求27所述的系统,其特征在于,还包括用于储存基于片断的语法规则的库,并且其中,所述片断规则生成器适用于标识对应于具有储存在所述库中的规则的片断的所述表示的片断,并且其中,所述片断规则生成器适用于基于所述库中的规则生成所述语法的规则。
29.如权利要求28所述的系统,其特征在于,所述片断规则生成器适用于将所处理的所述表示的第一片断的规则储存在所述库中,并且其中,所述片断规则生成器适用于标识所述表示中与所述表示的第一片断相同的第二片断,并基于所述库中用于所述表示的第一片断的规则对所述表示的第二片断生成规则。
30.如权利要求26所述的系统,其特征在于,所述片断规则生成器适用于对备选字符口头表达和备选字符序列口头表达的至少一个生成规则。
31.如权利要求30所述的系统,其特征在于,所述片断规则生成器适用于提供所述语法中用于备选字符口头表达和备选字符序列口头表达的至少一个的归一化信息。
全文摘要
一种生成适于供语音识别器使用的语法的方法和系统包括接收字母数字表达的表示。例如,该表示可采用正则表达式或掩码的形式。基于该表示生成语法。
文档编号G10L15/06GK1750119SQ200510091799
公开日2006年3月22日 申请日期2005年8月15日 优先权日2004年9月15日
发明者A·阿瑟洛, L·A·科林斯, M·L·塞西斯, 王野翊, 朱允诚 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1