音频在计算机里是一串数字:麦克风每秒采几万次,得到一条长长的波形(waveform)。把它直接丢给模型并非不行,但大多数语音系统的第一层做的其实是另一件事——先把这条波形变成一张图,叫梅尔频谱图(Mel Spectrogram)。
一句话定义
梅尔频谱图是一张"时间 × 频率"的二维图:横轴是时间,纵轴是按人耳感知规律排布的频率,颜色深浅代表该频率在该时刻的能量强弱。
它是怎么来的
可以把这个过程想成"把一锅声音熬成高汤块":
1. 分帧:把波形切成一小段一小段,通常每段二三十毫秒,相邻段之间留十毫秒左右的步长。太短看不清频率,太长又会把快速变化抹平。
2. 傅里叶变换(Fourier Transform,工程上多用其快速算法 FFT):对每一小段算出里面有哪些频率成分、各有多强。
3. 过梅尔滤波器组(mel filterbank):这是最关键的一步。人对 100 Hz 和 200 Hz 的差别很敏感,对 5000 Hz 和 5100 Hz 几乎听不出来。所以频率刻度不再用均匀的赫兹,而改用"等听觉距离"的梅尔刻度——低频切得细,高频切得粗。就像地铁线路图按站数画,不按实际公里数画。
4. 取对数压缩:把能量取 log,一来贴近人对响度的感知,二来收窄动态范围,模型更容易学。
结果就是一张几十到上百行的矩阵,模型把它当成单通道图片处理。
和相邻概念的区别
| 表示 | 形态 | 保留了什么 | 丢了什么 | 常见用途 |
|---|---|---|---|---|
| 波形 waveform | 一维,每秒上万点 | 相位与全部细节 | —— | 端到端模型、音频生成 |
| 线性频谱图 spectrogram | 二维,频率轴均匀 | 精细频率结构 | 相位 | 信号分析 |
| 梅尔频谱图 | 二维,频率轴按感知压缩 | 感知上重要的信息 | 相位、高频细节 | 语音识别/合成/音频分类的默认输入 |
| MFCC | 二维,几十维系数 | 更浓缩的谱包络 | 更多细节 | 传统语音识别、说话人识别 |
MFCC(Mel-Frequency Cepstral Coefficients)是在梅尔频谱图上再做一步变换得到的,维度更低。神经网络兴起后,大家发现梅尔频谱图信息更全、更适合卷积和 Transformer,于是它成了主流。
为什么不直接喂波形
波形看起来"信息最全",但对模型很不友好:一是太长,一秒就上万个数,序列长度爆炸;二是同一个音素换个说话人、换个音高,波形差异巨大,模型得从零学出频率概念;三是相位对识别帮助有限,却要消耗大量建模能力。梅尔频谱图相当于把"人耳的物理先验"提前塞进输入,让模型专注学语音内容本身。当然,数据量足够大时,直接吃波形的端到端模型也有不错表现,两条路线长期共存。
对从业者的实际意义
- 调参就是调输入:采样率、帧长、帧移、梅尔滤波器个数、频率上下限,换一组参数等于换了一种输入表示。训练和推理必须用同一套,否则分布不匹配,效果会掉得很明显。具体默认值各框架不同,以官方文档为准。
- 语音识别、语音合成、歌声合成、音频分类、关键词唤醒,第一层几乎都是它或它的变体。
- 对普通人来说,它的直观含义是:语音助手"听到"的从来不是你的声音本身,而是一张被压扁、按人耳偏好裁剪过的声纹图。这也解释了为什么有些人耳里很明显的差别,模型却容易搞混——在那张图里,某些细节本来就没留下来。
