Skip to main content
由低功耗 AI (LPAI) 驱动的音频子系统可提供语音用户界面和音频体验。它使用专用的基于硬件的 AI 加速器进行基于机器学习的工作。
Audio component overview

音频组件概述

音频系统包括:
  • 应用处理器 – 处理音频处理任务的 CPU。任务包括:
    • 管理音频录制和播放
    • 解码音频格式
    • 使用 LPAI 执行后处理任务
  • 低功耗 AI (LPAI) – 运行音频播放/录制和语音激活 (VA) 算法的子系统。它集成了专用的 Qualcomm® Hexagon™ 处理器 (QDSP6) 和低功耗岛 (LPI)。
  • 音频编解码器 – 硬件包括:
    • 模数转换器 (ADC)
    • 数模转换器 (DAC) 用于将模拟音频转换为数字音频,反之亦然。
  • 扬声器 AMP 和麦克风 – 通过 I2S/TDM/SoundWire 连接的设备。

架构

下图显示了高层次的音频软件架构。
High-level audio software architecture
High-level audio software architecture

高层次的音频软件架构

以下是音频软件架构的主要组件: 应用 1 一个通用的多媒体应用,可产生或消费音频,并通过更高级别的框架(如 GStreamer 或 PipeWire)发送,而不是直接与硬件交互。 应用 2 另一个共享相同音频栈的应用,用于演示多个应用可以同时使用和路由音频流。 GStreamer 一个多媒体框架,用于处理音频/视频(例如解码、编码),然后将音频流传递到系统音频层。 PipeWire 一个用户空间音频服务器,用于管理应用和硬件设备之间的音频路由、混音和连接。 ALSA + ASoC FWK 此层桥接用户空间和硬件驱动,其中 ALSA 负责处理声音子系统功能,ASoC 负责管理嵌入式音频硬件交互。 Q6 APM 驱动 一个 Qualcomm 特有的驱动,与 DSP 的音频处理管理器通信以控制音频路由和处理。 PCM 驱动 处理原始数字音频 (PCM 数据) 在内存和音频子系统之间的传输,用于播放或录制。 DAI 驱动 管理数字音频接口(例如 I2S/TDM),配置音频数据在处理器和编解码器之间的传输方式。 CODEC 驱动 控制音频编解码器硬件,将其配置为将数字音频信号转换为模拟输出,反之亦然。 PipeWire PipeWire 是一款 Linux 多媒体服务器,可在应用和硬件之间路由音频。它取代了 PulseAudio,为应用提供低延迟、安全和灵活的媒体处理。 平台抽象层 (PAL) 提供更高级别的音频特定 API,用于访问音频硬件和驱动以启用音频功能。 音频图管理器 (AGM) 提供接口以允许基于 TinyALSA 的混音器控件以及 PCM/压缩插件进行交互并启用音频功能。 AudioReach 图服务 (ARGS) 由图服务层 (GSL)、通用数据包路由器 (GPR) 和 acdb 管理层 (AML) 模块组成。处理图的初始化和创建,以及为向 AudioReach 引擎 (ARE) 发送一系列命令而创建数据包。 音频校准数据库 (acdb) 包含各种音频用例(例如图、模块校准数据等)的信息。应用处理器解析 acdb 文件以获取用于 ARE 启用用例的图信息。 AudioReach 引擎 (ARE) 运行在 LPAI DSP 上的模块化框架。它有助于设置、配置和运行音频功能的信号处理模块。 Qualcomm 音频校准工具 (QACT™ 平台) 基于 PC 的软件,提供图形界面用于可视化、配置和存储音频用例的音频图到 acdb。

Config 1 与 Config 2 对比

QLI 2.0 引入了一种叠加(overlay)模型,允许客户从干净的开源基础构建开始,并可选择叠加 Qualcomm 专有的 DSP 加速音频栈,而无需完全重新刷写。这称为 Config 1 → Config 2 过渡。

