首页> 中国专利> 语音应答系统、语音应答方法、话音服务器、话音文件处理方法、程序和记录介质

语音应答系统、语音应答方法、话音服务器、话音文件处理方法、程序和记录介质

摘要

一种改进的自动语音应答系统,其中已经减少了通过使用语音文件再现包括变量的消息期间的应用负载。该语音应答系统包括应用服务器和语音服务器。该应用服务器具有第一和第二语音文件以及语音信息。语音服务器包括:语音文件处理装置,从应用服务器接收语音信息和第一语音文件,并且基于该语音信息产生语法;语音识别装置,基于该语法执行第一语音文件的语音识别,以产生多个划分的语音文件;以及语音处理装置,用第二语音文件替换至少一个所划分的语音文件。

著录项

  • 公开/公告号CN1830022A

    专利类型发明专利

  • 公开/公告日2006-09-06

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200480021899.X

  • 发明设计人 田原义则;村山智子;马场正浩;

    申请日2004-05-28

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人吴丽丽

  • 地址 美国纽约

  • 入库时间 2023-12-17 17:38:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-07-25

    未缴年费专利权终止 IPC(主分类):G10L13/04 授权公告日:20100505 终止日期:20110528 申请日:20040528

    专利权的终止

  • 2010-05-05

    授权

    授权

  • 2006-10-25

    实质审查的生效

    实质审查的生效

  • 2006-09-06

    公开

    公开

说明书

技术领域

本发明涉及自动语音应答系统,并且尤其涉及通过使用语音识别经由自动合成的语音做出应答的系统。

背景技术

当语音应用自动输出系统消息时,它使用事先记录的话音文件。例如,在其中定义了标准语音接口的VoiceXML的情况下,通过借助于<audio>标记(tag)指定话音文件名称来执行这样的消息输出。例如,在以下的专利文献1中公开了使用VoieeXML的基于VoIP的话音系统。

专利文献1:日本公开专利申请2002-57724

发明内容

本发明要解决的问题

然而,存在这样一个问题,即如果在消息中包含变量,则应用上的负载是相当大的。更具体而言,在其中VoieeXML应用在传统的话音服务器上的语音文件中插入变量的情况下,该应用的操作和实现是例如开发这样的服务小程序(servlet),其具有这样的功能,即准备其中在变量的位置处划分语句的语音文件,并且依据该变量确定语音文件的名称以动态地生成VXML文档以便再现该语音文件,由两个<audio>标记指定在VXML文档中变量前后的语音文件,而且通过适当的定时调用该服务小程序作为子语音信息。

在以这种方式通过语音文件再现消息的情况下,存在这样一个问题,即鉴于以下几点,应用上的负载是应当考虑的。首先,存在与该应用的实现相关的问题。也就是说,必须让应用最初开发出用于在执行的时候标识和再现用于变量分段的语音文件的逻辑。换句话说,存在需要开发大量复杂应用的问题。还存在需要依据语句的改变而改变应用的问题。

此外,就准备记录文件的操作所需要的时间以及该记录文件的质量和管理而言,存在一些问题。依据传统方法,必须使语音文件通过将其分为变量之前的分段、变量分段和变量之后分段来进行记录。例如,在包括物品名称作为变量分段的语句“你的定单是米,不是吗”的情况下,需要准备语音文件“你的定单是”、“米”和“不是吗”。在这种情况下,必须使记录人员不自然地说出语句被划分的部分,这种发声易于是不自然的,而且就自然和流畅而言该发声的再现结果是有缺陷的。

还存在一种连贯地记录整个语句并且由语音文件编辑器划分该语句的方法。然而,在这种情况下,必须使编辑该语音文件的人员准确地掌握应用的设计。此外,因为需要包括划分语音文件在内的复杂操作,所以编辑中的错误可能性是高的。还有由于需要包括语音文件编辑操作在内的许多操作而增加了工作量的问题。此外,因为准备了通过事先在变量位置处划分语句而形成的语音文件,所以增加了语音文件的数目。此外,必须通过使用语音文件编辑器剪去和编辑在每个语音文件的开始和结束处的无声部分,以便流畅地连接这些语音文件。这样的编辑操作与语音文件的数目成比例地增加。随着语音文件数目的增加,工作量变得非常大,而且复杂操作也增加了。还存在着随着语音文件的数目增加而使文件命名和文件管理复杂化的可能性。

解决问题的手段

为了解决上述问题,依据作为系统理解的本发明,提供了一种包括应用服务器和语音服务器的语音应答系统,该应用服务器具有第一语音文件、第二语音文件和语音信息,该语音服务器具有:语音文件处理装置,用于从应用服务器接收语音信息和第一语音文件,并且基于该语音信息生成语法;语音识别装置,用于基于该语法执行第一语音文件的语音识别,并将第一语音文件划分为多个语音文件;以及语音处理装置,用于用第二语音文件代替至少一个所划分的语音文件。

