Speak 方法

[从 Windows 7 开始弃用 Microsoft 代理,在后续版本的 Windows 中可能不可用。

Description

说出指定字符的指定文本或声音文件。

语法

代理**。字符 (“CharacterID”) 。朗讲** [文本], [Url]

组成部分 说明
文本 可选。 一个字符串,指定字符的显示内容。
Url 可选。 一个字符串表达式,指定音频文件的位置 (。WAV 或 .LWV 格式) 。 当通过 HTTP 协议) 检索字符动画数据时,可以将位置指定为文件 (,包括 UNC 路径规范) 或 URL (。

 

注解

尽管 文本URL 参数是可选的,但必须提供其中一个参数。 若要将此方法与配置为仅在单词气球中说话的字符或使用文本转语音 (TTS) 引擎,只需提供 Text 参数。 包括单词之间的空格,以在单词气球中定义适当的断字符,即使对于传统上不包含空格的语言也是如此。

还可以 (|包含垂直条形字符在 Text 参数中) 指定备用字符串,以便服务器在每次处理该方法时随机选择不同的字符串。

使用 Microsoft 代理字符编辑器编译字符时定义 TTS 输出的字符支持。 若要生成 TTS 输出,必须在调用此方法之前安装兼容的 TTS 引擎。 有关详细信息,请参阅 访问语音服务

如果使用录制的声音文件 (。WAV 或 .LWV 格式仅) 字符的输出,在 Url 参数中指定文件的位置。 此文件规范可以包括 UNC) 路径 (UNC) 的本地 (绝对或相对) 或通用命名约定。 文件名不能包含美国代码页 1252 中不包含的任何字符。 但是,如果使用 HTTP 协议访问字符动画数据,请使用 Get 方法在调用 Speak 方法之前加载动画。 有关创意的信息,请参阅 使用 Microsoft 语言信息声音编辑工具 。LWV 文件。

使用录制的声音文件输出时,仍可使用 Text 参数指定字符的单词气球中显示的单词。 但是,如果指定语言增强的声音文件 (。URL 参数的 LWV) ,但不指定单词气球的文本, Text 参数使用存储在文件中的文本。

还可以使用 文本 参数中包含的特殊标记来改变语音输出的参数。 有关详细信息,请参阅 Microsoft 代理语音输出标记

如果声明对象引用并将其设置为此方法,则返回 Request 对象。 可以使用此方法将代码的其他部分与字符的口述输出同步,如以下示例所示:

   Dim SpeakRequest as Object
...
   Set SpeakRequest = Genie.Speak ("And here it is.")
...
   Sub Agent1_RequestComplete (ByVal Request as Object)
   ' Make certain the request exists
   If SpeakRequest Not Nothing Then
      ' See if it was this request
      If Request = SpeakRequest Then
         ' Display the message box 
         Msgbox "Ta da!"
      End If
   End If
   End Sub

还可以使用 Request 对象检查某些错误条件。 例如,如果使用 Speak 方法说话且未安装兼容的 TTS 引擎,服务器会将 Request 对象的 Status 属性设置为“failed”,其 Description 属性设置为“类未注册”或“未知或对象返回错误”。 若要确定是否安装了 TTS 引擎,请使用 TTSModeID 属性。

同样,如果字符尝试朗讲声音文件,并且文件尚未加载或音频设备出现问题,则服务器还会使用适当的错误代码号将 Request 对象的 Status 属性设置为“失败”。

还可以在朗语文本中包含书签语音标记以同步代码:

   Dim SpeakRequest as Object
...
   Set SpeakRequest = Genie.Speak ("And here \mrk=100\it is.")
...
   Sub Agent1_Bookmark (ByVal BookmarkID As Long)
   If BookmarkID = 100 Then
      ' Display the message box 
         Msgbox "Tada!"
      End If
   End Sub

有关书签语音标记的详细信息,请参阅 语音输出标记

Speak 方法使用播放的最后一个操作来确定要播放的说话动画。 例如,如果在“Speak”命令前面播放“GestureRight”,服务器将播放 GestureRight,然后播放 GestureRight 朗语动画。 如果播放的最后一个动画没有说话动画,代理将播放分配给 角色说话状态 的动画。

如果呼叫 “说话” 且音频通道繁忙,则不会听到字符的音频输出,但文本将显示在单词气球中。

代理在单词气球中的自动断字会使用空格字符 ((例如空格或 Tab) )来打破单词。 但是,如果无法,它可能会中断一个单词以适应气球。 在日语、中文和泰文等语言中,如果空格不用于断字,请在字符之间插入 Unicode 零宽度空格字符 (0x200B) 以定义逻辑断字符。

注意

单词气球的 Enabled 属性也必须为 True ,才能显示文本。

 

注意

使用 Speak 方法之前,通过设置字符的语言 ID (,以确保在单词气球中显示适当的文本。

 

另请参阅

书签事件RequestStart 事件RequestComplete 事件