Config 1 — 上游 ASoC

Config 1 使用 ALSA 片上系统(ASoC)框架。音频完全使用上游内核驱动在应用处理器上运行,不依赖任何 Qualcomm 专有组件。

主要特性

  • 向用户空间公开标准 ALSA 声卡
  • 音频管道组件:编解码器驱动、平台驱动、机器驱动
  • 使用 UCM 配置文件(ucm.conf)进行路由
  • 使用 ASoC 拓扑二进制文件(.tplg)配置混音器路径和路由
  • 通过 ALSA sink/source 兼容 aplay、arecord、GStreamer 和 PipeWire

内核模块

Config 1 构建中会加载以下内核模块:
  • q6apm_dai
  • q6apm_lpass_dais
  • q6prm
  • q6prm_clocks
  • snd-soc-sc8280xp
  • snd_q6apm
  • snd_q6dsp_common

何时选择 Config 1

  • 要求完全开源、仅使用上游内核
  • 不需要 DSP 加速的音频功能(SVA、Fluence、Haptics)
  • 面向使用上游驱动的主线 Linux 发行版或 AOSP
  • 免集成或低集成工作量

构建

Config 1 构建 qcom-multimedia-image。
<machine> 指 meta-qcom/ci/ 下的目标专用 YML 文件。该目录中列出了所有可用的机器 YML 文件。例如,对于 IQ-9075 EVK(Lemans),YML 文件为 iq-9075-evk.yml:

Config 2 — 下游 AudioReach

Config 2 使用 AudioReach,即 Qualcomm 的模块化信号处理框架(SPF),它将音频处理卸载到专用的 Hexagon DSP 上,从而实现低功耗、高性能的音频。

主要特性

  • 音频处理卸载到 ADSP(Hexagon DSP),音频播放期间 CPU 保持空闲
  • PAL(平台抽象层)公开更高级别的音频 API
  • AGM(音频图管理器)对接混音器控件和 PCM 插件
  • ACDB(音频校准数据库)管理图和调优
  • PipeWire 通过 PAL source/sink 插件连接到硬件
  • 支持 ASoC 中不具备的高级功能:SVA、Fluence ECNS、压缩卸载、SSMD/MSMD,以及通过 QACT 进行实时调优

AudioReach 用户空间软件包栈

应用 Config 2 叠加时会安装以下软件包:

何时选择 Config 2

  • 客户需要 Qualcomm 专有音频功能(SVA、Fluence、SSMD/MSMD)
  • 优先考虑功耗优化的音频播放/录制(ADSP 卸载)
  • 需要通过 QACT 进行实时调优
  • 需要压缩音频卸载(MP3、AAC)

构建

Config 2 构建 qcom-multimedia-proprietary-image。它在 Config 1 之上叠加完整的 AudioReach 栈。
Config 2 仅在 aarch64 目标上受支持,并且需要 qcom-distro.yml。
<machine> 指 meta-qcom/ci/ 下的目标专用 YML 文件。例如,对于 IQ-9075 EVK(Lemans):

迁移路径:Config 1 → Config 2

从 Config 1 到 Config 2 的过渡通过叠加机制处理。客户无需重新刷写基础镜像。
1

从 Config 1 基础镜像开始

构建或刷写 qcom-multimedia-image(Config 1 基础)。
2

应用叠加

应用 qcom-multimedia-proprietary-image 叠加。
3

安装 AudioReach 软件包

通过 DNF 叠加安装 AudioReach 软件包。
4

切换内核模块

内核从上游 ASoC 模块切换到 AudioReach 内核驱动。
5

部署 PAL 和 ACDB 配置

部署 PAL/ACDB 配置文件(audioreach-conf)。
6

重新配置 PipeWire

重新配置 PipeWire 以使用 AudioReach PAL sink/source 插件。
7

验证

使用音频测试套件和 QACT 调优进行验证。

后续步骤