Windows 10:针对音频驱动程序的新增功能

本主题提供 Windows 10 音频中的新增功能的简要摘要。

功能概述

以下是 Windows 10 中的新音频功能。

低延迟音频改进

音频延迟是创建声音的时间和听到声音的时间之间的延迟。 对于以下几个关键方案,低音频延迟非常重要。

  • 专业音频
  • 音乐创作和混合
  • Skype 等通信
  • 虚拟现实与增强现实
  • 游戏

设备的总延迟是以下组件的延迟之和:

  • 操作系统
  • 音频处理对象
  • 音频驱动程序
  • 音频硬件

在 Windows 10 中,已完成减少 OS 中的延迟的工作。 如果没有任何驱动程序更改,Windows 10 中的应用程序将经历 4.5-16 毫秒的较低延迟。 此外,如果驱动程序已更新,现可利用使用小型缓冲区处理音频数据的新低延迟 DDI,则延迟将减少更多。 如果驱动程序支持 3ms 音频缓冲区,则往返延迟约为 10 毫秒。

显示应用、音频引擎驱动程序和硬件组件的低延迟音频堆栈的示意图。

音频堆栈支持多个数据包大小和动态数据包大小调整,以便根据用户的场景优化延迟和电源之间的权衡。 此外,将确定流的优先级,以便确保高优先级流(例如电话呼叫)具有专用资源。

为了使音频驱动程序支持低延迟,Windows 10 提供以下 3 项新功能:

  1. [必需] 声明每个模式下支持的最小缓冲区大小。
  2. [可选,但建议] 改进驱动程序和 OS 之间的数据流协调。
  3. [可选,但建议] 注册驱动程序资源(中断、线程),以便在低延迟方案中受 OS 保护。 有关详细信息,请参阅低延迟音频

信号处理模式和音频类别

信号处理模式

驱动程序会为每个设备声明支持的音频信号处理模式。

音频类别(由应用程序选择)映射到音频模式(由驱动程序定义)。 Windows 定义了七种音频信号处理模式。 OEM 和 IHV 可以确定要实现的模式。 下方所示的表中汇总了这些模式。

模型 呈现/捕获 说明
原始 推送、请求和匿名 原始模式指定不应对流应用任何信号处理。 应用程序可以请求完全未触及的原始流并执行其自己的信号处理。
默认 推送、请求和匿名 此模式定义默认音频处理。
电影* 呈现 电影音频播放
媒体* 推送、请求和匿名 音乐音频播放(大多数媒体流的默认值)
语音* Capture 人声捕获(例如 Cortana 的输入)
通信* 推送、请求和匿名 VOIP 呈现和捕获(例如 Skype、Lync)
通知* 呈现 铃声、闹钟、警报等。

音频设备驱动程序至少需要支持原始模式或默认模式。 支持其他模式是可选的。

语音、电影、音乐和通信的专用模式。 音频驱动程序将能够根据流类型定义不同类型的音频格式和处理。

音频类别

下表显示了 Windows 10 中的音频类别。

为了通知系统音频流的使用情况,应用程序可以选择使用特定的音频流类别标记该流。 在 Windows 10 中,有 9 个音频流类别。

类别 说明
电影* 电影,带对话框的视频(替换 ForegroundOnlyMedia)
媒体* 媒体播放的默认类别(替换 BackgroundCapableMedia)
游戏聊天* 用户之间的游戏内通信(Windows 10 中的新类别)
语音* 语音输入(例如个人助手)和输出(例如导航应用)(Windows 10 中的新类别)
通信 VOIP,实时聊天
警报 警报、铃声、通知
声音效果 蜂鸣声、叮当声等
游戏媒体 游戏内音乐
游戏效果 球弹跳、汽车引擎声、子弹等。
其他 未分类流

* Windows 10 中的新增功能。

有关详细信息,请参阅音频信号处理模式音频处理对象体系结构

硬件卸载 APO 效果

Windows 10 支持硬件卸载 APO 效果。 可以在卸载引脚顶部加载 APO。 这样就可以在软件和硬件中完成音频处理。 此外,处理还可以动态更改。 当有足够的硬件资源时,可以将部分或全部处理都从软件 APO 移到 DSP,然后在 DSP 中的负载增加时将其移回软件 APO。

有关详细信息,请参阅实现硬件卸载 APO 效果

Cortana 语音激活 - 语音唤醒

Cortana 这项个人助手技术于 2013 年在 Microsoft BUILD 开发人员大会上首次面世。 语音激活是一项功能,让用户可通过说出特定短语“你好小娜”,从各种设备电源状态调用语音识别引擎。 利用“你好小娜”语音激活 (VA) 功能,用户可使用其语音在活动上下文(即当前在屏幕上的内容)之外快速参与体验(例如 Cortana)。 该功能专为屏幕关闭、空闲或完全处于活动状态的场景设计。 如果硬件支持缓冲,则用户可以将关键短语和命令短语链接在一起。 这可改善用户的端到端语音唤醒体验。 有关详细信息,请参阅语音激活

Windows 音频通用驱动程序

Windows 10 支持一种适用于电脑、2:1 和 Windows 10 版手机和小屏幕平板电脑的驱动程序模型。 这意味着 IHV 可以在一个平台中开发其驱动程序,而该驱动程序将适用于所有设备(台式机、笔记本电脑、平板电脑、手机)。 结果是缩短开发时间和降低开发成本。

若要开发通用音频驱动程序,请使用以下工具:

  1. Visual Studio 2015:新的驱动程序设置允许将“目标平台”设置为“通用”,以创建多平台驱动程序。
  2. APIValidator:这是一个 WDK 工具,可用于检查驱动程序是否通用,并突出显示需要更新的调用。
  3. GitHub 中的音频示例:已将 sysvad 和 SwapAPO 转换为通用驱动程序。 有关详细信息和指向 GitHub 示例代码的指针,请参阅音频的通用 Windows 驱动程序

音频驱动程序的资源管理

在低成本移动设备上打造良好音频体验的一个挑战是,有些设备具有各种并发性约束。 例如,设备可能只能同时播放最多 6 个音频流,并且仅支持 2 个卸载流。 当移动设备上有活动电话呼叫时,设备可能仅支持 2 个音频流。 当设备在捕获音频时,设备最多只能播放 4 个音频流。

Windows 10 包含一种机制,用于表达并发性约束,以确保高优先级音频流和移动电话呼叫能够播放。 如果系统没有足够的资源,则会终止低优先级流。 此机制仅适用于手机和平板电脑,而不适用于台式机或笔记本电脑。

有关详细信息,请参阅音频硬件资源管理

音频驱动程序的 PNP 重新平衡

PNP 重新平衡用于某些需要重新分配内存资源的 PCI 方案中。 在这种情况下,会卸载一些驱动程序,然后在不同的内存位置重新加载这些应用程序,以便创建可用连续内存空间。 可以在两个主要场景中触发重新平衡:

  1. PCI 热插拔:用户插入设备,PCI 总线没有足够的资源来加载新设备的驱动程序。 属于此类别的一些设备示例包括 Thunderbolt、USB-C 和 NVME 存储。 在此场景中,内存资源需要重新排列和合并(重新平衡),以支持要添加的其他设备。
  2. PCI 可调整大小的 BAR:成功将设备驱动程序加载到内存中后,它会请求其他资源。 一些设备示例包括高端显卡和存储设备。 有关详细信息,请参阅为 PortCls 音频驱动程序实现 PnP 重新平衡