当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java进阶

CallFlow Builder 建语音应用程序调用流


  在您开发一个语音应用程序时,最重要的步骤之一是设计调用流,它规范了用户在与语音应用程序交谈时的交互方式。CallFlow Builder 是建模、原型制作以及创建简单的语音应用程序的一个简单易用的图形工具。您可以通过 CallFlow Builder 来创建语音应用程序,方法是将调用流的元素从工具箱拖放到设计面板中。创建完调用流之后,您只需从上下文菜单中选择 Generate VoiceXML 来生成运行语音应用程序所需要的 VoiceXML 即可。
  
  ® Studio(以下简称为 Voice Toolkit)的一个组件发行的,您可以免费下载。请参阅参考资料。
  
  本文是为了让读者更深入地了解 CallFlow Builder 而写的。阅读本文之后,您会对 CallFlow Builder 中的对象更为熟悉,并能更好地理解如何创建语音应用程序。通过学习 Voice Toolkit 中的入门指南,并查阅一下本文后面的“参考资料”部分所列出的资源,您就会对这些主题更深入地理解。
  
  系统先决条件
  安装完 Voice Toolkit 之后,您需要有以下的硬件和软件配置才能使用 CallFlow Builder。
  
  硬件配置要求
  在运行 Microsoft® Windows® 2000 或 Microsoft Windows XP 的系统中,您需要具备以下的硬件配置:
  
  Intel® Pentium® 500 MHz 以上的处理器,或与此相当的处理器
  768 MB 内存
  150 MB 的硬盘空间,选择其他安装选项还需另外的空间
  您的用户 TMP 环境变量所指定的驱动器上需要 150 MB 的临时空间
  显示适配器要求最少 256 色,最小分辨率 800x600(推荐 1024x768 或更高)
  
  软件配置要求
  Microsoft Windows 2000(Service Pack 4 或更高),或 Microsoft Windows XP(Service Pack 1 或更高)
  以下基本平台之一的安装版:
  WebSphere Studio Site Developer V5.1.0
  WebSphere Studio Application Developer V5.1.0
  WebSphere Application Server-Express V5.1.0
  请参阅参考资料,从中您可以了解到如何下载 WebSphere Studio 的体验版。
  
  布置调用流
  在创建调用流时,有多种方式可以让您在设计面板中布置对象。对于本文,我们选择一种逐级下降的方法,在这种方式中,对象被放置在前一个对象的右下角。使用一种紧凑的方式有助于使您的调用流更加容易读取。图 1 说明了这一点。
  
  
图 1. 用于包传递和接收的调用流图表

  
 

  对象是以一种阶梯方式布置的。我们将 GlobalCommands 对象放在第一个屏幕的右上角位置以方便读取和访问,因为这种逐级下降方式会使得这一区域比较适合作全局命令使用。未实现的特征对象(以 “Sorry” 标示)显示在屏幕的左下角,这是为了最大程序地利用设计面板的空间。然后,我们将调用流中其他地方使用的功能和特征集中在一起。
  
  使用系统化进程来开发调用流
  为了提高使用 CallFlow Builder 的生产效率,您可以使用一种自上而下的方式来开发调用流,并使工作方式由普通转为特殊。采用这种方式,您可以通过几个步骤来开发语音应用程序:
  
  第一步——创建对象和流
  首先,确定并创建所需要的对象、整体的流以及该调用流的连接。在您创建对象时,不必为每个调用流的准确用语大费心机;您可以在以后的步骤中再重新命名。相反,您可以使用诸如 Greeting 或 Main Menu 的通用名称。对于那些您使用 “GoTo” 来跳转的对象,请键入一个名称以便您能容易地找到它们。如果您对应用程序的流感到满意,那么就可以进入下一步了。
  
  第二步——添加选项
  在第二步中,请再回到每一个对象,在属性面板的可选区域中键入值。可选区域包括将要使用文本-至-语音(TTS)来回放的准确用语或一个语音文件。如果您想支持双音多频(Dual Tone Multi-Frequency,DTMF)电话键盘交互,那么请在 User Responses(黄色框)中添加 DTMF 支持,方法是选择对象,修改它的 DTMF Key 特性,并将希望的支持级别添加到 Catch 特性中。一旦您检查了所有的用语并确定客户也满意这样的用语,那么您就可以进入第三步。
  
  第三步——录制语音文件
  现在,您就可以使用标题为 List of Audio Files Required 的部分录制语音文件,这一部分可在一个 .txt 文件中找到,这一文件是您保存调用流时自动生成的,并且与您的 .cfb 具有相同的名称。例如,如果您在保存调用流时将它命名为 MyCallFlow.cfb,那么您就可在同一个项目文件夹中发现一个名为 MyCallFlow.txt 的文件。
  
  您需要从零做起创建 DTMF 语音文件和 Catch 语音文件,请使用建立在 List of Audio Files 中的名称。您只需简单地单击语音图标 就能够很轻松地创建和录制初始发音的语音文件。任何时候对象包含需要录制的文本时,这一语音图标就会出现在其标签的左边;例如,Statements 和 Prompts。
  
  您不需要录制语音文件来测试应用程序。当您仿真应用程序时,未录制的文件以文本形式出现;当您运行应用程序时,它们就会使用 TTS 来播放。如果您要将您的应用程序呈现给客户,并且您有制作高质量的语音必备的条件(例如好的嗓音及适当的文件修正),那么,我们推荐您(至少)使用录音带来录制初始发音语音文件。
  
  第四步——指定语法文件
  现在,需要创建所有必需的语法文件,并通过将语法文件拖入到设计面板中的适当 Prompt 对象上来将它们与它们的提示信息相关联。另一种选择是,从 Prompt 特性区域中的 Select Grammar 上下文菜单中选择内置的语法。
  
  第五步——测试应用程序
  最后,在第五步中(实际上可以在整个过程的任何时候),您可以对应用程序进行测试。
  
  右键单击设计面板的任何位置就会弹出上下文菜单,请在其中选择 Simulate。测试有助于您在生成 VoiceXML 代码前发现流尚存在的问题。
  选择上下文菜单中的 Validate 来检验调用流,然后修复所有出现的错误。
  最后,请选择上下文菜单中的 Generate VoiceXML 来生成 VoiceXML 代码。
  
  处理连接
  CallFlow Builder 版本 5.0 支持一对一的连接。因此,对于调用流中的每个对象,都可以只有另外一个对象连接到其上。如果需要由几个对象连接到同一个对象上,您可以使用 “GoTo”,如图 2 所示的调用流图表所阐述的那样。在本例中,说出 “Chocolate”、“Vanilla” 或 “Strawberry” 即可将调用流定向到名为 ComingUp 的声明中。
  
  
