跳转至

第09章 · 音频与语音 · 阶段测试题答案


一 · 单选 (8 题)

1.1 A - 采样率 16 kHz 满足人声 Nyquist 定理。

1.2 B - FFT 把时域转频域。

1.3 C - MFCC 是常见声学特征。

1.4 A - CTC 损失处理时序对齐。

1.5 B - Whisper 是 OpenAI 多语言 ASR。

1.6 A - HMM-GMM 是传统 ASR。

1.7 C - Tacotron/Transformer-TTS 是端到端。

1.8 B - 梅尔频谱接近人耳感知。


二 · 多选 (4 题)

2.1 ABCD - 都是语音处理任务。

2.2 ABD - C 错: 时域信号本身无频域信息。

2.3 ABC - 都是 TTS 方法。

2.4 ABD - 都是语音识别常用方法。


三 · 简答 (5 题)

3.1 ASR 流水线

传统: 音频 → 特征(MFCC) → 声学模型(HMM-GMM) → 发音词典 → 语言模型 → 文字 端到端: 音频 → Encoder → Decoder → 文字 (Whisper / Conformer) CTC: 音频 → 神经网络 → CTC 损失 → 文字

3.2 梅尔频谱 vs 线性频谱

FFT: 线性频率轴(0-8 kHz), 不符合人耳感知 Mel 频谱: - Mel = 2595 × log(1 + f/700) - 符合人耳对数感知 - 低频分辨率高, 高频低

3.3 HMM-GMM ASR

HMM: 建模时序状态转移(音素) GMM: 建模每个状态的声学特征分布 问题: 假设太强(独立性), 性能有限

DNN-HMM: GMM 替换为 DNN, 大幅提升 端到端: 直接从音频到文字, 无中间模块

3.4 TTS 三大范式

范式 代表 特点
拼接 Unit Selection 自然, 但需大量录音
参数 Tacotron / FastSpeech 灵活, 可控
神经声码器 WaveNet / HiFi-GAN 高质量

端到端: 文本 → Mel 频谱 → 声码器 → 音频

3.5 说话人识别

说话人验证: 1:1 (这是 John 吗?) 说话人识别: 1:N (这是谁?)

特征: x-vector / d-vector (DNN 嵌入) 模型: - GMM-UBM: 传统 - i-vector: 中期主流 - x-vector (DNN): 当前主流 - ECAPA-TDNN: SOTA

损失: Softmax / AAM-Softmax / Prototypical


四 · 编程 (2 题)

4.1 特征提取

import librosa

audio, sr = librosa.load("speech.wav", sr=16000)
mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=13)
mel_spec = librosa.feature.melspectrogram(y=audio, sr=sr, n_mels=80)
print(f"MFCC shape: {mfcc.shape}")  # (13, T)
print(f"Mel spec shape: {mel_spec.shape}")  # (80, T)

4.2 简单 ASR

from transformers import WhisperProcessor, WhisperForConditionalGeneration

processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")

# 推理
input_features = processor(audio, sampling_rate=16000, return_tensors="pt").input_features
predicted_ids = model.generate(input_features)
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
print(transcription)