1. 音频信号基础:声音的物理特性

各位同学,欢迎来到《音频算法系统化学习》的第一章。我是你们这门课的主讲,一个在音频算法领域摸爬滚打了十几年的工程师。今天咱们不聊虚的,直接切入正题——声音到底是个什么东西?

你可能会说:“声音不就是耳朵听到的东西吗?”没错,但从算法工程师的角度看,声音就是一连串随时间变化的空气压力值。说白了,就是空气分子在那儿推来推去。我刚开始接触这个领域时,总觉得这些基础概念太简单,结果后来在做一个降噪算法时,因为对相位理解不透彻,折腾了整整两周才找到bug。嗯,从那以后我再也不敢小看这些基础了。

1.1 声音的三大物理属性:频率、振幅、相位

任何一个声音信号,都可以用三个基本参数来描述。你想想看,就像描述一个人需要身高、体重、年龄一样,描述一个纯音(单一频率的声音)也需要三个维度。

物理属性 单位 人耳感知 数学表示
频率 Hz(赫兹) 音调高低 f = 1/T
振幅 dB(分贝)或Pa(帕斯卡) 响度大小 A(峰值幅度)
相位 rad(弧度)或°(度) 声音的起始位置/空间感 φ(初始相位角)

频率决定了声音有多“尖”或多“沉”。20Hz到20kHz是人耳能听到的范围,低于20Hz叫次声波,高于20kHz叫超声波。我在做车载音频系统时,遇到过一个问题:发动机的轰鸣声主要在50-200Hz,而风噪则集中在1-4kHz。搞清楚这些频率分布,才能有针对性地做降噪处理。

振幅决定了声音有多“响”。但要注意,人耳对响度的感知是非线性的——这就是为什么我们用分贝(dB)这个对数单位。每增加10dB,人耳感觉到的响度大约翻一倍。我建议你记住几个参考值:0dB是听阈,60dB是正常交谈,120dB是痛阈。

相位这个属性,说实话,很多初学者容易忽略。相位描述的是波形在时间轴上的偏移量。两个同频率的信号,如果相位相反(相差180°),叠加后会相互抵消——这就是主动降噪(ANC)的基本原理。我曾经在一个多麦克风阵列项目中,因为忽略了麦克风之间的相位差,导致波束成形的效果一塌糊涂。避坑指南:处理多通道音频时,永远先检查相位对齐。

核心公式:一个纯音信号可以表示为:s(t) = A · sin(2πft + φ)

其中 A 是振幅,f 是频率,φ 是初始相位,t 是时间。

1.2 时域与频域:看问题的两种视角

做音频算法,最核心的思维转变就是学会在时域和频域之间自由切换。说白了,时域看的是“信号随时间怎么变”,频域看的是“信号由哪些频率成分组成”。

我个人的习惯是:处理瞬态问题(比如爆破音、敲击声)时优先看时域;处理稳态问题(比如嗡嗡的噪声、乐器的音色)时优先看频域。

时域波形直观易懂——横轴是时间,纵轴是幅度。但它的信息密度很低。举个例子,一段1秒钟的语音,时域上就是一条弯弯曲曲的线,你很难看出它包含了哪些频率。

频域就不一样了。通过傅里叶变换,我们可以把时域信号拆解成不同频率的正弦波分量。频域图上,横轴是频率,纵轴是幅度(或能量)。这时候,噪声的分布、信号的谐波结构一目了然。

我的经验:刚开始学频域时,别急着啃傅里叶变换的数学推导。先学会“看频谱图”——能看出哪个频率能量大、哪个频率有噪声,这就够了。数学推导可以后面慢慢补。

时域和频域之间通过傅里叶变换(FT)连接。对于计算机处理的离散信号,我们用的是离散傅里叶变换(DFT),而快速傅里叶变换(FFT)是它的高效实现算法。这个我们后面章节会详细讲。

1.3 采样定理与量化:从模拟到数字

现实世界的声音是连续的模拟信号,但计算机只能处理离散的数字信号。把模拟信号变成数字信号,需要经过两个步骤:采样和量化。

采样是在时间轴上把连续信号离散化——每隔一个固定的时间间隔取一个样本值。这个时间间隔的倒数就是采样率(Sample Rate),单位是Hz。

