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::ListeningState, IAgentSpeechInputProperties::GetEnabled