第一语音文件可以是包括指示变量条目的变量分段、并且作为一个文件记录的整个语句。此外,第二语音文件可以是要进入该变量分段中的语音,该语音作为文件进行记录。此外,语音信息可以包括第一语音文件的文件名称,而且语音文件装置可以基于整个语句语音文件名称提取第一语音文件。此外,语音信息可以包括替换文本,而且语音文件处理装置可以基于该替换文本生成语法。此外,语音信息可以包括指示是否需要执行有关变量的处理的变量信息。该系统还可以具有语音输出装置,用于输出语音。

依据作为方法理解的本发明,提供了一种在包括应用服务器和语音服务器的语音应答系统中的语音应答方法,该应用服务器具有第一语音文件、第二语音文件和语音信息,该语音应答方法包括以下步骤作为语音服务器中的步骤,这些步骤为:从应用服务器接收语音信息和第一语音文件、并且基于该语音信息生成语法的步骤;基于语法执行第一语音文件的语音识别并且将该第一语音文件划分为多个语音文件的步骤;以及用第二语音文件代替至少一个所划分的语音文件的步骤。

在这种方法中,第一语音文件可以是包括指示变量条目的变量分段、并且作为一个文件记录的整个语句。此外,第二语音文件可以是要进入该变量分段中的语音,该语音作为文件进行记录。此外,语音信息可以包括第一语音文件的文件名称,而且可以基于第一语音文件名称提取第一语音文件。此外,语音信息可以包括替换文本,而且可以基于该替换文本生成语法。此外,语音信息可以包括指示是否需要执行有关变量的处理的变量信息。

依据作为程序理解的本发明,提供了一种用于在包括应用服务器和语音服务器的语音应答系统中执行语音应答的程序,该应用服务器具有第一语音文件、第二语音文件和语音信息,该程序使语音服务器操作用于:从应用服务器接受语音信息和第一语音文件,基于该语音信息生成语法,基于该语法执行第一语音文件的语音识别并且将第一语音文件划分为多个语音文件,并且用第二语音文件代替至少一个所划分的语音文件。

在这个程序中,第一语音文件可以是包括指示变量条目的变量分段、并且作为一个文件记录的整个语句。此外,第二语音文件可以是要进入该变量分段中的语音,该语音作为文件进行记录。此外,语音信息可以包括第一语音文件的文件名称,而且语音文件装置可以基于该文件名称提取第一语音文件。此外,语音信息可以包括替换文本,而且语音文件处理装置可以基于该替换文本生成语法。此外,语音信息可以包括指示是否需要执行有关变量的处理的变量信息。本发明还提供了一种在其上存储了这样的程序的计算机可读记录介质。

依据作为语音服务器理解的本发明,提供了一种用于自动执行语音处理的语音服务器,该语音服务器包括:用于根据替换文本生成语法的装置,用于基于该语法执行第一语音文件的语音识别并且将第一语音文件划分为多个语音文件的装置,以及用第二语音文件代替至少一个所划分的语音文件的装置。

在这个语音服务器中,第一语音文件可以是包括指示变量条目的变量分段、并且作为一个文件记录的整个语句。此外,第二语音文件可以是要进入该变量分段中的语音,该语音作为文件进行记录。此外,第二语音文件可以是要进入该变量分段中的语音,该语音通过语音合成生成。此外,用于生成语法的装置可以通过将替换文本划分为变量分段和除了变量分段之外的分段,以及通过用预定单词代替该变量分段,来生成语法。此外,用于生成语法的装置可以通过进一步划分通过用单词进行代替而生成的文本文件,以及通过把划分结果改变为可语音识别的形式,来生成语法。

依据作为方法理解的本发明,提供了一种借助于语音服务器自动执行语音处理的语音文件处理方法,该方法包括以下步骤作为在语音服务器中的步骤,这些步骤为:根据替换文本生成语法的步骤,基于该语法执行第一语音文件的语音识别并且将第一语音文件划分为多个语音文件的步骤,以及用第二语音文件代替至少一个所划分的语音文件的步骤。

在这种方法中,第一语音文件可以是包括指示变量条目的变量分段、并且作为一个文件记录的整个语句。此外,第二语音文件可以是要进入该变量分段中的语音,该语音作为文件进行记录。此外,第二语音文件可以是要进入该变量分段中的语音,该语音通过语音合成生成。此外,在生成语法的步骤中,可以通过将替换文本划分为变量分段和除了变量分段之外的分段,以及通过用预定单词代替该变量分段,来生成语法。此外,在生成语法的步骤中,可以通过进一步划分通过用单词进行代替而生成的文本文件,以及通过把划分结果改变为可语音识别的形式,来生成语法。

依据在这方面作为程序理解的本发明,提供了一种借助于语音服务器自动执行语音文件处理的程序,该程序使语音服务器操作用于:根据替换文本生成语法,基于该语法执行第一语音文件的语音识别并且将第一语音文件划分为多个语音文件,以及用第二语音文件代替至少一个所划分的语音文件。