量化是在幅度轴上把连续的取值离散化——把无限多种可能的幅度值映射到有限个量化等级上。量化等级数由位深(Bit Depth)决定,比如16位量化就有65536个等级。

参数 常见取值 说明
采样率 44.1 kHz(CD)、48 kHz(视频)、96 kHz(高保真) 每秒采集的样本数
位深 16 bit(CD)、24 bit(专业音频)、32 bit float(处理) 每个样本的精度
声道数 1(单声道)、2(立体声)、5.1/7.1(环绕声) 独立音频通道数量

举个例子,CD音质的参数是44.1kHz采样率、16位量化、立体声。这意味着每秒采集44100个样本,每个样本用16位二进制数表示,左右声道各一路。数据量算一下:44100 × 16 × 2 = 1,411,200 bps ≈ 1.41 Mbps。

注意:量化会产生量化噪声。位深每增加1 bit,信噪比(SNR)提升约6 dB。16位量化的理论SNR是96 dB,24位是144 dB。这就是为什么专业录音都用24位——给后期处理留足余量。

1.4 奈奎斯特频率:采样定理的核心

采样定理(也叫奈奎斯特-香农采样定理)是数字信号处理的基石。它的核心思想是:为了能从采样后的离散信号中无失真地恢复出原始连续信号,采样率必须至少是信号最高频率的两倍。

这个“最高频率的两倍”就是奈奎斯特频率(Nyquist Frequency)。公式很简单:

奈奎斯特频率: fNyquist = fs / 2

其中 fs 是采样率。

为什么会这样?你想想看,采样就是在时间轴上“打点”。如果采样率太低,一个周期内只采到一两个点,你根本分不清这个信号是高频还是低频——这就是混叠(Aliasing)现象。

我在做音频效果器插件时,遇到过混叠问题。当时写了一个失真效果器,没做抗混叠滤波,结果出来的声音里出现了很多刺耳的高频伪影。后来加了一个低通滤波器,在失真处理之前先把高于奈奎斯特频率的成分滤掉,问题就解决了。

实际工程中,我们通常不会卡着奈奎斯特频率用。比如人耳能听到20kHz,CD采样率选44.1kHz而不是40kHz,就是为了留出过渡带,让抗混叠滤波器更容易设计。我建议你记住这个经验法则:采样率至少是信号最高频率的2.5倍,这样比较安全。

// 一个简单的混叠演示(伪代码)
// 假设采样率 fs = 1000 Hz,奈奎斯特频率 = 500 Hz
// 输入一个 600 Hz 的信号(高于奈奎斯特频率)
// 采样后,这个信号会被“折叠”到 400 Hz(fs - 600 = 400 Hz)

float fs = 1000.0;
float f_signal = 600.0;  // 原始信号频率
float t = 0.0;
for (int n = 0; n < 100; n++) {
    t = n / fs;
    float sample = sin(2 * PI * f_signal * t);
    // 实际听到的会是 400 Hz 的信号,而不是 600 Hz
    printf("采样点 %d: %f\n", n, sample);
}

1.5 知识体系总览

下面这张图总结了本章的核心知识结构。我建议你把它当作一个思维导图来记——每个概念都不是孤立的,它们之间有着紧密的逻辑关系。

音频信号基础 - 知识体系结构图 音频信号基础 频率 (Hz) 振幅 (dB/Pa) 相位 (rad/°) 时域分析 频域分析 采样 (Sampling) 量化 (Quantization) 奈奎斯特频率 混叠 (Aliasing) 抗混叠滤波 FFT / DFT 核心逻辑:物理属性 → 分析视角 → 数字化处理 → 工程实践

这张图从中心向外展开:先理解声音的三大物理属性,然后掌握时域和频域两种分析视角,接着学习如何把模拟信号数字化(采样、量化、奈奎斯特频率),最后延伸到工程中会遇到的关键问题(混叠、抗混叠滤波、FFT)。每一层都是下一层的基础,环环相扣。

学习建议:这一章的概念比较多,但别急着一次性全记住。我的方法是:先理解“频率、振幅、相位”这三个词到底在说什么,然后搞清楚“采样率不够高会发生什么”。这两个点抓住了,后面的内容自然就串起来了。

好了,第一章的内容就到这里。这些基础概念会贯穿整个课程,后面每一章都会用到。如果你现在觉得有些地方还不太清楚,没关系——先有个印象,等后面用到的时候再回来翻翻,效果会更好。