数字音频基础:采样定理、量化与编码、奈奎斯特频率、混叠效应、常见音频格式解析
各位同学,欢迎来到第一节课。
说实话,数字音频这块内容,看起来是基础,但很多做了两三年的工程师,遇到采样率选择、抗混叠滤波器设计时,还是会翻车。我当年刚入行时,就因为在ADC前少加了一级抗混叠滤波,结果调试了一周才发现是混叠噪声在作怪。嗯,这节课咱们就把这些坑一个个填平。
1. 采样定理:把连续信号变成离散点
数字音频的第一步,就是把连续的模拟信号,变成一串离散的采样点。这个过程叫采样。
你想想看,我们人耳听到的声音是连续的,但计算机只能处理离散的数字。怎么把连续变成离散?每隔一小段时间,抓一个瞬间的电压值。这个时间间隔,就是采样周期。
采样定理(也叫奈奎斯特-香农采样定理)告诉我们:如果信号的最高频率是 f_max,那么采样频率 f_s 必须大于 2 倍的 f_max。写成公式就是:
f_s > 2 * f_max
为什么是2倍?说白了,每个周期至少需要两个采样点,才能完整还原出波形。一个点只能知道振幅,两个点才能知道频率和相位。
核心结论:采样频率必须大于信号最高频率的两倍。这是数字音频的基石,没有商量的余地。
2. 奈奎斯特频率:那条不能越过的红线
奈奎斯特频率,就是采样频率的一半。公式很简单:
f_Nyquist = f_s / 2
这条线意味着什么?任何高于奈奎斯特频率的信号分量,都会被“折叠”回低频区域,变成虚假的信号。这就是混叠效应。
举个例子,CD音频的采样率是44.1kHz,奈奎斯特频率就是22.05kHz。人耳能听到的最高频率大约是20kHz,所以CD的采样率是够用的。但如果你用8kHz采样率去录一段包含5kHz成分的声音,奈奎斯特频率只有4kHz,5kHz的信号就会被折叠成3kHz的假信号。你听到的,已经不是原来的声音了。
避坑指南:我曾经在一个语音采集项目中,用了8kHz采样率,但麦克风前端没有做低通滤波。结果录出来的语音里,高频环境噪声全部混叠到了低频段,听起来像加了失真效果。从那以后,我每次选采样率,都会先确认信号带宽,再决定要不要加抗混叠滤波器。
3. 混叠效应:看不见的噪声杀手
混叠效应,说白了就是高频信号伪装成低频信号混进来。它不会像白噪声那样明显,但会破坏音质,让声音变得模糊、刺耳。
怎么解决?两个办法:
- 硬件抗混叠滤波器:在ADC之前,加一个低通滤波器,把高于奈奎斯特频率的成分滤掉。这是最可靠的方法。
- 过采样+数字滤波:先用很高的采样率(比如192kHz)采样,然后用数字低通滤波器滤除高频,再降采样到目标采样率。现代音频Codec基本都是这个思路。
我个人习惯,在项目初期就会把抗混叠滤波器的截止频率,设置在奈奎斯特频率的80%左右。留一点余量,避免滤波器滚降特性带来的边缘问题。
4. 量化与编码:把电压值变成二进制数
采样得到的是连续的电压值,但计算机只能存0和1。所以我们需要量化——把连续的电压值,映射到有限的离散电平上。
量化位数(bit depth)决定了有多少个离散电平。比如16位量化,就有2^16=65536个电平。24位量化,有2^24=16777216个电平。
| 量化位数 | 电平数 | 动态范围(理论) | 常见应用 |
|---|---|---|---|
| 8 bit | 256 | 48 dB | 早期电话、低端语音 |
| 16 bit | 65536 | 96 dB | CD、WAV标准 |
| 24 bit | 16777216 | 144 dB | 专业录音、混音 |
| 32 bit float | 浮动精度 | 极高 | DAW内部处理 |
量化会产生量化误差,也就是量化噪声。量化噪声的大小,取决于量化步长。步长越小,噪声越低。所以24位比16位更安静,动态范围更大。
我的经验:做嵌入式音频产品时,如果存储空间有限,用16位就够了。但如果是做录音笔或专业声卡,我建议至少用24位。因为后期处理时,16位的素材稍微拉一下增益,量化噪声就出来了。24位有足够的余量。
编码,就是把量化后的数值,按照一定的格式存起来。最简单的编码是PCM(脉冲编码调制),直接存每个采样点的数值。WAV文件就是PCM格式的一种封装。
5. 常见音频格式解析
工作中最常碰到的音频格式,我列几个:
- WAV:无损格式,直接存PCM数据。文件大,但质量最高。调试阶段我基本都用WAV,方便分析。
- MP3:有损压缩,利用人耳听觉的掩蔽效应,去掉人耳不敏感的频率成分。压缩比高,但音质有损失。
- AAC:比MP3更先进的压缩算法,同样码率下音质更好。苹果生态和YouTube都在用。
- FLAC:无损压缩,像zip一样压缩WAV,解压后完全还原。适合存档和高品质播放。
- OPUS:新一代编解码器,延迟低、音质好,适合实时通信和流媒体。
选格式时,我一般遵循这个原则:存储用FLAC,传输用OPUS或AAC,调试用WAV。MP3除非兼容性要求,否则我尽量不用。
6. 实际项目中的选择建议
最后,结合我自己的项目经验,给几个实用建议:
- 采样率怎么选?语音通信用8kHz或16kHz就够了。音乐播放用44.1kHz或48kHz。专业录音用96kHz或192kHz。别盲目追求高采样率,存储和带宽都是成本。
- 量化位数怎么选?消费级产品用16位。专业产品用24位。内部处理用32位浮点,避免累积误差。
- 抗混叠滤波器一定要加。不管是硬件还是软件,这条不能省。我见过太多因为省了这个滤波器,导致产品音质不达标的案例。
- 格式转换时注意重采样质量。低质量的重采样算法会引入失真。如果项目对音质要求高,用libsamplerate或SoX的高质量模式。
一句话总结:采样定理决定你能录多高的频率,量化位数决定你能录多安静的声音,格式选择决定你的产品能不能跑起来。这三件事,是数字音频的根基。
好了,这节课就到这里。下一节我们讲数字滤波器的基本原理,到时候我会带一个实际项目中用IIR滤波器做均衡器的案例。记得提前预习一下Z变换的基础知识。