2、数字音频基础:采样率、位深度、量化噪声、奈奎斯特定理、PCM编码原理

好,咱们正式开始聊数字音频。说实话,很多做音频开发的朋友,一开始就被这些概念绕晕了。什么采样率、位深度,听起来像天书。但这些东西,说白了就是数字音频的「命根子」。你搞不懂它们,后面做多声道系统,肯定要踩坑。

我当年刚入行时,就吃过这个亏。有一次做车载环绕声系统,客户说声音「发干」、「有毛刺」。我排查了半天,最后发现是采样率转换的环节出了问题。嗯,从那以后,我再也不敢小看这些基础概念了。

2.1 从模拟到数字:为什么要采样?

我们听到的声音,在自然界里是连续的。比如你说话,声带振动产生的声波,是一条光滑的曲线。这叫模拟信号。

但计算机不认连续的东西。它只认0和1。所以我们必须把这条连续的曲线,变成一串离散的数字。这个过程,就叫「模数转换」。

怎么转?核心就两步:采样量化

  • 采样:每隔一小段时间,记录一下声音的「瞬时值」。
  • 量化:把这个瞬时值,用二进制数字表示出来。

你想想看,就像用相机拍一段连续运动的视频。你每秒拍24张照片,虽然每张是静止的,但连起来播放,人眼就觉得是连续的。音频采样也是这个道理。

2.2 采样率:每秒拍多少张「照片」?

采样率,就是每秒采样的次数。单位是Hz(赫兹)。

常见的采样率有:

采样率 常见用途
8 kHz 电话语音
44.1 kHz CD音质
48 kHz DVD、电影、专业音频
96 kHz 高清音频、录音棚
192 kHz 超高保真、母带处理

我个人习惯,做多声道系统时,至少用48 kHz。为什么?因为人耳能听到的频率范围,大约是20 Hz到20 kHz。根据奈奎斯特定理,采样率至少要达到信号最高频率的两倍,才能无失真地还原。

核心公式:

采样率 ≥ 2 × 信号最高频率

所以,要记录20 kHz的声音,采样率至少得40 kHz。44.1 kHz和48 kHz,都留了一点余量。

2.3 奈奎斯特定理:为什么不能低于两倍?

这里要重点说一下奈奎斯特定理。很多初学者觉得,采样率只要比信号频率高一点不就行了?比如20 kHz的信号,我用25 kHz采样,行不行?

答案是:不行。绝对不行。

为什么会这样?因为会产生一种叫「混叠」的现象。简单说,就是高频信号被采样后,会伪装成低频信号,混进你的音频里。你听到的,就不是原来的声音了。

我记得有一次,一个同事调试一个音频采集模块,发现录出来的声音里总有「嗡嗡」的噪声。查了半天,发现是采样率设置低了,导致电源的50 Hz工频干扰混叠进了音频频带。嗯,这就是典型的混叠问题。

避坑指南:

我曾经在项目里遇到过,采样率刚好卡在2倍频率上,结果系统一有抖动,就出现失真。所以,我建议实际工程中,采样率至少留出10%-20%的余量。比如处理20 kHz信号,用48 kHz而不是44.1 kHz,会更安全。

2.4 位深度:每个「照片」有多少种颜色?

采样率决定了时间上的精度。位深度,则决定了幅度上的精度。

位深度,也叫量化精度。它表示每个采样点,用多少位二进制数来表示。

常见的位深度有:

  • 8 bit:256个等级。声音粗糙,有底噪。早期游戏机用过。
  • 16 bit:65536个等级。CD标准。动态范围约96 dB。
  • 24 bit:16777216个等级。录音棚标准。动态范围约144 dB。
  • 32 bit float:浮点数表示。动态范围极大,几乎不用担心削波。

位深度越高,声音的细节越丰富,动态范围越大。但文件体积也越大。

