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 lay“GestureRight”,则服务器将播放 GestureRight,然后播放 GestureRight 说话动画。 如果播放的最后一个动画没有说话动画,则Microsoft代理播放分配给角色 说话 状态的动画。
如果呼叫 朗讲 并且音频通道繁忙,则不会听到字符的音频输出,但文本将显示在单词气球中。 单词气球的“已启用 属性还必须 True 才能显示文本。
Microsoft代理在单词气球中自动断字,使用空格字符(例如空格和制表符)分隔单词。 然而,它可能会打破一个单词以适应气球。 在日语、中文和泰文等语言中,空格不用于断字,请在字符之间插入 Unicode 零宽度空格字符(0x200B),以定义逻辑分词。
注意
使用 Speak 方法之前,设置字符的语言 ID(使用 IAgentCharacterEx::SetLanguageID,以确保在单词气球内显示适当的文本。
另请参阅
IAgentCharacter::P lay、IAgentBalloon::GetEnabled、IAgentCharacter::P repare