Speak 方法

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

Description

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

语法

agent**。字符 (“CharacterID”) 。朗说** [Text], [Url]

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

 

备注

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

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

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

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

使用录制的声音文件输出时,仍可使用 Text 参数指定字符的单词气球中显示的单词。 但是,如果指定语言增强的声音文件, (。LWV) Url 参数,并且不为单词气球指定文本, 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 属性设置为“失败”,并提供相应的错误代码号。

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

   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 朗语动画。 如果上一个播放的动画没有说话动画,则代理将播放分配给角色的 说话 状态的动画。

如果调用 Speak 且音频通道繁忙,则无法听到字符的音频输出,但文本将显示在单词气球中。

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

注意

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

 

注意

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

 

另请参阅

Bookmark 事件RequestStart 事件RequestComplete 事件