在这个程序中,第一语音文件可以是包括指示变量条目的变量分段、并且作为一个文件记录的整个语句。此外,第二语音文件可以是要进入该变量分段中的语音,该语音作为文件进行记录。此外,第二语音文件可以是要进入该变量分段中的语音,该语音通过语音合成生成。此外,在生成语法的操作中,可以通过将替换文本划分为变量分段和除了变量分段之外的分段,以及通过用预定单词代替该变量分段,来生成语法。此外,在生成语法的操作中,可以通过进一步划分通过用单词进行代替而生成的文本文件,以及通过把划分结果改变为可语音识别的形式,来生成语法。本发明还提供了一种在其上存储了这样的程序的计算机可读记录介质。

实现本发明的最佳方式

图1为示意地示出适于实现本发明的计算机的硬件配置的图示。

图1说明了作为实施例实现的计算机的硬件配置。计算机具有作为计算装置的CPU(中央处理单元)101,通过M/B(母板)芯片组102和CPU总线连接到CPU 101的主存储器103,通过M/B芯片组102和AGP(加速图形端口)也连接到CPU 101的视频卡104,通过PCI(外围部件互连)总线连接到M/B芯片组102的硬盘105,通过PCI总线也连接到M/B芯片组102的网络接口106,通过PCI总线也连接到M/B芯片组102的USB端口107,通过桥电路108和诸如ISA(工业标准结构)总线之类的低速总线从PCI总线连接到M/B芯片组102的软盘驱动器109,以及也通过桥电路108和低速总线连接到M/B芯片组102的键盘/鼠标110。

图1仅仅说明了作为实施例实现的典型计算机的硬件配置示例,而且如果这个实施例可应用的话,可以采用任何其它的配置。例如,可以采用这样的配置,以便仅仅包括一个视频存储器而不是视频卡104,而且图像数据由CPU 101进行处理。可以提供通过诸如ATA(AT附件)之类的接口连接的CD-ROM(光盘只读存储器)或者DVD-ROM(数字多用途盘只读存储器)驱动器。此外,可以提供用于语音再现的扬声器等。

图2是通过使用功能块示出本发明的框图。语音应答系统210由语音服务器220和应用服务器230构成。语音服务器220和应用服务器230可以实现为诸如图1所示的一台计算机,或者实现为两台或更多计算机的组合或者计算机和存储器的组合。

应用服务器220包含整个语句记录语音文件221、变量记录语音文件222、223和语音信息224。它们可以理解为在应用服务器上执行的应用程序或者应用程序的一部分。整个语句记录语音文件221是包括变量分段、即示出变量条目的分段并且作为一个文件记录的整个语句。在要被记录的整个语句记录语音文件221中,用特定单词替换变量分段。使用语音服务器中事先指定的单词作为这个单词。例如,使用单词“物品名称”作为变量分段,并且以语音的形式准备语句“你的定单是物品名称,不是吗?”,并且将其存储为整个语句记录语音文件。

此外,将要进入该变量分段中的语音存储为应用服务器220中的变量记录语音文件1、2、…(222、223)。例如,存储以语音形式准备的“米”和“味噌(miso)”文件。可以使用多个变量分段。在这种情况下,存储与变量分段相对应的变量记录语音文件。例如,将变量分段1和2设置为“物品名称”和“物品数目”,并且将以语音形式准备的语句“你的定单是物品名称,而且数量是物品数目,不是吗?”存储为整个语句记录语音文件。同样,存储与“物品名称”和“物品数目”相对应的变量记录语音文件(诸如,用于前者的“米”和“味噌”,以及用于后者的“一个”或者“两个”)。

此外,语音信息224存储在应用服务器220中。语音信息224包括整个语句记录语音文件的文件名称、变量信息和替换文本。变量信息至少包含指示存在/不存在变量分段的信息,即指示需要/不需要有关变量的处理的信息。替换文本是包括变量分段在内的整个文本语句。在上述示例的情况下,替换文本是“你的定单是<变量分段>,不是吗?”。如果存在多个整个语句记录语音文件,则可以为每个整个语句记录语音文件准备语音信息。

语音服务器230具有语音文件处理部分231、语音识别引擎232、和语音化(voicing)处理部分233。语音文件处理部分231从应用服务器220中提取语音信息224和由该语音信息所指定的整个语句记录语音文件221,根据包含在语音信息中的变量信息确定是否需要有关变量的处理,以及如果需要有关变量的处理的话,则根据替换文本动态地生成语法。

语音识别引擎232从语音文件处理部分234接收整个语句记录语音文件以及动态生成的语法。语音识别引擎232将基于它们识别的整个语句记录语音文件划分为与变量分段相对应的变量语音文件以及作为除了变量之外的分段的部分语音文件。未必仅仅获得一个变量语音文件以及仅仅一个部分语音文件。可以存在多个变量语音文件和多个部分语音文件。

