数字化:采样、量化与信噪比
前几篇讲的都是”连续世界”的声波。计算机里没有连续函数,只有一串数字。把声波变成数字要经过两步:采样(每隔固定时间取一个值)和量化(把连续值四舍五入到有限等级)。这一篇把这两步的数学完全展开,并推导出数字音频最重要的公式之一:量化信噪比 ≈ 6.02N + 1.76 dB。
1. 采样:把连续变成离散
1.1 采样过程
设采样率为 (每秒取多少个点),采样间隔为:
连续信号 变成离散序列:
图里:
- ① 是原始连续波形;
- ② 是每隔固定间隔取的点(圆点);
- ③ 是用平滑曲线把这些点”重建”出来的波形。
关键问题是:③ 和 ① 一定一样吗?
1.2 反例:采样点不够多
如果两个不同频率的正弦波恰好都在采样点上取值相同,重建时就会分不清谁是谁。比如每秒采 10 个点,3 Hz 和 7 Hz 的正弦波在某些采样时刻可能完全重合(7 Hz 是 Hz,采样后会”伪装”成 3 Hz)。
这就是混叠(aliasing):高频信号被错误地重建为低频。
2. 采样定理:
2.1 直觉版本
一个周期内至少要采两个点,才能区分”波峰”和”波谷”。所以采样率必须至少是最高频率的两倍:
叫奈奎斯特频率(Nyquist frequency):
2.2 频域版本(严格推导)
要严格证明,需要傅里叶变换(系列第 5 篇)。这里给出推导思路:
采样可以看成原信号 乘以一个”梳状脉冲串” 。时域相乘 = 频域卷积。脉冲串的频谱是一串间距为 的冲击,所以采样后信号的频谱是原频谱以 为周期无限复制:
如果原信号最高频率 ,这些副本互不重叠,我们用一个理想低通滤波器(截止 )就能取出中间的副本,完全恢复原信号。
如果 ,副本重叠,高频能量”折叠”进低频区,混叠发生。折叠后的伪频率:
2.3 抗混叠滤波器
真实录音时,先经过模拟低通滤波器把高于 的成分滤掉,再采样。这个滤波器叫抗混叠滤波器。44.1 kHz 采样率对应 22.05 kHz 截止,刚好覆盖 20 kHz 听觉上限。
3. 量化:把连续值”阶梯化”
3.1 为什么需要量化
采样得到的值是任意实数,计算机只能存有限位数的整数(如 16 bit 能表示 个值)。把连续值映射到最近等级的过程叫量化。
3.2 量化阶梯
设满量程为 ,位深 ,等级数为 ,量化步长为:
图里橙色阶梯是量化后的结果,蓝色虚线是原始波形。可以清楚看到:
- 原始波形是光滑曲线;
- 量化后变成台阶;
- 台阶和曲线之间的差就是量化误差,范围约为 。
3.3 量化误差 = 噪声
量化误差在每个样本上近似随机、均匀分布在 。它听起来像”嘶嘶”的底噪,所以也叫量化噪声。
4. 量化信噪比:6.02N + 1.76 dB 的推导
4.1 信号功率
假设信号是满量程正弦波,振幅 ,RMS 为:
信号功率(平方):
4.2 量化噪声功率
量化误差均匀分布在 。均匀分布的方差是:
所以噪声功率:
4.3 信噪比
信噪比(SNR)定义为信号功率与噪声功率之比:
转成分贝:
代入数值:
得到最终公式:
这个公式的意义:
- 每增加 1 bit,动态范围提高约 6 dB;
- 16 bit → 约 96 dB;
- 24 bit → 约 145 dB;
- 32 bit float → 动态范围远超实际需要。
5. 实际数字音频参数
| 格式 | 采样率 | 位深 | 动态范围 | 用途 |
|---|---|---|---|---|
| 电话 | 8 kHz | 8 bit | ~50 dB | 语音 |
| 广播 | 32 kHz | 12–16 bit | ~96 dB | 早期广播 |
| CD | 44.1 kHz | 16 bit | ~96 dB | 音乐发行 |
| DVD/高清 | 48 kHz | 24 bit | ~145 dB | 电影、游戏 |
| 高解析 | 96/192 kHz | 24 bit | ~145 dB | 录音棚母带 |
浏览器 AudioContext 内部通常按 44.1 或 48 kHz、浮点 32 bit 处理,动态范围足够,所以浏览器端基本不用担心量化噪声,混叠反而更值得注意。
6. 与可视化的关系
6.1 播放器从哪里拿到数字
播放器用 AnalyserNode 从播放中的音频实时取一段采样(默认 1024 点),这段数据就是本篇讲的 。FFT(下一篇)再把它变成频谱。
6.2 噪声门与底噪
量化噪声虽然小(16 bit 约 −96 dBFS),但经过 RMS 计算后静音段仍会有微弱底噪。播放器的噪声门:
本质上是把”低于底噪阈值”的能量清零,防止地形在静音时乱动。
6.3 采样率对频谱分辨率的影响
FFT 的每个 bin 频率间隔:
、 时, Hz。这个分辨率由采样率和 FFT 长度共同决定,与量化无关。
7. 小结
- 采样:每隔 取一个点;
- 采样定理:,否则混叠;
- 混叠本质是频谱复制后重叠,伪频率 ;
- 量化:连续值映射到 个等级,步长 ;
- 量化噪声功率 ,正弦波信噪比 dB;
- 16 bit ≈ 96 dB,24 bit ≈ 145 dB。
下一篇《频域入门与 DFT》终于进入频域:为什么任意信号能分解成正弦波、内积和正交性、以及 DFT 公式的逐步推导和手算例子。
8. 深入专题:量化误差、抖动、过采样与常见误区
量化看起来只是”四舍五入”,但里面的细节足以影响专业音频质量。这一节讲量化误差长什么样、抖动(dither)和过采样(oversampling)为什么有用,并用手算例子加深理解。
8.1 量化误差逐点演示
图里:
- 蓝色虚线是原始正弦;
- 橙色阶梯是量化结果;
- 红色折线是两者之差(放大显示)。
可以观察到:
- 误差始终在 内;
- 误差方向”随机”交替,近似均匀分布;
- 信号变化慢时误差变化也慢(阶梯平坦段)。
8.2 量化噪声与抖动(dithering)
问题:量化误差其实不是完全随机的——它对低频信号有相关性。一个缓慢变化的信号,误差会在某些采样点”卡”在同一台阶,形成可听的低频失真,甚至让微弱信号变成”咔哒”声。
解决办法是抖动(dither):在量化前加一点微小的随机噪声:
抖动把量化误差”去相关”,让它变成真正的白噪声,听起来是均匀的”嘶嘶”,而不是失真的”嗡嗡”。代价是底噪稍微升高,但听感大幅改善。
更高级的做法是噪声整形(noise shaping):把量化误差反馈回去,把噪声推到人耳不敏感的高频段,让 16 bit 的实际听感接近 20 bit。
8.3 过采样(oversampling)为什么有用
过采样:用远高于奈奎斯特的频率采样(如 96 kHz、192 kHz),再在数字域降回目标采样率。
好处:
- 抗混叠更简单:模拟滤波器不需要在 20 kHz 处急剧截止,数字滤波器可以做到;
- 量化噪声被摊薄:同样位深,过采样后噪声分布到更宽的频带,听频带内噪声密度降低;
- 数字处理更干净:非线性处理(如限幅、失真)会产生高频谐波,过采样给它们留出空间,避免混叠回听频带。
播放器内部一般固定 44.1/48 kHz,但专业音频处理(均衡、压缩)常用 4× 或 8× 过采样。
8.4 8-bit 手算例子
设满量程 (8 bit 等级 0–255),信号采样值:
量化步长 (每个整数一个等级),四舍五入:
| 原始 | 量化 | 误差 |
|---|---|---|
| 0.4 | 0 | −0.4 |
| 1.7 | 2 | +0.3 |
| 3.2 | 3 | −0.2 |
| 5.1 | 5 | −0.1 |
| 6.8 | 7 | +0.2 |
| 5.4 | 5 | −0.4 |
| 3.1 | 3 | −0.1 |
| 1.2 | 1 | −0.2 |
误差都落在 。误差平方和:
平均误差功率 ,接近理论值 (样本少所以有偏差)。这就是”量化噪声功率 “的来源。
8.5 常见误区
误区一:“采样率越高越好,24 bit 一定比 16 bit 好听”
高采样率/高位深只提供潜力。如果原始录音本身有噪声、压缩过狠,或者回放设备平庸,高参数听不出来。而且高采样率文件更大。
误区二:“混叠只在录音时发生,播放端不用担心”
播放端做数字处理(变速、失真、均衡)同样会产生高于奈奎斯特的分量,处理后再输出就会混叠。所以专业插件都做内部过采样。
误区三:“16 bit 的 -96 dB 底噪听不见”
在安静环境下、用高保真设备、播放微弱的结尾渐弱时,-96 dB 的量化底噪是可以感知的。这也是为什么录音用 24 bit。
误区四:“把音量调小就不会削波”
削波发生在信号链内部:如果内部某个节点(如混音总线)已经超过 0 dBFS,后面把主音量调小并不能修复已经被削掉的波形。
误区五:“FFT 的 bin 频率是连续的”
FFT 只能给出离散 bin 上的频率,bin 之间没有信息(除非做插值或更多点)。分辨率 。
8.6 扩展练习
- 用 8 个采样值手算 4-bit 量化的误差,验证误差范围。
- 为什么抖动能让量化误差”更随机”?用误差相关性的角度解释。
- 48 kHz 采样、32 点 FFT,相邻 bin 间隔是多少 Hz?
- 过采样 4 倍后,同一 16 bit 系统的听频带内噪声密度下降多少 dB?
练习
- 采样率 48 kHz,奈奎斯特频率是多少?能无混叠录制的最高频率是多少?
- 16 bit 量化步长是满量程的多少分之一?
- 用 和 重新推导 6.02N + 1.76。
- 为什么 32 bit 浮点格式的动态范围远超 24 bit 整数?