2. 车载音频系统基础

车载音频系统的所有功能,最终都落在一条从“声音”到“扬声器”的链路上。理解这条链路,需要先掌握音频信号的几个基本参数:采样率、位深、声道数与 PCM 编码。它们决定了音频数据的体积、保真度以及后续在 CarAudioService 中的路由与混音方式。

一、模拟音频与数字音频的本质区别

声音在自然界是连续变化的压力波,麦克风将其转换为连续电压信号,这就是模拟音频。模拟信号的特点是时间与幅度都连续,容易受到线束干扰、接地噪声和长距离传输衰减的影响。车载环境中,发动机点火噪声、电机 PWM 干扰、电源波动都会耦合进模拟线,因此模拟音频通常只用于短距离的麦克风输入或功放输出级。

数字音频则是对模拟信号进行“采样 + 量化 + 编码”后的离散序列。它用一串数值表示每个时间点上的幅度,抗干扰能力强,便于存储、复制、混音和网络传输。车载主机内部、Audio HAL、CarAudioService 处理的几乎都是数字音频,只有在最后输出到功放或扬声器时才可能转回模拟形态。

核心结论:模拟音频关注“电压与阻抗”,数字音频关注“采样率、位深、声道布局与帧结构”。CarAudioService 的绝大多数配置项都作用于数字域。

二、采样率、位深与声道:三个决定音质与体积的参数

采样率(Sample Rate)表示每秒对模拟信号采样的次数,单位 Hz。根据奈奎斯特采样定理,采样率必须大于信号最高频率的两倍才能无失真还原。常见值包括 44.1 kHz(CD)、48 kHz(车载与专业音频主流)、96 kHz、192 kHz。车载系统通常以 48 kHz 为统一工作时钟,因为多数音源、蓝牙 A2DP、USB 音频和 DSP 都原生支持 48 kHz,可减少重采样带来的音质损失与 CPU 开销。

位深(Bit Depth)表示每个采样点用多少比特量化幅度,常见 16 bit、24 bit、32 bit。位深决定理论动态范围,16 bit 约 96 dB,24 bit 约 144 dB。车载环境本底噪声较高,16 bit 已能满足多数场景,但 24 bit 在混音和增益调整时能保留更多余量,避免削波。

声道(Channel)描述音频的空间布局。单声道 1.0、立体声 2.0、5.1、7.1 以及车载常见的 4.0、5.1.2 等。声道数直接影响 PCM 帧大小和总线带宽。CarAudioService 需要根据音源声道数与目标输出设备能力进行下混或上混。

参数常见取值影响车载典型选择
采样率44.1 / 48 / 96 kHz频率上限、重采样开销48 kHz 统一时钟
位深16 / 24 / 32 bit动态范围、量化噪声16 bit 播放,24/32 bit 内部混音
声道数1 / 2 / 6 / 8空间感、带宽、混音复杂度2.0 音源,4~8 声道输出
PCM 帧交错存储帧大小 = 声道数 × 位深/848 kHz/16 bit/2ch = 192 KB/s

三、PCM:数字音频最基础的表示形式

PCM(Pulse Code Modulation,脉冲编码调制)是最直接的数字音频编码方式:按固定采样率采样,每个采样点用固定位深表示,多声道数据按帧交错排列。它不压缩,保真度最高,是 WAV、AudioTrack、AudioFlinger 内部处理以及 Audio HAL 传输的常见格式。

一个 PCM 帧包含同一时刻所有声道的一个采样点。例如 48 kHz、16 bit、立体声,一帧为 4 字节,每秒数据量为 48000 × 4 = 192000 字节,约 1.5 Mbps。若换成 24 bit、8 声道,则每秒约 9.2 Mbps,对总线和内存带宽提出更高要求。

// PCM 帧结构示例:48 kHz / 16 bit / 2ch
// 每帧 4 字节:L16 | R16 | L16 | R16 ...
// 每秒 48000 帧,码率 = 48000 * 2 * 16 = 1,536,000 bps

