IAgentCharacter::Speak

[自 Windows 7 起弃用 Microsoft 代理,在后续版本的 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 参数指定字符的单词气球中显示的单词。 如果指定语言增强的声音文件 (。 bszURL 参数的 LWV) ,但不指定文本, bszText 参数使用存储在文件中的文本。

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

如果呼叫 “说话 ”且音频通道繁忙,则不会听到字符的音频输出,但文本将显示在单词气球中。 单词气球的 Enabled 属性也必须为 True ,才能显示文本。

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

注意

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

 

另请参阅

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