2. 车载音频系统基础
车载音频系统的所有功能,最终都落在一条从“声音”到“扬声器”的链路上。理解这条链路,需要先掌握音频信号的几个基本参数:采样率、位深、声道数与 PCM 编码。它们决定了音频数据的体积、保真度以及后续在 CarAudioService 中的路由与混音方式。
一、模拟音频与数字音频的本质区别
声音在自然界是连续变化的压力波,麦克风将其转换为连续电压信号,这就是模拟音频。模拟信号的特点是时间与幅度都连续,容易受到线束干扰、接地噪声和长距离传输衰减的影响。车载环境中,发动机点火噪声、电机 PWM 干扰、电源波动都会耦合进模拟线,因此模拟音频通常只用于短距离的麦克风输入或功放输出级。
数字音频则是对模拟信号进行“采样 + 量化 + 编码”后的离散序列。它用一串数值表示每个时间点上的幅度,抗干扰能力强,便于存储、复制、混音和网络传输。车载主机内部、Audio HAL、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 帧 | 交错存储 | 帧大小 = 声道数 × 位深/8 | 48 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 在其中的位置。
五、典型场景与参数配置案例
假设车机同时播放蓝牙音乐(44.1 kHz/16 bit/2ch)和导航 TTS(48 kHz/16 bit/1ch),输出设备为 48 kHz/16 bit/4ch 的功放。CarAudioService 需要完成以下动作:
- 将蓝牙音乐重采样到 48 kHz,保持 16 bit 和 2 声道。
- 将 TTS 单声道复制为双声道或按音区映射到指定声道。
- 根据焦点策略,导航播报时对音乐做 duck(闪避)而非直接暂停。
- 将两路 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 中准确判断:音频数据从哪来、经过哪些处理、最终以什么格式送到哪个设备。这是后续学习音频焦点、音量组、音区管理和多音源混音的基础。