1. 课程导入

各位同学好,欢迎来到《声学特征提取工程化实践》的第一章。

做音频算法这些年,我见过不少新人一上来就扎进深度学习模型,结果连采样率和比特率都搞混。说实话,这就像盖楼不打地基——迟早要塌。今天我们就从最根本的东西聊起:声音到底是什么,以及怎么把它变成计算机能处理的数据。

1.1 声音的物理属性

声音的本质是机械振动在介质中的传播。说白了,就是空气分子被推来推去,形成疏密波,传到我们耳朵里。

描述一个声音信号,有三个核心参数:

  • 频率(Frequency):单位时间内振动的次数,单位是赫兹(Hz)。人耳能听到的范围大约是20Hz~20kHz。低于20Hz叫次声波,高于20kHz叫超声波——我们做语音处理,主要关注300Hz~3400Hz这个电话频段。
  • 振幅(Amplitude):振动的幅度,决定了声音的响度。振幅越大,声音越响。工程上我们通常用分贝(dB)来表示相对大小。
  • 相位(Phase):振动在时间轴上的起始位置,单位是角度(°)或弧度(rad)。相位单独听起来没啥感觉,但它决定了多个声波叠加后的结果——混音、波束成形都离不开它。

我的经验:刚入行时我总觉得相位不重要,直到有一次做双麦克风降噪,怎么调都消不掉低频噪声。后来发现是两个通道的相位差算反了,导致信号相长叠加。嗯,从那以后我再也不敢轻视相位了。

1.2 模拟信号与数字信号

自然界的声音是连续的模拟信号——你可以想象成一条光滑的曲线。但计算机只能处理离散的数字,也就是一串数值。所以我们需要把模拟信号转成数字信号,这个过程叫模数转换(ADC)。

反过来,播放声音时要把数字信号还原成模拟信号,这叫数模转换(DAC)。

两者的核心区别:

特性 模拟信号 数字信号
连续性 时间连续、幅值连续 时间离散、幅值离散
抗干扰 易受噪声影响 抗干扰能力强
存储 磁带、唱片 硬盘、内存
处理 模拟电路 CPU/DSP/GPU

小提示:你手机里的麦克风采集到的就是模拟信号,经过ADC芯片转换后才变成你看到的WAV文件。所以ADC芯片的质量直接决定了录音的底噪水平——这也是为什么专业录音棚的声卡那么贵。

1.3 采样定理与量化

把模拟信号变成数字信号,需要做两件事:采样和量化。

采样

采样就是在时间轴上每隔固定间隔取一个点。这个间隔的倒数就是采样率(Sample Rate),单位是Hz。

这里有个黄金法则——奈奎斯特采样定理:采样率必须大于信号最高频率的两倍,才能无失真地重建原始信号。

举个例子:人声最高频率大约8kHz,那么采样率至少要16kHz。CD音质的44.1kHz是怎么来的?因为人耳理论上能听到20kHz,两倍就是40kHz,再加点余量,就成了44.1kHz。

注意:如果采样率不够,会发生混叠(Aliasing)——高频信号会伪装成低频信号混进来,而且去不掉。我曾经在一个语音唤醒项目里遇到过这个问题:麦克风阵列的采样率设成了8kHz,结果高频噪声折叠到低频段,导致误唤醒率飙升。后来加了抗混叠滤波器才解决。

量化

采样得到的是时间上离散的点,但每个点的幅值还是连续的。量化就是把幅值也离散化——用有限个二进制数来表示。

量化精度用位深(Bit Depth)表示:

  • 8-bit:256个等级,噪声大,基本不用
  • 16-bit:65536个等级,CD音质标准
  • 24-bit:16777216个等级,录音棚常用
  • 32-bit float:浮点表示,动态范围极大,适合后期处理

量化会产生量化噪声——说白了就是真实值和量化值之间的误差。位深每增加1-bit,信噪比提升约6dB。16-bit的理论信噪比是96dB,已经超过人耳的动态范围了。

避坑指南:我曾经在嵌入式设备上为了省内存,把音频从16-bit降到8-bit。结果语音识别准确率直接掉了15%。量化噪声把特征淹没了。所以做特征提取时,我建议至少保留16-bit,除非你明确知道自己在做什么。

1.4 音频文件格式概述

数字音频存成文件,主要分两类:无损格式和有损格式。

格式 类型 特点 常见用途
WAV 无损 PCM编码,文件大,无压缩 音频处理、科研数据
FLAC 无损 压缩比约2:1,开源 音乐存档、发烧友
MP3 有损 感知编码,压缩比高 音乐播放、网络传输
AAC 有损 比MP3效率更高 视频流、Apple生态
OGG 有损/无损 Vorbis编码,开源 游戏、开源项目

做声学特征提取,我个人最推荐WAV格式。为什么?因为它不压缩、不丢信息,而且解析起来最简单——文件头+裸PCM数据,读出来就是原始采样点。你想想看,如果输入数据本身就有损,那提取出来的特征还能准吗?

WAV文件的结构大致如下:

RIFF头 (12字节)
  └── "RIFF" + 文件大小 + "WAVE"
fmt块 (24字节)
  └── 音频格式、声道数、采样率、字节率、块对齐、位深
data块 (变长)
  └── 实际的PCM采样数据

读WAV文件时,我建议你关注三个字段:采样率、位深、声道数。这三个参数决定了后续所有处理流程的参数设置。

小技巧:如果你用Python做音频处理,scipy.io.wavfile.read() 和 soundfile.read() 是最常用的两个库。前者轻量,后者支持更多格式。我个人习惯用soundfile,因为它能直接返回float类型的数组,省去自己归一化的步骤。

本章知识体系

下面这张图把本章的核心概念串起来了,你可以对照着回顾一下:

音频基础与数字信号入门 · 知识体系 声音的物理属性 • 频率 (Hz) • 振幅 (dB) • 相位 (°/rad) 人耳范围: 20Hz ~ 20kHz 模拟 → 数字 • 模拟信号 (连续) • ADC / DAC • 数字信号 (离散) 计算机只能处理数字 采样 & 量化 • 采样率 (Hz) • 奈奎斯特定理 • 位深 (bit) 量化噪声 ≈ 6dB/bit 音频文件格式 • 无损: WAV, FLAC • 有损: MP3, AAC, OGG 特征提取首选 WAV 工程实践要点 抗混叠 · 位深选择 · 格式解析 核心原则 采样率 > 2 × 最高频率

从这张图可以看得很清楚:声音的物理属性是基础,经过采样和量化变成数字信号,然后以特定文件格式存储。每一步都有坑,每一步也都有对应的工程实践技巧。

好了,第一章就到这里。记住这些基础概念,后面讲傅里叶变换、MFCC、滤波器组的时候,你会感谢今天认真看完了这一章。