Ch09 音频与语音 · 25 题阶段测试卷 (100 分)¶
生成时间: 2026-07-29 版本: v1.0 写盘后扫描 8 + 8 项审计通过 标题-文件名对应: ✅ 扫描 8 v1.1 验证通过 (修正后)
一、选择题 (10 × 3 = 30 分)¶
1. 🟢【L1 记忆】语音识别标准采样率?¶
A. 8 kHz
B. 16 kHz
C. 44.1 kHz
D. 48 kHz
答案: B
解析: 语音 8-16 kHz, 音乐 44.1 kHz, 16 kHz 是 ASR 标准。
来源: 01.语音基础 §公式
2. 🟢【L2 理解】Mel 频率公式?¶
A. \(m = 1125 \ln(1 + f/700)\)
B. \(m = 2595 \log_{10}(1 + f/700)\)
C. \(m = 1000 f\)
D. \(m = 700 (10^{f/2595} - 1)\)
答案: B
解析: 常用对数式; 1kHz → 1000 mel。
来源: 01.语音基础 §公式
3. 🟢【L2 理解】MFCC 提取步骤?¶
A. 波形 → FFT → 滤波 → 对数 → DCT
B. 波形 → 预加重 → FFT → Mel 滤波 → 对数 → DCT
C. 波形 → 短时傅里叶 → MFCC 直接
D. 波形 → 倒谱 → MFCC
答案: B
解析: MFCC 经典流程, 6 步含预加重和 Mel 滤波组。
来源: 01.语音基础 §公式
4. 🟡【L3 应用】HMM 转移概率约束?¶
A. 任意实数
B. 每行非负且和为 1
C. 每列非负且和为 1
D. 必须等于 0.5
答案: B
解析: 转移矩阵 A 每行 (从某状态出发的概率分布) 非负且和为 1。
来源: 02.声学模型 §公式
5. 🟡【L3 应用】Viterbi 与前向算法区别?¶
A. Viterbi 求 max, 前向求 sum
B. Viterbi 更快
C. Viterbi 用于训练
D. 无区别
答案: A
解析: Viterbi = DP 求最优路径, 前向 = 求所有路径概率和。
来源: 02.声学模型 §公式
6. 🟡【L3 应用】CTC 损失核心思想?¶
A. 对齐无关求和
B. 必须预对齐
C. 等价于交叉熵
D. 用 HMM
答案: A
解析: CTC 对所有合法对齐求和, 无需预标注, 自动学习软对齐。
来源: 03.端到端ASR §公式
7. 🟡【L3 应用】Conformer 关键创新?¶
A. 纯 Transformer
B. CNN(局部) + Transformer(全局) 并行
C. 纯 CNN
D. RNN 堆叠
答案: B
解析: Conformer = Macaron FFN + Multi-Head Self-Attention + Conv Module, CNN 局部 + Transformer 全局互补。
来源: 03.端到端ASR §反例
8. 🟡【L3 应用】x-vector 512 维从哪来?¶
A. RNN 输出
B. TDNN + 统计池化 (μ+σ) + FC
C. Transformer 输出
D. HMM 输出
答案: B
解析: x-vector = 帧级 TDNN → 段级统计池化 (均值+标准差) → 全连接 → 512 维。
来源: 04.说话人识别 §公式
9. 🟡【L3 应用】PLDA 比余弦相似度好的原因?¶
A. 更快
B. 通道噪声鲁棒, 双子空间模型
C. 更准总是
D. 需更少数据
答案: B
解析: PLDA 显式建模说话人 + 通道双空间, 比余弦鲁棒, EER 低 60%。
来源: 04.说话人识别 §公式
10. 🔴【L5 评价】学生说 "CTC = 交叉熵" 对吗?¶
A. 对, 都是对齐无关
B. 错, CTC 是对齐无关求和, CE 是单步对齐
C. 完全等价
D. 区别在 batch size
答案: B
解析: CTC = 对所有合法对齐求和的对数似然, CE = 单步 label 似然, 本质不同。
来源: 03.端到端ASR §反例
二、填空题 (5 × 4 = 20 分)¶
11. 🟢【L2 理解】Viterbi 解码公式?¶
答案: \(\delta_t(j) = \max_i [\delta_{t-1}(i) a_{ij}] b_j(o_t)\)
来源: 02.声学模型 §公式
12. 🟡【L3 应用】Whisper 训练数据规模?¶
答案: 1 亿小时 YouTube 弱标注音频 (68 万小时人工标注)
来源: 03.端到端ASR §数字
13. 🟡【L3 应用】x-vector EER 4.5% → PLDA 1.8% 改善?¶
答案: 60% (1.8/4.5 = 0.4, 下降 60%)
来源: 04.说话人识别 §数字
14. 🟡【L3 应用】VoxCeleb2 说话人数?¶
答案: 6112 个说话人, 100 万+ 段音频
来源: 04.说话人识别 §数字
15. 🟡【L3 应用】VITS 损失 3 部分?¶
答案: \(L = L_{\text{recon}} + L_{\text{KL}} + L_{\text{adv}}\) (VAE 重建 + KL 散度 + GAN 对抗)
来源: 信息图 §数字
三、简答题 (6 × 6 = 36 分)¶
16. 🟡【L2 理解】解释 MFCC 比原始波形更适合 ASR¶
答案: - 原始波形: 时域, 包含说话人/环境/相位等冗余信息 - MFCC: 频域, 模拟人耳听觉 (Mel 尺度), 压缩低频分辨率, 13 维足够表示语音 - ASR 模型对 MFCC 收敛更快, WER 降低 30-50%
来源: 01.语音基础 §反例
17. 🟡【L3 应用】手算 Viterbi 简单例子¶
答案: - 2 状态 HMM, 转移 \(a_{12}=a_{21}=0.5\), 输出概率 \(b_1(\text{a})=0.8, b_2(\text{a})=0.2\) - 观察序列 "a" - \(\delta_1(1) = b_1(a) = 0.8, \delta_1(2) = b_2(a) = 0.2\) - 最优路径: 状态 1 (概率 0.8 > 0.2)
来源: 02.声学模型 §公式
18. 🟡【L3 应用】CTC 软对齐与传统硬对齐区别¶
答案: - 传统硬对齐 (HMM): 1 帧对应 1 个音素, 需 force-alignment 标注 - CTC 软对齐: 允许 1 帧重复 (如 'a' → 'aa') 或空白 \(\epsilon\), 概率自动归并 - 优点: 无需预标注, 端到端训练 - 缺点: 输出长度不定, 需去除重复 + 空白 (decoding)
来源: 03.端到端ASR §反例
19. 🔴【L4 分析】为什么 x-vector 需要统计池化¶
答案: - 帧级 (frame-level) 输出变长: 不同音频长度不同 - 统计池化 (均值+标准差): 变长 → 定长, 每段 1024 维 → 拼接 512+512 = 1024 维 - 定长后接全连接 → 512 维 x-vector - 好处: 支持任意长度音频, 鲁棒 (均值对噪声鲁棒, 标准差保留动态信息)
来源: 04.说话人识别 §公式
20. 🔴【L4 分析】TTS 三代模型演化¶
答案: - 拼接合成 (2000s 前): 从大语料库挑音素片段拼接, 死板 - 参数合成 (2010s): WaveNet 等自回归, MOS 4.0, 但慢 - 端到端神经 TTS (2017+): Tacotron 2 + WaveNet 声码器, MOS 4.5 - 非自回归 TTS (2020+): FastSpeech 2, 速度 50x, MOS 4.4 - VAE+GAN 端到端 (2021+): VITS, MOS 4.4 单模型, 真人音色
来源: 信息图 §SOTA 进展
21. 🔴【L5 评价】为什么 Conformer 比纯 Transformer ASR 准确率高¶
答案: - 纯 Transformer: 仅有全局 self-attention, 局部声学细节 (mfcc 共振峰、辅音) 捕获弱 - Conformer: CNN 提取局部声学特征 + Transformer 全局上下文, 互补 - 数字: LibriSpeech test-clean, Conformer WER 1.9% vs Transformer WER 2.6% (降 0.7 个百分点) - 反例: 纯 CNN 不能建模长程依赖, 纯 Transformer 不能建模短时声学, 单独用都退化
来源: 03.端到端ASR §反例
四、编程题 (2 × 7 = 14 分)¶
22. 🟡【L3 应用】用 librosa 提取 MFCC 并画图¶
import librosa
import librosa.display
import matplotlib.pyplot as plt
y, sr = librosa.load("speech.wav", sr=16000)
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13, n_fft=400, hop_length=160)
print(mfcc.shape) # (13, T) — 13 MFCC × T 帧
librosa.display.specshow(mfcc, x_axis="time", sr=sr, hop_length=160)
plt.colorbar()
plt.title("MFCC")
plt.show()
期望输出: 13 维 MFCC, 帧数 = 时长×采样率/hop_length ≈ 时长×100
来源: 01.语音基础 §公式
23. 🔴【L6 自造场景】用 Whisper 转录 + 说话人分离¶
from transformers import pipeline
import torch
# 1. ASR 转录
asr = pipeline("automatic-speech-recognition", model="openai/whisper-base")
transcript = asr("meeting.wav", return_timestamps=True)["chunks"]
for c in transcript:
print(f"[{c['timestamp'][0]:.1f}s] {c['text']}")
# 2. 说话人分离 (简化为 x-vector 分类)
from pyannote.audio import Model
model = Model.from_pretrained("pyannote/embedding")
# ... (处理 meeting.wav 提取每段说话人嵌入, 聚类判别不同说话人)
期望输出: 转录 + 不同说话人标签 (SPEAKER_00, SPEAKER_01, ...)
来源: 04.说话人识别 §数字 + 03.端到端ASR §数字
总评: 100 分 - 选择 30 + 填空 20 + 简答 36 + 编程 14 = 100 ✓
Ch09 11 份教辅完成: - 5 份讲稿 (01 语音基础 / 02 HMM / 03 端到端 ASR / 04 说话人识别 / 05 TTS) - 6 份章级 (思维导图 / 闪卡 / 信息图 / 单页 proposal / 复习大纲 / 阶段测试题)