SPW 音频引擎
音频接口
DirectX (DirectSound)
在 Windows 10/11 系统上,此接口的音频流将重定向至下述的 WASAPI 共享模式。它仅作为备用兼容性选项提供。
Windows 音频会话 API (WASAPI)
WASAPI 是 Windows 系统推荐的高性能音频接口,提供共享与独占两种工作模式。
WASAPI 工作模式详解
共享模式 (Shared Mode)
在共享模式下,音频流由 Windows 系统音频引擎统一管理和混合。
- 特点: 所有应用的音频可以同时播放。音频数据会经过系统混音器处理。
- 采样率转换: 如果播放的音频采样率与系统设置的输出采样率不一致,系统将执行采样率转换(SRC)。
独占模式 (Exclusive Mode)
在独占模式下,应用可直接控制音频硬件设备,绕过 Windows 系统混音器。
- 优点: 可获得更低的音频延迟,并避免 Windows 系统层面的混音和音频增强处理。
- 限制: 启用后,其他应用的音频将无法通过该硬件设备播放。
关于采样率转换 (SRC)
采样率转换(Sample Rate Conversion, SRC)是指将音频数据的采样率从一个频率变换到另一个频率的过程(例如,从 44.1 kHz 转换为 48 kHz)。
- SRC 的发生位置: SRC 可能在软件内部(应用层面)发生,也可能在 Windows 系统层面发生。
- “避免 SRC”的含义: 此说法通常指避免由 Windows 系统 执行的 SRC。在共享模式下,只要音频文件的采样率与系统输出设置一致,即可避免系统层面的 SRC。在独占模式下,由于绕过了系统混音器,自然也避免了系统 SRC。
- 独占模式与 SRC 的关系: 启用独占模式不等于零 SRC。如果软件输出的采样率与原始音频文件不一致,SRC 仍然会在软件内部发生。实现真正的零转换,需要软件输出与硬件接收的采样率精确匹配。
SPW 的播放逻辑
为实现流畅的播放体验,SPW 在独占模式下采用了特定的处理流程: SPW 会读取系统音频设置中的首选采样率,并以此采样率锁定硬件。所有音频文件,无论原始采样率为何,都会被高质量地实时转换到该指定采样率再进行输出。
此方法具有以下优势:
- 实现无间断播放: 由于输出采样率固定,切换不同采样率的歌曲时无需重新初始化硬件,避免了播放中断。
- 尊重通用设置: 输出采样率遵循系统的主要音频设置。当播放的音频文件采样率恰好与该设置相同时,便不会发生任何采样率转换。
注:现代 Windows 系统与 SPW 内置的 SRC 算法都具备极高的品质,其转换过程在听感上接近无损。关于 Android 平台,其音频独占模式的底层逻辑与 Windows 类似,但硬件访问的实现方式更为复杂。
音频设置建议
采样率选择
对于音乐聆听场景,通常无需追求超高的采样率。建议设为 48 kHz,此设置能很好地匹配多数主流音频文件,减少不必要的转换。
独占模式的使用
- 常规聆听: 不建议启用。共享模式已能提供出色的音质,且不影响其他应用正常发声。
- 专业或低延迟场景: 在对延迟有极高要求的场景(如 K 歌或专业监听),可启用独占模式以获得最低的延迟和更纯净的信号通路。