跳转至

第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 天扎实)

  1. Day 1: §01 波形/采样/奈奎斯特/STFT/梅尔 — 手算 5 Hz 与 7 Hz 混叠到 2 Hz
  2. Day 2: §02 GMM-HMM→DNN-HMM — 跑通 Kaldi 经典 ASR 训练
  3. Day 3: §02 CTC/RNN-T/Conformer — 跑通 NeMo 英文 ASR 微调
  4. Day 4: §02 Whisper/wav2vec — 跑通零样本多语种 ASR
  5. Day 5: §03 Tacotron→HiFi-GAN → VITS — 跑通单说话人 TTS 训练
  6. Day 6: §04 x-vector/ECAPA/AST — 跑通说话人验证 + 音频分类
  7. 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 速度)