// Android AudioTrack 最小缓冲区估算
minBuffer = sampleRate * channels * bytesPerSample * 20ms
          = 48000 * 2 * 2 * 0.02 = 3840 字节

四、车载音频链路的组成

车载音频链路可以按信号流向划分为:音源层、数字处理层、路由与混音层、输出层。音源层包括蓝牙、USB、在线音乐、TTS、导航播报、倒车雷达提示音等;数字处理层完成解码、重采样、格式转换;路由与混音层由 CarAudioService、AudioFlinger、AudioPolicy 负责,决定谁和谁混、走哪条输出;输出层包括 Audio HAL、DSP、功放和扬声器。

下面这张图展示了从音源到扬声器的完整信号链,以及 CarAudioService 在其中的位置。

车载音频链路:从音源到扬声器 音源层 蓝牙 / A2DP USB / 本地媒体 在线音乐 导航 / TTS 倒车雷达提示 麦克风 / 通话 报警音 / 提示音 数字处理层 解码 / 解封装 重采样 48 kHz 位深转换 16/24 声道下混 / 上混 PCM 帧组装 音量 / 增益 路由与混音层 CarAudioService 焦点 / 音量组 / 路由 AudioPolicy 策略 / 设备选择 AudioFlinger 混音 / 重采样 AudioTrack / Record 应用数据通道 音区 / 声场管理 Zone / 优先级 输出层 Audio HAL DSP / 音效处理 DAC 数模转换 功放 Amplifier 扬声器 / 头枕 模拟输出 / 数字功放 数字域:解码 → 重采样 → 位深转换 → 声道处理 → PCM 帧 → 混音路由 → HAL 模拟域:DAC 之后进入功放与扬声器,需关注阻抗、接地与噪声耦合

五、典型场景与参数配置案例

假设车机同时播放蓝牙音乐(44.1 kHz/16 bit/2ch)和导航 TTS(48 kHz/16 bit/1ch),输出设备为 48 kHz/16 bit/4ch 的功放。CarAudioService 需要完成以下动作:

  1. 将蓝牙音乐重采样到 48 kHz,保持 16 bit 和 2 声道。
  2. 将 TTS 单声道复制为双声道或按音区映射到指定声道。
  3. 根据焦点策略,导航播报时对音乐做 duck(闪避)而非直接暂停。
  4. 将两路 PCM 在 AudioFlinger 中混音为 4 声道输出,再交给 Audio HAL。
# 查看当前音频设备与采样率(示意)
adb shell dumpsys media.audio_flinger | grep -i "sample rate"
adb shell dumpsys car_service | grep -i "audio"

# 典型输出配置
output: primary
sampleRate: 48000
channelMask: 0x3 (立体声) / 0x33 (5.1)
format: PCM_16_BIT
frameCount: 960 (20ms @ 48kHz)

六、常见误区与复盘要点

误区一:采样率越高越好。车载系统统一 48 kHz 可减少重采样,盲目使用 96 kHz 会增加带宽与功耗,且最终仍可能被 DSP 降回 48 kHz。

误区二:位深只影响音量。位深影响的是动态范围和量化噪声,混音时使用 32 bit 浮点可避免多次增益调整导致的精度损失。

误区三:声道数只关乎“几个喇叭”。声道布局还决定下混矩阵、音区映射和延迟对齐,是 CarAudioService 路由策略的重要输入。

复盘时建议按“音源格式 → 处理链 → 输出格式”三段核对:每一段的采样率、位深、声道数是否匹配;不匹配处就是重采样、格式转换或混音发生的位置,也是排查杂音、断音、音量异常的第一入口。

掌握采样率、位深、声道与 PCM 的关系,再结合车载音频链路的四层结构,就能在 CarAudioService 中准确判断:音频数据从哪来、经过哪些处理、最终以什么格式送到哪个设备。这是后续学习音频焦点、音量组、音区管理和多音源混音的基础。