图 2. 使用 GoTo 对象来处理多对一的调用流连接

  
 

  图 2 演示了如何使用 GoTo 来支持多对一的连接。您可以使用 Prompt 的 Else-Path 构造来达到同样的效果。Else-Path 构造是指在对象的中心偏右或底端可用的缺省连接。图 3 中的调用流阐述了这一点。
  
  
图 3. 使用 Else-Path 构造作为可选方案来实现多个 GoTo 对象

  

  说出 “Vanilla” 会将调用流定向到特定于 Vanilla 的声明中。而说出 “Chocolate” 或 “Strawberry” 会将调用流定向到缺省的、其他路径的连接对象——ComingUp 上。
  
  支持 DTMF
  作为在语音应用程序中使用语音识别的备选方案,您可以使用 DTMF。DTMF 可以使调用者通过触击他们电话上的音调键来对用户提示和选择做出响应。在您的应用程序中添加 DTMF 支持是很容易的,而且这样做会保证您的系统响应不会发生语音误识别(例如,如果您的用户是在嘈杂的环境中调用的,会给语音识别器带来一些问题,那么支持 DTMF 是一个很好的主意)。另外,当您使用仿真器来测试语音应用程序时,在您的应用程序中支持 DTMF 也是特别有用的。
  
  要想在您的语音应用程序中添加 DTMF,需要为每个 User Response 分配一个 DTMF 键。然后,为每个 Prompt 修改 Optional-Speech 特性,以便除 Speech 以外,用语准确对应 DTMF 键的分配。例如:“说 Chocolate 与按 1 键对应;Vanilla 与 2 键对应;Strawberry 与 3 键对应。”
  
  重要:如果是在后来才在项目中添加 DTMF,那么就需要您以修正过的用语来录制发音语音文件。
  
  CallFlow Builder 支持 3 种模式的交互:Speech、DTMF 和 Speech-DTMF。在缺省情况下,生成的代码会支持 Speech 和 Speech-DTMF 模式。如果您想禁用语音识别模式,而只支持 DTMF,那么您可以通过修改 .vxml 文件的以下行来修改应用程序的模式。
  
  将:
  
  <var name="mode" expr="'speech'" />
  
  修改为:
  
  <var name="mode" expr="'dtmf'" />
  
  创建复杂应用程序
  由 CallFlow Builder 生成的 VoiceXML 代码已经足以创建简单的语音应用程序、演示版以及原型了。为了创建更加复杂的、实际使用的应用程序(它包括后端处理,例如数据库访问和其他类型的自动操作),那么您还需要一个程序设计人员,由他来对 CallFlow Builder 生成的代码做修改以适合您的需要。如果要部署一个完美的应用程序,包括 Java、JSP、J2EE 和数据库编程,以及其他,那么您还需要其他的程序设计技能。
  
  语音应用程序的质量完全取决于对手头的任务的规划及可用的资源数量。高目标、高质量的应用程序的创建需要更多的人时。要想组织和部署一个专业解决方案,需要很好地利用专门的语音天才、用户界面设计人员、人性因素工程师、程序设计人员和项目经理。
相关内容
赞助商链接