IAgentCharacterEx::Listen

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

HRESULT Listen(
   long bListen  // listening mode flag
);

打开或关闭语音识别输入 (收听模式) 。

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

bListen

侦听模式标志。 如果此参数为 True,则打开侦听模式;如果 为 False,则关闭侦听模式。

将此方法设置为 True 可启用侦听模式, (在固定时间段内打开语音识别) 。 虽然无法设置超时值,但可以在超时到期之前关闭“侦听”模式。 此外,如果由于 (或其他客户端) 在超时到期前成功将方法设置为 True ,则侦听模式已打开,则该方法将成功并重置超时。但是,如果由于用户按 Listening 键而已打开“侦听”模式,则该方法会成功,但会忽略超时,并且侦听模式会根据用户与侦听键的交互结束。

仅当输入活动客户端调用此方法时,此方法才会成功。 因此,如果客户端不是最顶层字符的活动客户端,该方法将失败。 如果尝试将方法设置为 False ,并且用户按 Listening 键,该方法也会失败。 如果没有与字符的语言 ID 设置匹配的兼容语音引擎,或者用户使用 Microsoft 代理属性表禁用了语音输入,则也可能失败。 但是,如果音频设备正忙, 方法不会失败。

成功将此方法设置为 True 后,服务器将触发 IAgentNotifySinkEx::ListeningState 事件。 当侦听模式超时完成或将 IAgentCharacterEx::ListeningState 设置为 False 时,服务器还会发送 IAgentNotifySinkEx::ListeningState

此方法不会自动调用 IAgentCharacter::StopAll 并播放字符的侦听状态动画,就像用户按下侦听键时那样。 这使你可以使用 IAgentNotifySinkEx::ListeningState 事件来确定是否要停止当前动画并播放自己的相应动画。 但是,一旦检测到用户言语,服务器会自动调用 IAgentCharacter::StopAll 并播放“听觉”状态动画。

另请参阅

IAgentNotifySinkEx::ListeningStateIAgentSpeechInputProperties::GetEnabled