1. 音频基础与Codec概述:声音的物理特性、数字音频采样与量化、奈奎斯特定理、Codec的定义与核心功能

1.1 声音到底是什么?——物理特性速览

做音频处理这么多年,我经常跟新人说一句话:你先把声音的物理本质搞明白,后面所有算法都是在这个基础上跳舞。

声音的本质是机械振动在介质(空气、水、固体)中传播的纵波。它有两个最核心的物理量:

  • 频率(Frequency):单位时间内振动的次数,单位Hz。人耳能感知的范围大约是20Hz~20kHz。低于20Hz叫次声波,高于20kHz叫超声波——嗯,Codec一般只关心人耳能听到的那段。
  • 振幅(Amplitude):振动的强度,决定了声音的响度。我们通常用声压级(SPL,单位dB)来衡量。

还有一个容易被忽略的概念——相位(Phase)。相位描述的是波形在时间轴上的位置。我在做多麦克风阵列波束成形时,相位差算错一点点,出来的声音就像从地底下冒出来一样,特别诡异。

一句话总结:频率决定音调,振幅决定响度,相位决定空间感。Codec要处理的,就是这三个维度的信息。

1.2 从模拟到数字:采样与量化

现实世界的声音是连续的模拟信号。但计算机只认0和1。所以我们必须做一件事:把连续的声波变成离散的数字序列。这个过程分两步:采样和量化。

1.2.1 采样(Sampling)

采样就是在时间轴上每隔一个固定的间隔取一个点。这个间隔的倒数就是采样率(Sample Rate),单位Hz。

常见的采样率有:

采样率 典型应用场景 我个人的看法
8 kHz 传统电话语音 够用但音质很“闷”,高频信息全丢了
16 kHz VoIP、语音识别 语音处理的黄金采样率,我大部分项目都用这个
44.1 kHz CD音质音乐 音乐行业的经典标准
48 kHz 影视、专业音频 视频帧率(24/30fps)容易对齐,做音视频同步时省心很多

1.2.2 量化(Quantization)

采样拿到了时间轴上的离散点,但每个点的幅度值还是连续的。量化就是把这些连续的幅度值映射到有限个离散的等级上。

量化精度用位深(Bit Depth)表示:

  • 16-bit:65536个量化等级,CD音质标准。动态范围约96dB。
  • 24-bit:16777216个量化等级,动态范围约144dB。录音棚常用。
  • 32-bit float:浮点表示,动态范围理论上无限大。我写算法原型时最爱用这个,不用担心溢出问题。

避坑提醒:量化一定会引入误差,这个误差叫量化噪声。我曾经在一个低功耗语音唤醒项目里,为了省存储空间把位深从16-bit砍到8-bit,结果唤醒率直接掉了15%。量化噪声把特征淹没了。后来我学乖了——位深可以降,但一定要先做噪声整形(Noise Shaping),把量化噪声推到人耳不敏感的高频段。

1.3 奈奎斯特定理:数字音频的“宪法”

你想想看,采样率到底设多少才够?是不是越高越好?

奈奎斯特(Nyquist)在1928年给出了答案:为了能从采样后的离散信号中无失真地恢复出原始连续信号,采样率必须至少是信号最高频率的两倍。

公式很简单:

f_s ≥ 2 × f_max

其中 f_s 是采样率,f_max 是信号中的最高频率分量。

这个 f_s/2 被称为奈奎斯特频率(Nyquist Frequency)。如果信号中有超过奈奎斯特频率的成分,就会发生混叠(Aliasing)——高频信号“伪装”成低频信号混进来,而且一旦混进来就再也去不掉了。

我的经验:实际工程中,我们不会卡着2倍的边界做。比如要处理20Hz~20kHz的音乐信号,采样率不会用40kHz,而是用44.1kHz或48kHz。为什么?因为抗混叠滤波器(Anti-aliasing Filter)不是理想砖墙滤波器,需要留出过渡带。我习惯留10%~20%的余量。

混叠的后果有多严重?我举个例子。有一次我在调试一个超声波测距模块,采样率设的是48kHz,但传感器出来的信号有30kHz的谐波。结果在频谱上30kHz被“折叠”到了18kHz(48-30=18),跟正常的音频信号混在一起,导致距离测量完全不准。后来加了一级硬件低通滤波器才解决。

1.4 Codec的定义与核心功能

好了,前面铺垫了这么多,终于到主角了。

Codec 是 Coder-Decoder(编码器-解码器)的缩写。在音频领域,它指的是一个完整的模拟-数字-模拟信号转换与压缩系统。

一个典型的音频Codec芯片内部长什么样?我画了一张图:

音频Codec内部架构图 模拟输入 麦克风/Line In PGA 可编程增益 ADC 模数转换 数字处理核心 采样率转换 数字滤波 编码/解码 DAC 数模转换 模拟输出 耳机/Line Out 数字接口 I²S / TDM 控制接口 I²C / SPI 时钟管理 PLL / 时钟分频 电源管理 LDO / 低功耗 说明: ADC(模数转换器)完成采样+量化,DAC(数模转换器)完成重建。 数字处理核心是Codec的“大脑”,负责采样率转换、数字滤波、编码压缩等关键任务。

从这张图可以看得很清楚,Codec的核心功能可以归纳为以下四点:

  1. 模数转换(ADC):把麦克风或Line In进来的模拟信号,经过PGA(可编程增益放大器)调整幅度后,送入ADC完成采样和量化,变成数字信号。
  2. 数模转换(DAC):把数字信号还原成模拟信号,驱动耳机或扬声器。
  3. 数字信号处理:这是Codec的“灵魂”。包括采样率转换(SRC)、数字滤波(如降噪、均衡)、音量控制、动态范围压缩等。我参与过一个TWS耳机的项目,Codec内部的数字降噪模块直接决定了最终产品的通话质量。
  4. 编码/解码:对数字音频进行压缩(如AAC、SBC、Opus)以减少传输带宽或存储空间。解码则是逆过程。

一个容易被忽略的点:Codec的时钟管理模块非常关键。ADC和DAC需要极其精准的时钟(通常来自PLL锁相环),时钟抖动(Jitter)会直接导致音质劣化。我曾经用示波器量过一个廉价Codec的MCLK,抖动高达200ps,出来的声音背景里总有一种“沙沙”的底噪。换成低抖动晶振后,问题立刻消失。

1.5 本章小结

这一章我们走完了从物理声波到数字Codec的完整链路。你想想看,一个麦克风捕捉到的微弱振动,经过PGA放大、ADC采样量化、数字核心处理、DAC重建,最后变成耳机里清晰的声音——这中间每一步都藏着几十年的工程智慧。

我个人觉得,理解采样和量化是入门,理解奈奎斯特定理是进阶,而真正理解Codec的架构和权衡(比如功耗 vs 音质、延迟 vs 压缩率),才算真正入了音频工程的门。