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的核心功能可以归纳为以下四点:
- 模数转换(ADC):把麦克风或Line In进来的模拟信号,经过PGA(可编程增益放大器)调整幅度后,送入ADC完成采样和量化,变成数字信号。
- 数模转换(DAC):把数字信号还原成模拟信号,驱动耳机或扬声器。
- 数字信号处理:这是Codec的“灵魂”。包括采样率转换(SRC)、数字滤波(如降噪、均衡)、音量控制、动态范围压缩等。我参与过一个TWS耳机的项目,Codec内部的数字降噪模块直接决定了最终产品的通话质量。
- 编码/解码:对数字音频进行压缩(如AAC、SBC、Opus)以减少传输带宽或存储空间。解码则是逆过程。
一个容易被忽略的点:Codec的时钟管理模块非常关键。ADC和DAC需要极其精准的时钟(通常来自PLL锁相环),时钟抖动(Jitter)会直接导致音质劣化。我曾经用示波器量过一个廉价Codec的MCLK,抖动高达200ps,出来的声音背景里总有一种“沙沙”的底噪。换成低抖动晶振后,问题立刻消失。
1.5 本章小结
这一章我们走完了从物理声波到数字Codec的完整链路。你想想看,一个麦克风捕捉到的微弱振动,经过PGA放大、ADC采样量化、数字核心处理、DAC重建,最后变成耳机里清晰的声音——这中间每一步都藏着几十年的工程智慧。
我个人觉得,理解采样和量化是入门,理解奈奎斯特定理是进阶,而真正理解Codec的架构和权衡(比如功耗 vs 音质、延迟 vs 压缩率),才算真正入了音频工程的门。