你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

什么是 Windows 上的语音助理?

语音助手应用程序可以利用 Windows ConversationalAgent API 实现全面的语音助理体验。

语音助手功能

语音代理应用程序可以通过读出关键字激活,获得免手动的语音驱动体验。 当应用程序关闭并且屏幕被锁定时,语音激活可发挥作用。

此外,Windows 还提供了一组语音激活隐私设置,这些设置使用户可以基于每个应用控制语音激活和上述锁定激活。

语音激活后,Windows 将正确管理多个活动代理,并在出现中断或停用时通知各个语音助手。 这样,应用程序便可以正确管理中断和其他代理间事件。

语音激活的原理是什么?

代理激活运行时 (AAR) 是在 Windows 中通过说出关键字或按下按钮来管理应用程序激活的持续进程。 只要系统上至少有一个应用程序注册到系统中,它就会通过 Windows 开始运行。 应用程序通过 Windows SDK 中的 ConversationalAgent API 与 AAR 进行交互。

当用户说出关键字时,系统上的软件或硬件关键字检测工具将通知 AAR 检测到了关键字,同时提供关键字 ID。 继而,AAR 会向 BackgroundService 发送请求,通过相应的应用程序 ID 启动该应用程序。

注册

首次运行语音激活的应用程序时,它会通过 ConversationalAgent API 注册其应用 ID 和关键字信息。 AAR 会将全局映射中的所有配置都注册到系统上的硬件或软件关键字检测工具,使其能够检测到应用程序的关键字。 应用程序还会向后台服务注册

这意味着应用程序只有在运行一次且注册被允许完成之后,才能通过语音激活。

接收激活

后台服务从 AAR 接收请求并启动应用程序。 应用程序通过 App.xaml.cs 中的 OnBackgroundActivated 生命周期方法接收信号,其中包含唯一的事件参数。 此参数将通知应用程序它已被 AAR 激活,并应启动关键字验证。

如果应用程序成功验证关键字,则可以发出在前台显示的请求。 如果此请求成功,该应用程序则会显示 UI,并继续与用户交互。

在有人说出活动应用程序的关键字时,AAR 仍会发出信号。 不过,它不是通过 App.xaml.cs 中的生命周期方法发出信号,而是通过 ConversationalAgent API 中的事件发出信号。

关键字验证

触发应用程序启动的关键字检测工具已通过简化关键字模型实现低功耗。 这使关键字检测工具能够“始终可用”,而不会造成高功耗影响,但这也意味着关键字检测工具可能会收到很多“误报”,即在没有说出关键字时也会检测到关键字。 这就是语音激活系统在后台启动应用程序的原因:使应用程序有机会在中断用户的当前会话之前验证关键字是否被说出。 AAR 会保存音频,几秒之后便会检测到关键字,并使其可被应用程序访问。 应用程序可借此机会对同一音频运行更可靠的关键字检测工具。

后续步骤