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代理播放分配给角色 说话 状态的动画。

如果呼叫 朗讲 并且音频通道繁忙,则不会听到字符的音频输出,但文本将显示在单词气球中。 单词气球的“已启用 属性还必须 True 才能显示文本。

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

注意

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

 

另请参阅

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