你想想看,16 bit就像用一支只有65536种颜色的画笔。画天空的渐变,可能会看到一条一条的色带。24 bit就像用1600万种颜色,渐变就平滑多了。

2.5 量化噪声:精度不够,噪声来凑

量化过程,本质上是一个「四舍五入」的过程。比如一个真实的电压值是3.14159 V,但你的量化器只能精确到0.01 V,那它只能记成3.14 V。这个误差,就是量化误差。

量化误差在频域上,表现为一种噪声,叫量化噪声

量化噪声的功率,只与位深度有关:

位深度每增加1 bit,信噪比提升约6 dB。

16 bit的信噪比 ≈ 16 × 6 = 96 dB

24 bit的信噪比 ≈ 24 × 6 = 144 dB

所以,为什么录音棚要用24 bit?因为要留出足够的「净空」,避免噪声淹没细节。我做环绕声混音时,如果素材是16 bit的,稍微拉一下增益,底噪就出来了。换成24 bit,就好很多。

小技巧:

在数字音频处理中,中间计算环节尽量用32 bit float。这样可以避免多次量化引入的累积误差。最后输出时,再dither(抖动)到目标位深度。这是专业音频软件的常规操作。

2.6 PCM编码原理:最朴素的数字音频格式

PCM,全称是Pulse Code Modulation,脉冲编码调制。它是数字音频最基础、最原始的编码方式。

说白了,PCM就是把采样和量化后的数据,直接按顺序存起来。没有压缩,没有花哨的算法。每个采样点,就是一个数值。

比如,一段立体声的PCM数据,它的存储顺序是:

左声道采样点1 | 右声道采样点1 | 左声道采样点2 | 右声道采样点2 | ...

这就是所谓的「交错存储」。多声道系统也是这个原理,只是声道数更多而已。

PCM的优点是:简单、无损、延迟低。缺点是:文件体积大。

举个例子,CD音质的PCM数据,每秒的数据量是:

44.1 kHz × 16 bit × 2 声道 = 1411.2 kbps

一首4分钟的歌,大约40 MB。这就是为什么后来出现了MP3、AAC这些压缩格式。

但在专业音频领域,PCM依然是核心。因为任何压缩格式,最终解码后都会还原成PCM数据,才能播放。你电脑声卡里跑的,就是PCM流。

2.7 多声道系统中的特殊考量

做多声道环绕声,这些基础概念会带来几个实际问题:

  1. 声道同步:所有声道的采样点,必须在同一时刻被采集或播放。否则,声音定位会漂移。我建议用同一个时钟源驱动所有ADC/DAC。
  2. 数据带宽:7.1声道,96 kHz,24 bit,每秒的数据量是:96k × 24 × 8 = 18.432 Mbps。USB 2.0勉强够,但USB 3.0更稳妥。
  3. 量化噪声的累积:多声道系统中,每个声道都有独立的量化噪声。如果处理不当,这些噪声会叠加,影响整体信噪比。

注意:

我曾经在一个项目中,用FPGA做多声道音频采集。因为时钟抖动(jitter)太大,导致不同声道的采样时刻不一致,最终定位效果一塌糊涂。后来换了低抖动的时钟芯片,问题才解决。所以,时钟质量在多声道系统中,比单声道重要得多。

2.8 总结一下

数字音频的基础,其实就这几个点:

  • 采样率决定频率范围,要遵守奈奎斯特定理。
  • 位深度决定动态范围和噪声底。
  • 量化噪声是不可避免的,但可以用高位深来压制。
  • PCM是最朴素的编码方式,多声道系统就是它的扩展。

嗯,这些概念看起来简单,但真正用好,需要大量的实践。我建议你,如果条件允许,可以自己写一个小程序,生成不同采样率和位深度的正弦波,然后播放对比一下。耳朵听到的,比书本上写的,要直观得多。

下一章,我们会聊到数字音频的传输接口。到时候,这些基础概念会派上大用场。