声音的 22 种看法:从波形到时频域的可视化全家桶
声音本质是个一维信号 —— 麦克风每秒采样几万次”此刻空气被推了多少”,串起来就是一条曲线。但这条曲线本身几乎没有信息可读 —— 哪怕是有经验的工程师,盯着原始波形也看不出”这段是 C 大调”还是”这是男声”还是”这是节奏 120 BPM 的鼓”。
所以过去 80 年里,人类发明了 20 多种把声音”看见”的方法,每一种都在做同一件事:把一维信号往二维(或三维)映射,让人脑能利用空间感知做模式识别。不同的映射方法保留 / 强调 / 损失不同的信息 —— 选哪一种取决于你想看到什么。
本文按 7 个 group 铺开这些可视化方案,每一种标注它在回答什么问题、适合什么场景、视觉上长什么样。配套的 声音可视化 Lab 已经实现 4 种,可以浏览器里实时玩;其余正在按 batch 补。
标记说明:
- [lab 可玩] — 已在 /tools/sound-vis/ 上线,可以麦克风/上传/合成音源实时体验。
- [待补] — 后续 batch 添加。
1. 时域类(time domain)—— 最朴素的”声音长什么样”¶
时域可视化直接看”声压随时间怎么变”。没有任何变换,所以信息密度低,但直觉性最高。
1.1 波形 Waveform [lab 可玩]¶
经典中的经典 —— 横轴时间、纵轴振幅(声压)。回答的问题:
- “这段音频有多响?响度怎么随时间变?”
- “这是 click 噪声还是连续音?”
- “有没有 clipping(削波,振幅打到 ±1)?”
视觉特征:上下对称的”毛刺图”。响的部分粗、安静的部分细。
→ 在 lab 里玩 — 启动麦克风后,4 种可视化 grid 同时显示,左上格就是波形 —— 对着麦克风说话能看到自己的声音”长出来”。
1.2 包络 Envelope [待补]¶
把波形的”外轮廓”画出来 —— 通常用 Hilbert transform、RMS、或者 peak follower 算。回答的问题:
- “声音的攻击 (attack)、衰减 (decay)、持续 (sustain)、释放 (release) 分别多长?”
- “这段音是渐强还是渐弱?”
视觉特征:一条平滑曲线(相对原始波形是一条剧烈震荡的边界)。乐器分析、声音设计的标配。
1.3 Lissajous(立体声相位) [lab 可玩]¶
两个声道(L 和 R)的瞬时值作为 (x, y) 坐标,画轨迹。回答的问题:
- “立体声的”宽度”有多大?“(散开 = 宽,聚集成线 = 窄)
- “L/R 是不是反相?“(反相会显示为水平线,单声道播放会完全抵消!)
- “MS (mid/side) 编码后中间有多少能量?”
视觉特征:抽象的发光轨迹。混音工程师用它检查”我这首歌在收音机里(强制 mono)会不会消失”。
→ 在 lab 里玩 — grid 的右下格就是 Lissajous,用”合成预置 / 音乐”会看到它因为是单声道叠加而显示为一条竖直线。
2. 频域类(frequency domain)—— “这段音由哪些频率组成”¶
时域看不出来”这是 440 Hz 的纯音”还是”这是 220 + 440 + 660 Hz 的复音”,但对人耳的感知而言,频率成分才是关键。
2.1 FFT 频谱 [lab 可玩]¶
对一段(典型 20-50ms)音频做 FFT,得到”每个频率上有多少能量”。频率轴通常画成对数刻度(接近人耳感知),纵轴画成 dBFS(对数刻度,0 dB = 满量程)。
回答的问题:
- “这段音的基频在哪?谐波结构是什么?”
- “有没有 60 Hz 工频干扰?有没有高频 hiss?”
- “EQ 调节后中频确实凹下去了吗?”
视觉特征:高低起伏的曲线,每个 peak 对应一个频率成分。
→ 在 lab 里玩 — grid 的右上格就是 FFT 频谱,吹口哨能看到一根明显的尖峰随音高移动。
2.2 长时平均频谱 LTAS [待补]¶
整段音频做 FFT 后平均起来,得到”这段音频整体的频率特征”。回答的问题:
- “这位歌手的音色集中在哪个频段?”
- “这间录音室的频率响应曲线长什么样?”
视觉特征:和 FFT 频谱类似,但更平滑(因为做了时间平均),用于”风格化指纹”分析。
3. 时频域(time-frequency)—— 最吃可视化的一组¶
时域有时间、没频率;频域有频率、没时间。真实声音两者都在变(一段歌的频率成分会随节拍变),所以需要”既看时间又看频率”的二维表示 —— 这就是时频域。
代价:必须做权衡(Heisenberg uncertainty principle 在 DSP 里也成立 —— 时间精度和频率精度互相挤压)。
3.1 Spectrogram(声谱图) [lab 可玩]¶
最经典的时频可视化。横轴时间、纵轴频率(通常对数)、颜色亮度即该时刻该频率的能量。底层是 STFT(short-time Fourier transform)—— 把音频切成短窗口、每窗口做 FFT、拼起来。
回答的问题:
- “这段语音是几个元音?元音之间的 formant 怎么移动的?”
- “鼓击在频谱上是从高频炸开的吗?”
- “鸟叫的旋律线条是什么形状?”
视觉特征:横向滚动的”热成像图”。是 ML 输入声音特征的事实标准。
→ 在 lab 里玩 — grid 的左下格是 Spectrogram,用麦克风对着键盘敲一下,能看到撞击声从高频炸下来的”瀑布”形状。
3.2 Mel-spectrogram [待补]¶
把 spectrogram 的频率轴从线性 Hz 换成 Mel scale —— 一种模拟人耳”对低频敏感、对高频钝感”的对数标度。回答的问题:
- 和 spectrogram 一样,但更接近人耳的”听感”分布。
- 现代音频 ML 模型(Whisper、Wav2Vec、AudioLM)几乎都用 Mel-spectrogram 作为输入。
视觉特征:低频被”拉伸”、高频被”压缩”,能量分布更均衡。
3.3 Constant-Q Transform (CQT) [待补]¶
STFT 的所有 bin 等宽(线性频率),所以在对数频率轴上显示时低频会拥挤、高频会稀疏。CQT 反过来:对数频率上每个 bin 等宽。结果是:每个八度的频率分辨率一致。
回答的问题:
- “这是和弦还是单音?“(CQT 上每个音都占同样的纵向高度)
- “音乐转调了没有?“(在 CQT 上转调只是整体上下平移)
视觉特征:和 spectrogram 类似,但音乐相关任务上明显更清晰。
3.4 Chromagram [待补]¶
把所有频率折叠到 12 个半音上(C, C#, D, D#, …, B),不管在哪个八度。横轴时间、纵轴 12 个 pitch class、颜色为能量。
回答的问题:
- “这首歌的和弦进行是什么?“(chromagram 上和弦显示为同时点亮的若干个 pitch class)
- “副歌在 1 和 2 是同一段吗?“(chromagram 模式重复 = 段落重复)
视觉特征:只有 12 行的密集色块图。是音乐结构分析的核心工具。
3.5 Reassigned spectrogram(重分配声谱图) [待补]¶
普通 spectrogram 的每个像素其实”涂抹”在一个时间-频率框里 —— 看不出框内的精确峰值。reassigned spectrogram 利用相位信息把每个能量点重新分配到它真正的中心位置。
回答的问题:
- “这两条非常近的频率线,到底是一条还是两条?”
- “这段瞬态(transient)的真正起点是哪一帧?”
视觉特征:边缘锐利得多,“涂抹”的能量被收紧成细线。音频取证 / 高分辨率分析专用。
4. 心理声学(perceptual)—— “人耳听起来怎么样”¶
物理意义的”响度”和”主观响度”是两件事 —— 把一段低频和一段高频调到同样的物理能量,人耳听起来低频明显更弱。这一组可视化把”客观信号”转换成”人耳维度”。
4.1 等响曲线 / A-weighting [待补]¶
国际标准 ISO 226 定义的等响曲线 —— 在不同频率上,多大物理声压能产生相同的主观响度(单位 phon)。A-weighting 是它的工程化简化版:一条加权曲线,按频率扣减不同的 dB 数。
回答的问题:
- “这段环境噪声的 dBA 值是多少?“(噪声治理、施工规范)
- “为什么我录的歌混音师说低频太多?“(低频虽然物理能量大,但听感上贡献小 —— A-weighting 一压低频就显示出比例失衡)
视觉特征:通常画为一条频率轴上的曲线(修正曲线),或把 dBFS 频谱”修正后”再画。
4.2 LUFS loudness meter [待补]¶
广播 / 流媒体行业的事实标准 —— ITU-R BS.1770 / EBU R128 定义的积分响度(integrated loudness),单位 LUFS(Loudness Units Full Scale)。结合了 K-weighting + 门限 + 时间积分。
回答的问题:
- “这首歌符合 Spotify 的 -14 LUFS 投递标准吗?”
- “动态范围(loudness range, LRA)够大吗?还是压缩过度?”
视觉特征:一个仪表盘 + 一条 LUFS 随时间变化曲线 + short-term / momentary / integrated 三个数。
5. 音乐结构(music structure)—— “这首歌的骨架”¶
针对音乐(不是一般声音)的可视化方案。回答的问题都是音乐学层面的:节奏、和声、段落。
5.1 Onset / Beat tracking [待补]¶
在波形上标注每一次”音符起始”(onset)和每一次”节拍点”(beat)的时刻。
回答的问题:
- “这首歌的 BPM 是多少?拍子稳不稳?”
- “鼓点的微调(micro-timing)是 swing 还是直线?”
视觉特征:波形 / spectrogram 上叠加竖线标注每个 onset / beat。
5.2 Tempogram [待补]¶
节奏的 spectrogram —— 横轴时间、纵轴 BPM、颜色为该时刻这个 BPM 假设的”支持度”。
回答的问题:
- “整首歌是匀速吗?哪里加速 / 减速了?”
- “这首爵士的节奏在 4/4 和 3/4 之间切换吗?”
视觉特征:和 spectrogram 类似,但纵轴单位是 BPM。
5.3 Self-Similarity Matrix (SSM) [待补]¶
把音频切成短帧、计算任意两帧之间的相似度,画成一个 N × N 的方阵。横纵轴都是时间。
回答的问题:
- “这首歌是 ABA、ABABCB 还是 verse-chorus 结构?”
- “副歌在哪里?过门在哪里?”
视觉特征:对角线一定是亮的(自己和自己最像),副歌重复段会显示为对角线之外的平行亮带或矩形块。是音乐信息检索(MIR)的经典工具。
5.4 Pitch contour / Melody extraction [待补]¶
只提取”主旋律”在每一时刻的音高,画成一条曲线(纵轴 Hz 或半音)。
回答的问题:
- “这位歌手的颤音(vibrato)多深?”
- “这段独唱的音准准不准?”
- “鸟叫的旋律走向是上升还是下降?”
视觉特征:一条在 spectrogram 上看起来”沿着最亮的脊”走的曲线。
6. 立体声 / 空间(spatial)—— “声音的左右、前后”¶
立体声(甚至环绕声)信息无法用单声道可视化承载。这组方案关注空间维度。
6.1 Stereo correlation meter [待补]¶
实时计算 L 和 R 的相关系数(-1 ~ +1),用一根指针或一条带形显示。
- +1 = 完全单声道(L 和 R 一样)
- 0 = 完全独立
- -1 = 完全反相(致命 —— 强制单声道会消失)
回答的问题:
- “我这首歌的立体声平衡安全吗?”
视觉特征:一根指针(类似仪表盘),通常配合 Lissajous 一起看。
6.2 Stereo spectrum / panorama [待补]¶
频谱图的”立体声”版本 —— 同一频率的能量在 L/R 上的分布,用颜色 / 位置编码。
回答的问题:
- “底鼓在中间、镲在两侧,符合期望吗?”
- “为什么这首歌”听起来很空”?“(可能是高频全在两侧、中间空了)
视觉特征:常见形态是横轴 L↔R panorama、纵轴频率、颜色为能量 —— 一种”声音的鸟瞰图”。
7. 进阶 / 前沿(advanced)—— 不常见但有意思¶
7.1 Wavelet scalogram [待补]¶
用 wavelet transform 替代 FFT 做时频分析。wavelet 在不同频率上自适应窗长(高频用短窗、低频用长窗),所以对瞬态信号(鼓击、咔哒声)的时间精度比 spectrogram 高得多。
视觉特征:和 spectrogram 类似,但瞬态部分边缘更锐利。在生物信号 / 心音 / EEG 上比 spectrogram 更常用。
7.2 Cepstrum / MFCC [待补]¶
对频谱再做一次 FFT —— 得到”频谱的频谱”(cepstrum)。MFCC(Mel-frequency cepstral coefficients)是它的 Mel 版本,传统 ASR(自动语音识别)的标准特征。
回答的问题:
- “这段语音的基频是多少?“(cepstrum 上的”高 quefrency 峰”对应基频)
- “这段语音的”音色”特征是什么?“(MFCC 前 13 个系数是音色的紧致表示)
视觉特征:横轴是”quefrency”(频率的倒数,单位是秒),纵轴是能量。
7.3 3D 瀑布图(3D waterfall) [待补]¶
把 spectrogram 立起来 —— 横轴时间、深度轴频率、高度轴振幅。
回答的问题:
- 和 spectrogram 一样,但高度维度让”哪个频率突出”更直观。
视觉特征:像一座声音”山脉”。常见于 VJ 演出、专业音频分析仪。
7.4 Autocorrelation [待补]¶
把信号和它自己的”延迟版本”相乘求和 —— 在周期性强的时刻会出现明显的 peak。
回答的问题:
- “这段音的基频是多少?“(最强 peak 的位置 = 基频周期)
- “这是周期性信号还是噪声?”
视觉特征:一条衰减的振荡曲线,peak 之间的距离反映周期性。
8. 一张表速查¶
| # | 名字 | 维度 | 适合场景 | 状态 |
|---|---|---|---|---|
| 1 | Waveform | 时域 | 响度、动态、clipping | lab |
| 2 | Envelope | 时域 | ADSR、声音设计 | 待补 |
| 3 | Lissajous | 时域 | 立体声相位、mono 兼容 | lab |
| 4 | FFT 频谱 | 频域 | 频率成分、谐波结构 | lab |
| 5 | LTAS | 频域 | 频率指纹、风格分析 | 待补 |
| 6 | Spectrogram | 时频 | 通用时频分析 | lab |
| 7 | Mel-spectrogram | 时频 | ML 输入、人耳感知 | 待补 |
| 8 | CQT | 时频 | 音乐分析(八度均匀) | 待补 |
| 9 | Chromagram | 时频 | 和弦、调性、段落 | 待补 |
| 10 | Reassigned spectrogram | 时频 | 高分辨率分析 | 待补 |
| 11 | A-weighting / 等响 | 心理声学 | 环境噪声、混音 | 待补 |
| 12 | LUFS meter | 心理声学 | 广播 / 流媒体响度合规 | 待补 |
| 13 | Onset / Beat | 音乐 | 节奏、BPM | 待补 |
| 14 | Tempogram | 音乐 | BPM 随时间变化 | 待补 |
| 15 | SSM | 音乐 | 段落结构、副歌定位 | 待补 |
| 16 | Pitch contour | 音乐 | 主旋律、颤音、音准 | 待补 |
| 17 | Stereo correlation | 空间 | 立体声安全检查 | 待补 |
| 18 | Stereo panorama | 空间 | 左右分布、声场宽度 | 待补 |
| 19 | Wavelet scalogram | 进阶 | 瞬态信号、生物信号 | 待补 |
| 20 | Cepstrum / MFCC | 进阶 | 基频、ASR 特征 | 待补 |
| 21 | 3D waterfall | 进阶 | 声音”山脉”视觉化 | 待补 |
| 22 | Autocorrelation | 进阶 | 周期性、基频估计 | 待补 |
9. 怎么玩¶
第一批 4 种已经能跑。三种音源:
- 麦克风 — 浏览器请求权限后实时采集(数据完全不离开你的设备)。
- 上传音频 — 拖一首 mp3 / wav / flac 进来。
- 合成预置 — 三段用 Web Audio 原生节点合成的示例(类语音 / 音乐 / 鼓点),零文件零依赖。
4 种可视化 grid 平铺同时显示 —— 同一段音频在不同”看法”下的样子一眼看全,建立直觉最快的方式。
10. 后续计划¶
按重要性 + 实现成本,下几批 batch 的顺序大致是:
- Batch 2(最常用):Mel-spectrogram、Chromagram、LUFS meter、Stereo correlation
- Batch 3(音乐导向):CQT、Onset/Beat、Tempogram、Pitch contour
- Batch 4(高级):SSM、Reassigned spectrogram、Wavelet scalogram、3D waterfall
- Batch 5(剩余):Envelope、LTAS、A-weighting、Stereo panorama、Cepstrum、MFCC、Autocorrelation
如果你对某个特别感兴趣或者发现 bug,可以提个 issue(github.com/nxdong/nxdong-astro),我会按反馈调优先级。
参考资料¶
- Müller, Fundamentals of Music Processing — 音乐信号处理的标准教材,chromagram / SSM / tempogram 都在此
- ITU-R BS.1770 — LUFS 标准
- ISO 226 — 等响曲线标准
- Smith, Introduction to the Mathematics of the Discrete Fourier Transform — STFT / windowing 入门
- Bello et al., A Tutorial on Onset Detection in Music Signals — onset/beat 经典综述
- Web Audio API — MDN 文档