语音化处理部分233从语音识别引擎232接收部分语音文件和变量语音文件。语音化处理部分233从应用服务器220获得被指定为与变量语音文件相对应的代替文件的变量记录语音文件。这个操作可以在语音文件处理部分中执行并且转交到语音化处理部分。以与要被再现的替换文本相对应的次序连接部分语音文件和变量记录语音文件,并且将它们转变为语音。

语音输出设备240连接到语音应答系统210,以基于再现的语音文件再现和输出语音。这个语音输出设备可以是,例如,用于诸如图1所示的计算机、即与语音应答系统相同的系统的扬声器单元,或者通过公共电话电路等连接的电话终端等。

图3示出了在语音文件处理部分231中生成语法的逻辑。首先,将整个替换文本语句分为变量分段和除了该变量分段之外的分段(一个或多个)(310)。接下来,用预定单词替换变量分段(320)。事先由语音服务器确定这个单词。在整个语句记录语音文件中,将通过使用预定单词而以语音形式准备的这个单词记录为变量分段。基于具有已替换的单词的文本动态地生成语法(330)。

将进一步参考图4详细描述语法生成示例。首先用预定单词代替替换文本中的变量分段(410)。基于该替换文本生成文本文件。在这时,需要执行单词划分,以便语音识别引擎可以识别该文本文件(420)。作为这个单词划分的处理包括,例如,参考在用于语音识别引擎的词典中登记的单词、通过最大长度匹配方法加标点并且划分为单词。为了将划分结果传送给语音识别引擎,将该划分结果改变为这样的形式以便可以由语音识别引擎识别(430)。把这样生成的语法传送给语音识别引擎,以便进行登记。

图5示出了语音识别引擎232中通过语音识别进行语音文件划分的逻辑。首先将语音识别引擎设置为处于用于从所识别的语音中形成文件的模式中(510)。接下来,将包含变量的整个语句记录语音文件和所生成的语法输入到语音识别引擎232中(520)。语音识别引擎232基于该语法识别整个语句记录语音文件(530)。语音识别引擎232将所识别的整个语句记录语音文件划分为与变量分段相对应的变量语音文件以及除了变量之外的部分语音文件(或者多个部分语音文件),因此生成语音文件(540)。

图6示出了基于语音识别引擎232中的语音识别进行语音文件划分的结果。在这个示例,假定变量分段是“物品名称”。作为语音识别和划分的结果(620),整个语句记录语音文件610划分成与变量分段相对应的变量语音文件622和除了变量之外的部分语音文件621和622。

图7是其中描述了在本发明的语音服务器230中的处理流程示例的流程图。首先,依据在从应用服务器220中获得的语音信息224中存在/不存在示出包含在变量信息中的变量标识的信息,确定是否需要有关变量的处理(701)。如果确定不需要有关变量的处理,则执行普通的音频处理(720)。普通的音频处理是例如这样的处理,如果在应用服务器中存在与语音信息中的文件名称相对应的、要再现的语音文件,则再现该文件。如果在其中不存在要再现的语音文件的情况下在语音信息中存在替换文本,则再现该替换文本。如果没有替换文本,则执行错误处理,或者如果不存在错误处理的话,则以错误结束该处理。

如果在步骤701确定需要有关变量的处理,则从语音信息224中提取整个语句记录语音文件名称和相应的替换文本(702)。然后进行有关在应用服务器220中是否存在任何整个语句记录语音文件的检查(703)。如果在应用服务器220中不存在整个语句记录语音文件,则删除示出变量标识的信息,并且此后执行诸如如上所述的处理之类的普通音频处理(730)。

如果在应用服务器220中存在整个语句记录语音文件,则还进行有关是否存在替换文本的检查(704)。如果不存在替换文本,则产生错误并且结束处理(740,741)。如果存在替换文本,则确定在语音服务器230的高速缓存(未示出)上是否早已存在整个语句记录语音文件(705)。如果在高速缓存上早已存在整个语句记录语音文件,则处理移到步骤709。如果在高速缓存上不存在,则从应用服务器220中获得整个语句记录语音文件(706)。通过使用替换文本以及整个语句记录语音文件动态地生成语法(707)。随后,执行语音识别以便划分整个语句记录语音(708)。

然后进行有关在应用服务器220中是否存在变量记录语音文件的检查(709)。如果在应用服务器220中存在变量记录语音文件,则从应用服务器220获得该文件(710)。连续地连接这些语音文件,以便以语音形式进行再现(711)。在高速缓存上保持所生成的语音文件达必需的时间段(712),以便必要时可以立即使用该文件。如果在步骤709不存在变量记录语音文件,则通过使用与变量相对应的替换文本的语音合成来生成语音文件(750)。将这个处理步骤序列实现为计算机程序。可以通过存储在诸如CD-ROM或者软盘之类的计算机可读存储介质上来提供这个计算机程序。

