声音是空气的振动。把这种振动按固定间隔测量(采样),按规定的格子记录下来(量化),切成短段(窗),分解出混有哪些高低的振动(傅里叶变换),再用像人耳一样把低音看得更细的刻度重新归并(梅尔),就得到了神经网络能读取的数字矩阵。所有声音都在本页直接合成。
扬声器的振膜前后振动时,空气会反复变密、变疏,并向外传播。每秒振动多少次决定音的高低(频率),振动幅度多大决定声音的大小(振幅)。
测量次数 ≥ 2 × 最高频率Shannon, 1949
要正确记录振动,每振动一次至少要测量两次。每秒测量 fs 次,就只能记录到 fs/2 Hz(奈奎斯特极限),比这更快的振动会被错看成较慢的振动(混叠) [R1]。人耳大约能听到 2 万 Hz,所以音乐 CD 每秒测量 44,100 次。电话只需记录说话声,所以用 8,000 次。本页的梅尔频谱图也使用 8,000 次(8 kHz),因此无法记录高于 4,000 Hz 的声音。实际的录音设备会在采样前先滤掉高于极限的声音。
测得的值是小数点后无限延续的实数。要保存它,就必须四舍五入到规定格子中最近的一格。b 位就有 2b 个格。四舍五入产生的差就是量化噪声。
说话声每一刻都在变化。所以每次切出 25 ms 分别分析,并每次移动 10 ms 重复进行。把切出片段的两端平滑地压低的乘法就是“窗”。
直接切的话,片段两端的值会突然断开。傅里叶变换在计算时假定该片段会无限重复。因此断开处的急剧变化会泄漏到原本不存在的频率上(泄漏)。Hann 窗乘以一条从 0 平滑升到 1 再降回来的曲线(0.5 − 0.5·cos),使两端变为 0。代价是峰会稍微变宽。25 ms·10 ms 是语音分析中常用的值,可根据任务调整。
任何声音都可以表示为不同高低的正弦波之和。傅里叶变换接收波形,返回“几 Hz 的成分含有多少”。这和棱镜把白光分成彩虹很像。
梅尔 = 2595 · log10(1 + Hz / 700)“Do Re Mi Fa” 1 秒 → 98 帧 × 20 格
人耳能很好地区分低音的小差别(100 Hz 和 200 Hz),却不太能区分高音的同样差别(3,000 Hz 和 3,100 Hz)。梅尔刻度把低频分得细、把高频分得粗。用这个刻度的 20 个三角形滤波器归并傅里叶变换结果(129 格),再取对数(分贝),就得到梅尔频谱图。上面的公式是广泛使用的一种定义。基于梅尔刻度的特征(MFCC)在语音识别中表现优于其他特征,长期被当作标准使用 [R2]。
梅尔频谱图是“频率 × 时间”的数字矩阵。神经网络用两种方式读取它。详细结构已在前面几篇中介绍。
两段代码都只使用 Colab 默认安装的库。点击“下载笔记本(.ipynb)”后,在 Colab 中通过文件 → 上传笔记本打开,或者复制后粘贴到新笔记本的单元格中。
不用专门的库,计算采样·量化·窗·傅里叶变换·梅尔频谱图。页面上的数字(混叠 3 Hz、泄漏 7.95% → 0.05%、梅尔格的值)会原样出现。想换成自己的数据时,修改 SIGNAL 和 FS。
用实际工作中常用的 librosa 把同一声音转换为梅尔频谱图,并与自己计算的结果比较。若要使用录音文件,请按照代码中的 [想换成自己的数据] 一行操作(文件请自行准备)。
这是粘贴到 ChatGPT、Qwen、Claude 等 AI 助手中的提示词。点击“复制”时,所选代码会一并附在提示词后面。把〔 〕里的内容换成自己的情况即可。
AI 的回答只是起点。它提出的论文·数值·库函数务必对照原文和官方文档核实。如果在竞赛·论文中借助了 AI,请按照主办方和期刊的规定说明使用的事实和范围。
与正文中黄色虚线下划线相同的词典。整个系列使用统一的写法。点击章节名可跳到首次出现的位置。
类比是理解的第一步,但也可能成为误解的种子。果蝇·大脑类比标注了强度。直接 有证据表明实际在做同样的事 · 部分 只有部分性质相似 · 无 尚未发现对应的东西
| 概念 | 日常类比 | 果蝇·大脑类比 | 类比失灵之处 |
|---|---|---|---|
| 采样 | 每隔 1 秒给奔跑的人拍一张照片 | 部分 果蝇的复眼也只能以固定的速度追踪亮度变化 | 照片拍下的是瞬间,而样本只是固定间隔上的值。比间隔更快的运动会被错看(混叠) |
| 量化 | 用 1 cm 刻度的尺子量身高 | 无 | 尺子的刻度是均匀的,而实际音频的刻度由位数决定 |
| 窗 | 把照片边缘处理得模糊(暗角) | 无 | 乘窗不是为了好看,而是为了减少切断的端点造成的虚假频率 |
| 傅里叶变换 | 棱镜把光分成彩虹 | 直接 人的耳蜗在不同位置对不同高低的声音作出反应,把声音按高低分开 | 耳蜗随时间持续分解,并对强度变化作出非线性反应。傅里叶变换则一次性计算切出的一个片段 |
| 梅尔刻度 | 钢琴键盘:音高每翻一倍,间隔相同 | 部分 人感受到的音高间隔 | 梅尔公式有好几种,每个人的听觉方式也不同。本页的公式只是广泛使用的一种 |
| 梅尔频谱图 | 乐谱:时间(横)× 音高(纵) | 无 | 乐谱记录的是一个个音符,而频谱图把包括泛音和噪声在内的全部能量逐格记录下来 |
E-1 作者简介 · E-2 学术参考文献 · E-3 图片参考资料
所有声音均在页面上合成(未使用录音)。
这是面向讲师、实务 OJT 负责人和辅导老师的教学指南。时间为预估值,请根据实际课堂调整。
| 对象 | 想处理语音·声音数据(呼叫中心录音、设备噪声、语音指令)的大学生和从业者 |
|---|---|
| 先修知识 | 正弦曲线和对数。了解 3-3 的“照片是数字网格”,第 6·7 节会更容易 |
| 学习目标 | ① 能用数字说明采样·量化会丢失什么 ② 能按顺序说明声音经过窗·傅里叶变换·梅尔滤波器变成矩阵的过程 ③ 能区分 CNN 和序列模型读取梅尔矩阵的两种方式 |
| 预计时间 | 阅读 35~45 分钟 · 动画·声音演示 20 分钟 · Colab 实践 25 分钟(代码 1 15 分钟,代码 2 10 分钟) |
导入 5 分钟(第 1 节听声音)→ 第 2 节混叠 10 分钟 → 第 3 节按位数比较声音 10 分钟 → 第 4·5 节 15 分钟 → 第 6 节数字矩阵 5 分钟 → 检测题 5 分钟。
将第 2·3 节与本单位设备的录音规格(采样频率·位数)对照 15 分钟 → 第 4~6 节 25 分钟 → 把自己的录音文件放入代码 2 30 分钟 → 讨论“我们的数据适合 CNN 型还是序列型” 20 分钟。
入门者只学第 1·2·5·6 节。中级者让其手算代码 1 中 mel_filterbank 的一格,并与页面上的滤波器三角形图对照。
| 章节 | 停下来提问的问题 | 操作提示 |
|---|---|---|
| 1 振动 | “440 Hz 比 220 Hz 振动快几倍?听起来会怎样?” | 依次播放两个音(没有声音时请检查设备音量) |
| 2 采样 | “每秒测量 8 次,为什么看起来是 3 Hz?” | 按 50 → 12 → 8 次的顺序点击 |
| 3 量化 | “3 位的声音和 16 位的声音听起来有什么不同?” | 分别用 3 位和 16 位播放 |
| 4 切分·窗 | “直接切为什么会出现原本没有的频率?” | 交替点击矩形 ↔ Hann,观察下方图表的“裙摆” |
| 5 傅里叶变换 | “同样是 ‘Do’,为什么钢琴和小提琴听起来不同?” | 按纯音 → 乐器音的顺序播放,比较峰的数量 |
| 6 梅尔频谱图 | “1 秒的声音变成了多少个数字?” | 点击 Do → Fa 的帧,观察最亮的格向上移动 |
| 7 模型如何读取 | “门铃声分类和语音转写分别适合哪种方式?” | 交替点击两种方式 |
| 误解 | 正确解释 | 要展示的场景 |
|---|---|---|
| 测得越多总是越好 | 想记录的最高频率的 2 倍就足够了。超过的部分只会增加存储空间 | 第 2 节的 12 次(5 Hz 能被记录) |
| 位数少,声音就会变小 | 变大的不是音量而是噪声。每增加 1 位约干净 6 dB | 第 3 节 |
| 傅里叶变换一次性分析整段声音 | 是对每个短片段(帧)分别进行。因此能看到随时间的变化 | 第 4·6 节 |
| 频谱图是图片,所以可以像照片一样处理 | 横向(时间)和纵向(频率)的含义不同。纵向平移就会变成别的声音 | 第 7 节 |
| 梅尔频谱图完整保留了声音 | 它是舍弃相位和精细频率信息后缩减的摘要(8,000 → 1,960) | 第 6 节数字摘要 |
8,000 ÷ 2 = 4,000 Hz(奈奎斯特极限)。
|5 − 8| = 3 Hz。超过极限(4 Hz),产生混叠。
6.02 × (16 − 8) ≈ 48 dB。理论值分别为 49.92 dB 和 98.08 dB。
(8,000 − 200) ÷ 80 + 1 = 98 个(舍去小数后加 1)。
1,960 个。8,000 ÷ 1,960 ≈ 4.1,约为四分之一。
把代码 1 的 NMEL 从 20 改为 40,把 FRAME 从 200 改为 400。用三句话写出梅尔矩阵的大小和图像如何变化,并联系时间分辨率与频率分辨率之间的权衡。
用自己录制的声音或设备声音文件运行代码 2(文件请自行准备,注意个人信息)。把同一声音录两次,用相关系数比较两个梅尔矩阵有多相似,并写出造成差异的原因。
| 入门者 | 跳过第 3·4 节也不会打断整体思路。第 1·5 节的听声音环节一定要做 |
|---|---|
| 进阶 | 让学生调查窗长·间隔·梅尔格数对识别性能的影响。调查到的论文要查阅原文确认 |
| 延伸学习 | Sangsun Ahn,《面向商业的数据科学》讲义(数据科学总览) · STEP [K-数字] 人工智能自然语言处理(与 3-5·3-8 相关) · STEP [K-数字] 金融科技数据分析基础(与 3-6 相关) |
| 讲师用资料 | 检测题的评分标准和作业参考答案见 教师用答案页面(3-4) |
你已读完「3-4 语音」篇。实验室成员们来各说一句做个总结。