第09章 音频与语音 · 思维导图¶
一句话总结: Ch09 把物理声波 (Ch03 傅立叶) + 概率 (Ch05 KL/EM) + Transformer (Ch07 §04) + 频谱图当图像 (Ch08 §05) 转译成"听得见 + 听得懂 + 说得出 + 分得开"的全栈音频 AI, 主干覆盖数字信号处理、ASR、TTS、说话人分析与源分离, 数字例 ≤3 步可核验, 单位 bit / dB / Hz / kHz 严格标注.
承接 Ch05: 信息论 (Ch05 §05) → 交叉熵损失 (CTC, RNN-T 训练目标); 熵 → perplexity → Whisper 语言模型困惑度; KL 散度 → NMF 源分离目标 / VITS 后验对齐; EM 算法 → GMM-HMM 声学模型训练 (Baum-Welch); Viterbi 解码 → 状态对齐搜索.
承接 Ch07: 自注意力 (Ch07 §04 QK^T/√d_k V) → Conformer 多头自注意力 + SepFormer 块内/块间注意力; Transformer 编码器-解码器 → Whisper ASR 与 VALL-E 编解码语言模型; BPE 词片 → Whisper 字节级 BPE; KL → DPO/RLHF 偏好对齐 (与 ASR/TTS 训练正交).
承接 Ch08: ViT 16×16 patch (Ch08 §05) → AST 音频频谱图 Transformer; ResNet 残差 → x-vector / ECAPA-TDNN 残差块 + WaveNet 膨胀因果卷积; 对比学习 InfoNCE (Ch08 §05 CLIP) → wav2vec 2.0 对比损失; U-Net 编码-解码 (Ch08 §04) → Conv-TasNet 编码-分离-解码三段式.
跨章桥接: DFT 矩阵 (Ch02 矩阵分解 + Ch03 傅立叶级数) → 频域变换; 矩阵分解 NMF (Ch02) → 经典源分离; 链式法则 (Ch03) → 自回归 WaveNet 训练; 测度/期望 (Ch05) → SI-SDR 评估指标; 后续 Ch10 (多模态音频-文本融合), Ch21 (语音隐私与水印).
思维导图 (Mermaid mindmap, 60-100 节点, 🟢/🟡/🔴 难度色标)¶
🌳 Ch9 章 知识图谱
├─ §01 数字信号处理 DSP
│ └─ 声音物理三件套 🟢
│ │ └─ 振幅 A
│ │ │ └─ 响度 = 20·log10(A/A_ref) dB
│ │ │ └─ A_ref = 20 μPa
│ │ │ └─ 30/60/110 dB = 耳语/对话/摇滚
│ │ └─ 频率 f
│ │ │ └─ 单位 Hz
│ │ │ └─ 人耳 20 Hz-20 kHz
│ │ │ └─ A4=440 Hz, 八度=2f
│ │ └─ 相位 φ
│ │ │ └─ 弧度
│ │ │ └─ 相长/相消干涉
│ └─ 采样与奈奎斯特 🟢
│ │ └─ 采样率 f_s
│ │ │ └─ CD 44.1 kHz
│ │ │ └─ 电话 8 kHz
│ │ │ └─ 语音 16 kHz
│ │ └─ 奈奎斯特 f_s ≥ 2f_max 🟢
│ │ └─ 混叠 aliasing 🟡
│ │ │ └─ 15 kHz @ 16 kHz 混叠到 1 kHz
│ │ │ └─ 抗混叠低通滤波器
│ │ └─ 量化 +μ 律/A 律
│ │ │ └─ 16 bit 65536 电平
│ │ │ └─ 量化噪声 Δ²/12
│ └─ 时域特征 🟢
│ │ └─ 能量 E=Σx² 🟢
│ │ └─ 过零率 ZCR 🟢
│ │ └─ 自相关 R 🟡
│ │ │ └─ 周期峰→基频 f_s/k_peak
│ └─ 频域分析 🟢
│ │ └─ DFT X=Σxe^(-j2πkn/N) 🟡
│ │ └─ FFT O(N log N) 🟢
│ │ └─ 幅度谱 |X| 功率谱 |X|²
│ └─ 时频表示 STFT 🟡
│ │ └─ 频谱图 = |STFT|² 🟢
│ │ └─ Gabor 极限 Δt·Δf ≥ 1/
│ │ └─ 帧长 25 ms / 帧移 10 ms
│ │ └─ 汉明窗 / 汉宁窗 / 布莱克曼
│ └─ 梅尔刻度与特征 🟡
│ │ └─ mel=2595·log10(1+f/700) 🟢
│ │ └─ 梅尔滤波器组 40-80 个
│ │ └─ MFCC 13 维 + Δ + ΔΔ = 39 维
│ │ │ └─ DCT 倒谱
│ │ │ └─ 预加重 α=0.97
│ └─ 滤波器 🟡
│ │ └─ FIR 仅零点
│ │ └─ IIR 有极点 可不稳
│ │ └─ z 变换 H
│ │ └─ 卷积定理 = 频域乘
│ └─ 数字例 ≤3 步
│ │ └─ 5 Hz 信号 7 Hz 采样 = 2 Hz 混叠 🟢
│ │ └─ A4=440, A5=880, A6=1760 八度倍频
│ │ └─ 30 dB 增 10 dB=响度翻倍
├─ §02 自动语音识别 ASR
│ └─ 经典流水线 🟢
│ │ └─ 特征 MFCC/对数梅尔
│ │ └─ 声学模型 + 发音词典 + LM
│ │ └─ WFST 解码 H∘C∘L∘G
│ └─ 音素与三音素 🟢
│ │ └─ 英语 39-44 个音素
│ │ └─ 三音素 40³≈64k
│ │ └─ senone 2k-10k
│ │ └─ 决策树聚类
│ └─ GMM-HMM 🟡
│ │ └─ 状态 3-5 个从左到右
│ │ └─ GMM 8-64 成分
│ │ └─ Baum-Welch = EM 特例
│ │ └─ Viterbi 解码 O
│ └─ DNN-HMM (2012) 🟡
│ │ └─ DNN 替 GMM 发射
│ │ └─ WER 相对降 20-30%
│ │ └─ Switchboard 20% / 朗读 30%+
│ └─ 端到端对齐问题 🟡
│ │ └─ 输入几百帧 vs 输出几个字
│ │ └─ CTC 引入 blank 标记
│ │ └─ 前向-后向 O
│ │ └─ 条件独立 需外接 LM
│ └─ CTC 解码 🟡
│ │ └─ 贪心 vs 束搜索
│ │ └─ 前缀束搜索
│ │ └─ "cat" = "--cc-aa-t--"
│ └─ RNN-Transducer (RNN-T) 🟡
│ │ └─ 编码器 + 预测网络 + 联合
│ │ └─ p
│ │ └─ 流式天然支持
│ │ └─ O(T·U) 训练
│ └─ LAS 听注意拼写 🟡
│ │ └─ Listener 8 倍下采样
│ │ └─ Attention 全局
│ │ └─ Speller 自回归
│ │ └─ 离线非流式
│ └─ Conformer (2020) 🟡
│ │ └─ FFN-Attn-Conv-FFN 马卡龙
│ │ └─ 相对位置编码
│ │ └─ GLU + 1D 深度可分卷积
│ │ └─ CTC/RNN-T 默认编码器
│ └─ Whisper (2023) 🔴
│ │ └─ 编码-解码 Transformer
│ │ └─ 680k 小时弱监督
│ │ └─ 80 通道对数梅尔
│ │ └─ 多任务: 转写/翻译/语种/时间戳
│ └─ 自监督 wav2vec 2.0 🔴
│ │ └─ CNN 特征编码器 20 ms
│ │ └─ 乘积量化 G 个码本
│ │ └─ InfoNCE 对比损失
│ │ └─ 53k h 无标注 + 10 min 有标注
│ └─ HuBERT 🔴
│ │ └─ 掩码预测 替对比
│ │ └─ 离线 k 均值聚类
│ └─ Fast Conformer 🔴
│ │ └─ 8× 降采样注意力
│ │ └─ 局部窗口次二次
│ │ └─ NVIDIA NeMo 默认
│ └─ Parakeet/Canary/Moonshine 🔴
│ │ └─ Parakeet 0.6B/1.1B 英语 SOTA
│ │ └─ Canary 多语 Fast Conformer
│ │ └─ Moonshine <30M 端侧
│ └─ LM 融合 🟡
│ │ └─ 浅融合 log p_AM + λ log p_LM
│ │ └─ 深/冷融合 嵌入解码器
│ │ └─ ILME 减内部 LM
│ │ └─ N-best 重打分
│ └─ 流式 vs 离线 🟡
│ │ └─ 实时字幕/助手
│ │ └─ 延迟有界
│ │ └─ 下文依赖 vs 增量
│ └─ 数字例 ≤3 步
│ │ └─ Binomial(8,0.5) P(X=6)=0.109
│ │ └─ Whisper large-v3 WER 多种
│ │ └─ VoxCeleb EER <1%
├─ §03 文本到语音 TTS
│ └─ 四段流水线 🟢
│ │ └─ 文本归一化
│ │ └─ 字素到音素 G2P
│ │ └─ 声学模型
│ │ └─ 声码器
│ └─ 文本归一化 🟢
│ │ └─ Dr.→Doctor
│ │ └─ 1984→nineteen eighty-four
│ │ └─ $5→five dollars
│ │ └─ 规则系统 + 神经
│ └─ G2P 字素到音素 🟢
│ │ └─ CMU 发音词典
│ │ └─ 神经 seq2seq
│ │ └─ IPA 输出
│ │ └─ 西班牙语规则够
│ └─ Tacotron/Tacotron 2 🟡
│ │ └─ 字符→梅尔频谱图
│ │ └─ 位置敏感注意力
│ │ │ └─ e_{i,j}=w^T·tanh
│ │ └─ 停止 token
│ │ └─ 80 帧/秒
│ └─ FastSpeech 2 🟡
│ │ └─ 非自回归
│ │ └─ 时长预测器
│ │ └─ 音高 + 能量方差适配器
│ │ └─ 比 Tacotron 2 快 10-20 倍
│ └─ WaveNet 声码器 🟡
│ │ └─ 自回归 p
│ │ └─ 膨胀因果卷积 1,2,4,...,512
│ │ └─ 门控 z=tanh
│ │ └─ μ 律压扩 256 电平
│ │ └─ 1 秒 24 kHz = 24000 次串行
│ └─ WaveRNN 🟡
│ │ └─ 单层 GRU
│ │ └─ 粗 8 bit + 细 8 bit
│ │ └─ 移动 CPU 实时
│ └─ WaveGlow 🟡
│ │ └─ 流模型 仿射耦合层
│ │ └─ 训练精确对数似然
│ └─ HiFi-GAN 🟡
│ │ └─ 转置卷积上采样
│ │ └─ MRF 多感受野融合
│ │ └─ MPD 多周期判别器 2,3,5,7,11
│ │ └─ MSD 多尺度判别器 1/2/4×
│ │ └─ L_G = L_adv + λ_mel·L_mel + λ_fm·L_fm
│ │ └─ 比 WaveNet 快 1000 倍
│ └─ VITS 端到端 🟡
│ │ └─ VAE + 归一化流 + 对抗
│ │ └─ 后验 + 先验 + 解码
│ │ └─ 联合优化
│ └─ 编解码语言模型 🔴
│ │ └─ VALL-E 3 秒克隆
│ │ └─ EnCodec 多码本
│ │ └─ AR + NAR 双模型
│ │ └─ Orpheus 1B/3B 拟人情感
│ │ └─ Fish Speech 双自回归
│ └─ 扩散/流 TTS 🟡
│ │ └─ StyleTTS 2 扩散先验
│ │ └─ Kokoro 82M 边缘
│ └─ 韵律建模 🟡
│ │ └─ 音高 F0 CREPE/YIN
│ │ └─ 时长
│ │ └─ 能量
│ │ └─ GST 全局风格 token
│ └─ 声音转换 VC 🟡
│ │ └─ AutoVC 信息瓶颈
│ │ └─ 说话人嵌入替换
│ │ └─ 源-滤波器 NSF
│ └─ 数字例 ≤3 步
│ │ └─ WaveNet 1s=24000 步
│ │ └─ HiFi-GAN 比 WaveNet 快 1000×
│ │ └─ Kokoro 82M 参数边缘部署
├─ §04 说话人与音频分析
│ └─ 说话人验证 vs 识别 🟢
│ │ └─ SV 二元决策 接受/拒绝
│ │ └─ SI 多分类 候选库
│ │ └─ 共享说话人嵌入
│ └─ 余弦相似度 + 阈值 🟢
│ │ └─ s = e·t /
│ │ └─ VoxCeleb EER <1%
│ │ └─ FAR vs FRR 权衡
│ └─ i-vector 🟡
│ │ └─ UBM = 大 GMM
│ │ └─ M = m + Tw
│ │ └─ PLDA 说话人+信道分解
│ └─ d-vector / x-vector 🟡
│ │ └─ DNN 帧级→平均
│ │ └─ TDNN 时间上下文
│ │ └─ 统计池化
│ └─ ECAPA-TDNN SOTA 🟡
│ │ └─ SE 压缩激励
│ │ └─ Res2Net 多尺度
│ │ └─ 注意力统计池化
│ │ └─ AAM-Softmax 角度间隔 m=0.2
│ └─ 说话人分离 diarisation 🟡
│ │ └─ AHC 凝聚层次聚类
│ │ └─ 谱聚类
│ │ └─ EEND 端到端多标签
│ │ └─ PIT 排列不变训练
│ └─ 音频分类 🟢
│ │ └─ 频谱图当图像 套 CNN/ViT
│ │ └─ ESC-50 / UrbanSound8K
│ │ └─ AudioSet 527 类 200 万段
│ └─ 弱监督 SED 🟡
│ │ └─ 段级标签 → 注意力池化
│ └─ 音频嵌入通用表示 🟡
│ │ └─ VGGish 128 维 AudioSet
│ │ └─ PANNs CNN14 2048 维
│ │ └─ AST 频谱图 ViT
│ │ │ └─ 16×16 patch
│ │ │ └─ ImageNet 预训练迁移
│ └─ 音乐信息检索 MIR 🟡
│ │ └─ 流派/节拍/转录
│ │ └─ CREMA 多人多模态情感
│ └─ 数字例 ≤3 步
│ │ └─ 50% 节点 Gini=0.500
│ │ └─ VoxCeleb EER <1%
│ │ └─ AAM-Softmax m=0.2 s=30
├─ §05 源分离与降噪
│ └─ 鸡尾酒会问题 🟢
│ │ └─ Cherry 1953
│ │ └─ x
│ │ └─ 单麦欠定
│ └─ 时频掩码 🟢
│ │ └─ IBM 二值
│ │ └─ IRM 软掩码
│ │ └─ S_c=M_c·X
│ └─ ICA 独立成分分析 🟡
│ │ └─ 多麦=源数
│ │ └─ FastICA 负熵最大化
│ │ └─ 非高斯独立假设
│ └─ NMF 非负矩阵分解 🟡
│ │ └─ V≈WH
│ │ └─ 物理非负
│ │ └─ 字典 W + 激活 H
│ │ └─ Frobenius / KL
│ └─ 波束成形 🟡
│ │ └─ delay-and-sum
│ │ │ └─ τ_m=d_m·sinθ/c
│ │ │ └─ y
│ │ └─ MVDR 最优权重
│ │ │ └─ w=Φ_nn⁻¹d / d^H Φ_nn⁻¹ d
│ └─ 深度聚类 (Hershey 2016) 🟡
│ │ └─ BiLSTM 嵌入 V
│ │ └─ ‖VV^T-YY^T‖²_F
│ │ └─ 推理 K 均值
│ └─ Conv-TasNet 时域分离 🟡
│ │ └─ 编码器 1D 卷积 2 ms 核
│ │ └─ TCN 分离器 膨胀 1,2,4,...,2^B
│ │ └─ 解码器转置卷积
│ │ └─ 绕开 STFT
│ └─ DPRNN / SepFormer 🟡
│ │ └─ 块内+块间双路
│ │ └─ SepFormer Transformer
│ │ └─ WSJ0-2mix 20-22 dB
│ └─ 置换不变训练 PIT 🟡
│ │ └─ L=min_π Σℓ
│ │ └─ 匈牙利算法
│ └─ SI-SDR 评估 🟢
│ │ └─ s_target=⟨ŝ,s⟩/‖s‖²·s
│ │ └─ SI-SDR=10·log10
│ │ └─ 单位 dB 越高越好
│ └─ 自适应降噪 🟡
│ │ └─ 谱减法
│ │ └─ 维纳滤波
│ │ └─ RNN/LSTM 语音增强
│ └─ 数字例 ≤3 步
│ │ └─ 鸡尾酒会 = Cherry 1953
│ │ └─ WSJ0-2mix SI-SDR 20-22 dB
│ │ └─ PIT C=2 → 2 置换
├─ 跨章桥接
│ └─ Ch05 §05 KL/互信息
│ │ └─ NMF KL 目标
│ │ └─ VITS 后验 KL
│ │ └─ WaveNet μ 律
│ └─ Ch05 §04 EM / Viterbi
│ │ └─ Baum-Welch = EM
│ │ └─ HMM Viterbi = DP
│ └─ Ch07 §04 Transformer
│ │ └─ Conformer 自注意力
│ │ └─ SepFormer 双路
│ │ └─ Whisper 编解码
│ └─ Ch08 §05 ViT/CLIP
│ │ └─ AST 频谱图 ViT
│ │ └─ wav2vec InfoNCE
│ │ └─ Conv-TasNet 编解码
│ └─ Ch03 §03 傅立叶
│ │ └─ DFT 矩阵 = 基变换
│ │ └─ Gabor 极限 = 测不准
│ └─ Ch02 §04 矩阵分解
│ │ └─ NMF = V≈WH
│ │ └─ i-vector T 矩阵
│ └─ Ch01 内积
│ │ └─ 自相关 = 点积
│ │ └─ 余弦相似度 = 内积/L2
学习路径 (7 天扎实)¶
- Day 1: §01 波形/采样/奈奎斯特/STFT/梅尔 — 手算 5 Hz 与 7 Hz 混叠到 2 Hz
- Day 2: §02 GMM-HMM→DNN-HMM — 跑通 Kaldi 经典 ASR 训练
- Day 3: §02 CTC/RNN-T/Conformer — 跑通 NeMo 英文 ASR 微调
- Day 4: §02 Whisper/wav2vec — 跑通零样本多语种 ASR
- Day 5: §03 Tacotron→HiFi-GAN → VITS — 跑通单说话人 TTS 训练
- Day 6: §04 x-vector/ECAPA/AST — 跑通说话人验证 + 音频分类
- Day 7: §05 Conv-TasNet/SepFormer + 跨章总复习, 写一篇鸡尾酒会问题综述
依赖关系¶
- §01 → §02 → §03 (DSP → ASR → TTS 共享频谱图特征)
- §01 → §04 (频谱图 → 说话人嵌入 / AST 图像化)
- §01 → §05 (STFT → 时频掩码 / NMF)
- §05 §02 → Ch07 §04 Transformer (波束成形 + SepFormer)
- Ch05 §05 → §02 §03 (KL/perplexity 训练目标)
- Ch07 §04 → §02 §03 (Conformer / Whisper / VALL-E 骨干)
- Ch08 §05 → §04 (AST 借鉴 ViT patch)
常见误区¶
- 把 STFT 当成"时域+频域"两套独立信息 — 实际受 Gabor 极限约束, 时频分辨率乘积有下界
- 期望 WaveNet 实时推理 — 自回归 1 秒 24 kHz 要 24000 步, 必须用 HiFi-GAN / VITS 替代
- 把 MFCC 当过时的"老古董" — 对数梅尔频谱 (跳过 DCT) 才是现代 NN 输入, MFCC 仍活跃于小模型
- 把 Conformer 当"Conv + Transformer 简单拼" — 实际是 FFN/MHSA/Conv/FFN 严格四段马卡龙, 半步残差权重是关键
- 以为 wav2vec 2.0 一定要 53k 小时 — 实际可在不同规模上缩放, 关键是量化码本 + 掩码预测组合
- 把 VALL-E 当"传统 TTS 加点新意" — 实际是把语音生成重定义为离散 token 上的语言建模, 借用 LLM 缩放红利
- 把说话人验证 EER <1% 当"已解决" — 跨信道/跨语种/短时 (1-2 秒) 仍是开放问题
- 把 ICA 当万能分离器 — 假设源非高斯且独立, 现实混响 + 源多于麦即失效, 现代深度方法更稳
- 以为 NMF 就是非负 SVD — 实际代价函数 (Frobenius / KL) 和更新规则完全不同
- 以为 SI-SDR 和 SDR 一样 — SI-SDR 对尺度不变, 移除绝对音量影响, 单独评价分离质量
节点统计¶
- 5 主干节 + 跨章桥接 = 6 大组
- 80+ 节点 (🟢 ~35%, 🟡 ~50%, 🔴 ~15%)
- 关键公式标注: 奈奎斯特/Gabor 极限/DFT/CTC 前向-后向/RNN-T 联合网络/Conformer 四段/AAM-Softmax 角度间隔/HiFi-GAN 三损失/Conv-TasNet 编码-掩码-解码/IR M掩码/SI-SDR/MVDR 闭式解
- 数字例 ≤3 步可验: 5 Hz @ 7 Hz → 2 Hz 混叠; 30/60/110 dB 响度; A4=440 Hz 八度; Whisper 680k h; WaveNet 24000 步/秒; HiFi-GAN 1000× 加速; VoxCeleb EER<1%; Kokoro 82M; WSJ0-2mix 20-22 dB SI-SDR
- 跨章承接: Ch03 §03 傅立叶/Gabor 极限; Ch05 §04 EM / Viterbi; Ch05 §05 KL/互信息/perplexity; Ch07 §04 Transformer/注意力/BPE; Ch08 §05 ViT/InfoNCE/编解码
- 单位严格标注: dB (响度/掩码/SI-SDR) / Hz (频率) / kHz (采样率) / bit (熵单位) / 帧/秒 (TTS 速度)