将描述图7所示的本发明的处理的VXML浏览器实现示例。部分(1)到(9)对应于图7中的内容。“VXML浏览器”是一个为了有关VXML的处理目的而提供与本发明中的语音文件处理部分231和语音化处理部分233相对应的功能的装置。

(1)检查音频标记中的被称为请求有关变量的处理的记号(mark)的符号‘#’。如果不存在相应的符号,则执行普通的音频处理。

(2)从该音频标记中提取整个语句记录语音文件名称和与该整个语句记录语音文件相对应的替换文本。

(3)如果不存在整个语句记录语音文件,则获取‘#’,并且执行普通的音频处理。根据需要执行语音合成。

(4)如果不存在替换文本,则产生错误并且结束处理。

(5)如果早已完成了相应的处理,则使用经高速缓存的语音文件。如果仅仅改变了变量分段,则仅仅从应用服务器中获得变量记录文件。

(6)根据该替换文本和变量分段的预定字符序列形成语法。

(7)由语音识别引擎识别该语法和整个语句记录语音文件,以便划分该整个语句记录语音文件。

(8)如果不存在变量记录语音文件,则为该变量分段执行语音合成。

(9)连接所获得的语音文件(在某些情况下还连接语音合成结果),以便对其进行再现。

下面所示的表1到7示出了图7所示的本发明中的处理的伪码表示。部分(1)到(9)对应于图7中的内容。以下的表1示出了处理步骤的序列。

[表1]

有关音频标记的处理(标记文本){    新执行的划分标志=false;(1)if(没有指示存在变量分段的记号){     到普通的处理(标记文本)    }(2)从标记文本中获得变量信息     -整个语句记录语音文件名称     -替换文本(3)if(不存在整个语句记录语音文件){     从标记文本中删除记号     到普通的处理(标记文本)(4)}else if(没有替换文本){     错误结束    }    部分列表=划分替换文本(替换文本)    整个语句记录语音文件ID=确定与“这个整个语句记录语音文件”相对应的唯一ID(5)if(高速缓存了所有部分(部分列表,“整个语句记录文件ID”)==false)?{     变量的字符序列=变量字符序列属性值(6)  整个文本=生成整个文本(部分列表,变量的字符序列)     生成并且允许语法(部分列表,变量的字符序列,语法名称)(7)  通过语音识别划分语音文件(整个语句记录语音文件,整个语句记录文件     ID)     禁用语法(语法名称)     新执行的划分标记=true    }(8)连接并且再现(整个语句记录文件ID,部分列表)   if(新执行的划分标记){     执行高速缓存处理(整个语句记录文件ID)   } }

表2涉及在表1所示的处理的(4)中用于划分替换文本的处理。

[表2]

划分替换文本(替换文本){    部分列表=“”    while(在替换文本中存在变量分段){      部分列表+=变量分段之前+变量分段      替换文本=变量分段之后    }    If(存在其它替换文本){      部分列表+=替换文本    }    返回部分列表}

表3示出了在表1所示的处理中的处理(5)的更多细节。

[表3]

  (5)高速缓存了所有部分(部分列表,整个语句记录文件ID)?{  if(在高速缓存使用范围内=false){    返回false  }  获得当前时间  if(整个语句记录文件ID不在高速缓存列表中){    返回false  }else if(整个语句记录文件ID的高速缓存条目到期了){    从高速缓存列表中删除高速缓存条目    返回false  }  判定=true  划分文件存储路径=请求划分路径(整个语句记录文件ID)  while(部分列表){    if(部分<>变量分段){      if(“part.wav”不在划分文件存储路径中){        判定=false        break;        }     }  }  返回判定}

表4示出了在表1所示的处理中的处理(6)的一部分的更多细节。

[表4]

(6)生成整个语句文本(部分列表,变量的字符序列){    整个语句文本=“”    while(部分列表){        整个语句文本+=(部分==变量?变量的字符序列:部分)    }    返回整个语句文本}

表5示出了在表1所示的处理中的处理(6)的另一部分的更多细节。

[表5]

  (6)生成并且允许语法(部分列表,变量的字符序列,语法名称)  规则0=变量的字符序列  公共规则=“ ”  for(n=1;部分列表;n++){    if(部分<>变量){       规则n=变量之前       公共规则+=规则n    }else{       公共规则+=规则0    }  }  根据所有规则和公共规则生成语法  通过在识别引擎中登记语法来启用语法(语法名称)}

表6示出了在表1所示的处理中的处理(7)的更多细节。

