IAgentCharacter::Speak

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

HRESULT Speak(
   BSTR bszText,    // text to speak
   BSTR bszURL,     // URL of a file to speak
   long * pdwReqID  // address of a request ID
);

说出文本或声音文件。

  • 返回指示操作成功的S_OK。

bszText

字符要说话的文本。

bszURL

URL (或文件规范) 用于语音输出的声音文件。 这可以是标准声音文件 (。WAV) 或语言增强的声音文件 (。LWV) 。

pdwReqID

接收 Speak 请求 ID 的变量的地址。

若要使用此方法,将字符配置为使用文本转语音 (TTS) 引擎;只需提供 bszText 参数。 可以包括垂直条形字符 (|) bszText 参数中指定备用字符串,以便服务器每次处理方法时,都会随机选择不同的字符串。 使用 Microsoft 代理字符编辑器编译字符时,定义对 TTS 输出的支持。

如果要对字符使用声音文件输出,请在 bszURL 参数中指定文件的位置。 使用 HTTP 协议下载声音文件时,在使用此方法之前,请使用 Prepare 方法确保文件的可用性。 可以使用 bszText 参数指定字符的单词气球中显示的单词。 如果指定语言增强的声音文件, (。LWV) bszURL 参数,但不指定文本, bszText 参数使用存储在 文件中的文本。

Speak 方法使用播放的最后一个动画来确定要播放哪个口语动画。 例如,如果在 Speak 命令前面加上 IAgentCharacter::P layGestureRight”,服务器将播放 GestureRight ,然后播放 GestureRight 朗语动画。 如果最后一个播放的动画没有朗语动画,则 Microsoft 代理将播放分配给角色的 说话 状态的动画。

如果调用 Speak 且音频通道繁忙,则无法听到字符的音频输出,但文本将显示在单词气球中。 单词气球的 Enabled 属性也必须为 True 才能显示文本。

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

注意

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

 

另请参阅

IAgentCharacter::P layIAgentBalloon::GetEnabledIAgentCharacter::P repare