跳转至

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 / 复习大纲 / 阶段测试题)