[表6]

  (7)通过语音识别划分语音文件(整个语句记录语音文件,整个语句记录文件    ID){      将识别引擎设置为语音文件生成模式      划分的语音文件输出目的地=获得划分路径(整个语句记录文件ID)      在识别引擎中指定所划分语音文件的输出目的地      将整个语句语音记录文件输入到识别引擎中       等待识别处理的完成并且返回//可以产生ACCEPTED或者REJECTED}禁用语法(语法名称){     禁用语法(语法名称)}

表7示出了在表1所示的处理中的处理(8)的更多细节。

[表7]

 (8)连接并且再现(整个语句记录文件ID,部分列表){     划分路径=获得划分路径(整个语句记录文件ID)     while(部分列表){        if(部分<>变量){          语音文件=“划分路径part.wav”          替换文本=“部分”        }else{          语音文件=“变量值.wav”          替换文本=“变量值”        }        if(存在语音文件){           再现语音文件        }else{           执行替换文本的语音合成        }      }}更新高速缓存(整个语句记录文件ID){   到期时间=当前时间+有效期限   高速缓存条目=“整个语句记录文件ID,到期时间”   如果具有这个整个语句记录文件ID的高速缓存条目早已经在高速缓存列表   中了,则从高速缓存列表中删除该高速缓存条目   将高速缓存条目添加到高速缓存列表中}获得划分路径(整个语句记录文件ID){   从划分路径=整个语句记录文件ID中唯一地确定}

将描述在VoiceXML的情况下本发明的实现的具体示例。可以实现这个扩展而不影响现有的功能并且没有违反VoiceXML规范。

在应用服务器中准备的语音文件

通过作为一个文件准备包括变量的整个语句,来记录整个语句记录语音文件。用特定的单词代替要被记录的变量分段。这个单词是依据语音服务器的理解的特定单词。例如,这样一个单词为“变量”。变量记录语音文件名称是“{变量内容}.wav”。如果变量字符序列包括在语音文件存储环境中不允许作为文件名称的字符,则准备其中以CSV形式映射变量-对-语音文件名称的映射列表文件。映射列表文件名称是依据语音服务器的理解的固定名称。例如,这样的映射列表文件名称是“value-wav.map”。

在当前路径中放置变量记录语音文件,并且在有些情况下还放置映射列表文件。可以分类一个或者多个变量记录语音文件。类别具有在当前路径下、为该类别特别提供的具有与类别名称相同名称的文件夹。将属于该类别的变量记录语音文件、并且在有些情况下还将包括该文件的描述的映射列表文件放置在为该类别特别提供的文件夹中。

应用服务器中的语音信息的描述

与整个语句记录语音文件相对应,指示整个语句记录语音文件是否具有变量的记号附加到语音信息上。此外,与具有至少一个变量的整个语句记录语音文件相对应,将有关具有至少一个变量分段的整个语句文本(替换文本)的信息以及要插入的变量的名称存储在语音信息中。此外,如有必要,还存储变量的语音文件所属的类别的名称。在某些情况下,将映射列表文件放置在当前路径或者为类别特别提供的文件夹中。

下面将描述建立应用于VoiceXML的上述规则的具体示例。在下文中描述将本发明应用到VoiceXML的<audio>标记中。通常,最终通过使用其中记录了人类语音的语音文件对语音应用进行操作。然而,在应用的开发期间,因为需要在不具有语音文件的情况下开发应用,所以利用了语音合成。为了适合于这样的使用环境,以描述了语音文件名称和字符序列的方式规定在VoiceXML中定义的<audio>标记,以便再现语音文件;如果存在语音文件则再现该语音文件;并且如果语音文件处于不可再现的状态下,则通过语音合成产生字符序列。

描述示例:“<audio src=“wav/sample.wav”>定购的物品</audio>”

依据就功能和格式而言的实质<audio>标记规范应用本发明。

<audio>标记中的src属性字段用于指示整个语句记录语音文件是否具有变量分段。将′#′附加到整个语句记录语音文件名称的顶部,以指示需要有关变量的处理。<audio>标记中的替换文本部分用于将信息添加到具有变量分段的整个语句记录语音文件中。在替换文本部分中描述了包括变量的整个文本语句。由<value>标记指定要插入的变量,并且在插入位置处插入该<value>标记。在属于一个类别的情况下,用利用类别属性指定类别名称的<sayas>标记包围<value>标记。将映射列表文件放置在为该类别特别提供的路径中或者当前路径中。

示例:在其中通过语音文件“wavsample.wav”语音文件再现消息“定购的物品是{?}”的情况下所准备的语音文件,其中将“定购的物品是变量”记录为整个语句记录语音文件“当前路径productriee.wav”语音文件,其中将“rice”记录为变量记录语音文件。

VXML文档(与语音信息相对应)的描述

<audio src=″#wav/sample.wav″>

定购的物品是

<sayas class=″product″>

<value expr=″ProductName″/>

</sayas>

</audio>

其中#表示需要有关变量的处理,以及“wav/sample.wav”是整个语句记录语音文件名称。

此外,以下部分

″定购的物品是

<sayas class=″product″>

<value expr=″ProductName″/>

</sayas>″

是替换文本。

这些描述是作为在应用服务器中执行的应用程序中的部分给出的。

语音服务器侧的功能

基于存在/不存在为语音文件规定的标记来确定整个语句记录语音文件是否具有变量,并且选择分支转移到简单的再现处理和需要变量插入的再现处理中适当的一个再现处理。简单的语音文件再现与传统的操作相同。下面将描述作为运行时处理的变量插入处理。

与整个语句记录语音文件相对应的替换文本被划分为变量分段以及除了变量分段之外的分段,并且动态地生成具有作为规则的部分的语法。作为用于识别变量分段的单词/短语,用于识别代替变量分段的单词/短语的规则被添加到语法中。例如,这样的单词/短语是“变量”。

下面将更详细地描述语法的生成。目标描述如下:

<audio src=″#confirm.wav″>

你的定单是<value expr=″Product″/>,不是吗?

</audio>

该语法生成处理描述如下。

1.用变量分段的文本替换该变量分段

(转换之前)你的定单是<value expr=″Product″/>,不是吗?

(转换之后)你的定单是变量,不是吗?

2.生成文本文件(BNF文件)。在这时候,需要执行单词划分,以允许由语音识别引擎进行识别。在这个示例中的结果如下:

<_rule1>=你的定单是变量,不是吗

3.为了将要说出的可接受语句传送到语音识别引擎,以语音识别引擎可理解的形式提供该语句。更具体地说,BNF文件是被编译用以生成语法词汇(FSG文件)的语法。语法编译是用于将语法改变为语音识别引擎可理解的形式的处理。例如,通过使用语法编译器API来执行编译成为语音识别引擎可理解的FSG格式。FSG(有限状态语法)文件格式是以语音识别引擎可理解的格式的经编译的语法文件。FSG文件格式也被W3C语音接口框架(W3C Speech InterfaceFramework)所支持。将如上所述生成的语法传送给语音识别引擎,以进行登记。

使所生成的语法可被语音识别引擎启用。将语音识别引擎设置为处于提交经识别的语音的模式中。将包括变量在内的整个语句记录语音文件输入到语音识别引擎中。语音识别引擎基于该语法,识别处于被分成变量分段和除了变量分段之外的分段的状态下的输入语音。语音识别引擎然后将所识别的语音划分为已识别的单元,以形成语音文件。

利用文件名称“{变量内容}.wav”搜索从应用程序中指定的变量记录语音文件。如果语音文件属于一个类别,则搜索位置是为该类别特别提供的路径,或者如果该语音文件不属于该类别,则搜索位置是当前路径。如果不存在文件“{变量内容}.wav”,则读取映射变量-对-语音文件名称列表以获得文件名称,并且搜索该文件。如果由于不存在映射列表、在映射列表中不存在相对于目标变量的指定或者映射列表中不存在与目标变量相关联的语音文件、或者由于某些其它原因而没有找到用于转换的语音文件,则基于变量文本执行语音合成。

依据文本序列按顺序再现通过划分生成的语音文件、通过搜索获得的变量记录语音文件或者变量文本的变量文本语音合成。为了提高性能,存储所划分的语音文件直到应用结束为止。然而,应该执行适当的文件删除。遵守事先在语音服务器中提供的、关于高速缓存文件管理的规则是恰当的。存储所划分语音文件分段的存在状态,以允许利用一些现存的已划分的语音文件。

关于变量的确定

与变量相对应的文本是应用中的变量值。在执行的时候确定该值。关于确定变量值的时间和地点的选择取决于应用逻辑。例如,可以在任何时候将期望值设置为Product=“变量值”。此外,例如可以写入在定单接收时所识别的单词/短语,以便设置为所述值。

在下面将更具体地描述包括确定变量在内的处理步骤序列。

取决于应用设计,关于“确定变量值的时间和地点”存在有如下所述的两种类型的选择方法。(1)向识别目标给予名称以用作变量名,并且将在用户发声的时候所识别的单词/短语设置为变量值。(2)事先声明变量,并且在根据需要选择的时间处设置变量值。

以下的表8示出了处理示例。

[表8]

  1  2  3  4  5   6  7  8  9   10  11  12   13   14  15   16  17   18  19  20  21<?xml version=″1.0″encoding=″SHIFT_JIS″?><vxml version=′″1.0″lang=″ja_JP″>  <var name=″Address″/>  <form>    <field name=″UserName″>       请说出你的姓名。      <grammar>Kato|Sato</grammar>      <filled>        你是<value expr=″UserName″/>,不是吗.       </filled>    </field>    <assign name=″Address″expr=getUserAddress    (UserName/>    <field name=″Product″>         请下定单。        <grammar>大米|味噌</grammar>     </field>    <field name=″answer″>       你的定单是<value expr=″Product″/>,不是吗.    </field>  </form></vxml>    ←声明Address变量   ←这个字段中识别的单词  /短语是UserName变量的值     ←可以以这种方式通过  (value>标记引用变量值    ←在Address变量中设置函  数getUserAddress的返回值  ←这个字段中识别的单词/  短语是Produet变量的值   ←这个字段中可识别的单词/  短语是大米或者味噌   ←这个字段中识别的单词/  短语是answer变量的值。    

这个示例是提供了以下所示的对话并且用传统的函数编写的VoiceXML应用。

系统:请说出你的姓名。

用户:Kato:当识别出这个发声时,UserName变量值=“Kato”。

系统:你是Kato,不是吗?:此后,通过<assign>标记给出Address变量值=getUserAddress函数的返回值,例如“Shibuya-ku,Tokyo”。

系统:请下定单。

用户:大米:当识别出这个发声时,Product变量值=“大米”。

系统:你的定单是大米,不是吗?

类型(1)的示例使用UserName变量、Product变量和answer变量。类型(2)的示例使用Address变量。当引用变量值时,使用标记<value>。在将变量名用作SCRIPT函数的参数的情况下,直接使用该变量名。

将更详细地描述类型(1)中的UserName变量。VXML处理部分首先读取应用服务器中的VXML应用。在对话的第五行处,VXML处理部分指示语音识别引擎通过语法“识别单词/短语Kato或者Sato”。当用户发出的“Kato”的语音到达语音识别引擎时,语音识别引擎通过对照语法识别单词/短语“Kato”。语音识别引擎通知VXML处理部分它“识别的单词/短语:Kato”。VXML处理部分在UserName变量中设置变量值“Kato”。VXML处理部分和语音识别引擎中的每一个例如在语音服务器中实现。VXML处理部分可以实现为例如语音化处理部分的一部分。

将更详细地描述类型(2)中的Address变量。VXML处理部分接收UserName字段的识别已完成的通知,并且在第十二行处开始处理。VXML处理部分调用被称为getUserAddress函数的函数,以通过参考客户名-对-地址数据库返回地址,并且将返回值作为变量值分配给Address变量。

变量名的确定

在这个实施例的一个示例中,提供了“变量值”+“.wav”作为变量记录文件名称。例如,如果在其中变量是变量“Product”的情况下Product变量值为“大米”,则变量分段记录文件名称=“大米.wav”。将参考以下的表9所示的示例进行相关的更详细描述。

[表9]

  1  2  3  4   5  6    7  8   9  10   11  12   13  14  15  16<?xml version=″1.0″encoding=″SHIFT JIS″?><vxml version=″1.0″lang=″ja_JP″>  <form>    <field name=″Product″>       <audio src=″order.wav″>        请下定单。        </audio>      <grammar>大米|味噌</grammar>      <filled>     <field name=″answer″>       <audio src=″confiem.wav″>         你的定单是<value expr=″Product″/>,         不是吗。      </audio>    </field>  </form></vxml>    ←这个字段中识别的单词/  短语是Product变量的值  ←指定要被再现的文件名称  ←当不能执行再现时,指定  通过语音合成获得的替换  文本   ←这里可识别的单词/短语  被定义为大米或者味噌  ←这个字段中可识别的单词  /短语为answer变量的值  ←通过<value>标记引用变  量值    

这是在其中在应用中请求定单并且需要说“你的定单是OO,不是吗”的情况下的描述。在这个示例中,可以保持以下的对话。

系统:请下定单。

用户:大米。

系统:你的定单是大米,不是吗。

对于这样的应用,在开发应用的时候,事先准备关于作为变量“Product”有效的值的变量记录文件,并且将其存储在应用服务器中。变量记录的文件名称为“变量值”+“.wav”。如果变量的有效值为“大米”和“味噌”,则准备并且在应用服务器中存储“大米.wav”和“味噌.wav”。在执行时,语音服务器依据变量“Product”的值(例如,“大米”),在<value expr=″Product″/>分段中组合变量分段记录文件名称(“大米.wav”)。如果应用服务器中存在该文件,则语音服务器再现该文件。如果应用服务器中不存在该文件,则语音服务器执行变量值(“大米”)的语音合成。例如,依据图7所示的流程图中(8)“是否存在变量记录语音文件”,执行这样的文件名称组合。

附图说明

图1为示意地示出适合实现为本发明的实施例的计算机的硬件配置的图示。

图2是通过使用功能块示出本发明的框图。

图3为示出在语音文件处理部分231中生成语法的逻辑的图示。

图4为示出语法生成逻辑的细节的图示。

图5为示出语音识别引擎232中通过语音识别划分语音文件的逻辑的图示。

图6为示出语音识别引擎232中通过语音识别划分语音文件的结果的图示。

图7为示出本发明中的语音服务器230中的处理流程示例的流程图。

附图标记描述

101  CPU

102  M/B芯片组

103  主存储器

104  视频卡

105  硬盘

106  网络接口

107  USB

108  桥电路

109  软盘驱动器

110  键盘/鼠标

210  语音应答系统

221  整个语句记录语音文件

222  变量记录语音文件

223  变量记录语音文件

224  语音信息

220  应用服务器

231  语音文件处理部分

232  语音识别引擎

233  语音处理电路

230  语音服务器

240  语音输出设备

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号