语音理解与增强
语音理解关注转写之外的信息,包括说话人、情感、语言、声学事件和对话状态;语音增强则先改善或分离信号。现代系统通常使用预训练语音 Encoder 加任务头,而不是为每个任务重新设计一套手工特征。
快速开始¶
选择任务后先定义预测单位:帧级、片段级、说话人对级还是波形级。然后按说话人和录音会话切分数据,防止同一个人的相邻片段泄漏到训练集和测试集。建立 Log-Mel + 小型 CNN 基线,再比较冻结和微调预训练 Encoder 的效果。
类别任务至少报告 Macro-F1 和混淆矩阵;验证任务报告 EER;增强任务同时报告信号指标与下游 ASR。若增强后听感变好但 WER 变差,需要判断系统目标究竟是人听还是机器识别。
说话人识别¶
说话人识别包含闭集辨认和开放集验证。早期矢量量化 (Vector Quantization, VQ) 把 MFCC 映射到说话人码本;GMM-UBM 计算目标说话人与通用背景模型的似然比;i-vector 再把整段语音压缩到低维身份向量。
现代路线使用 TDNN、ResNet 或 ECAPA-TDNN 产生 embedding。设帧表示 \(H\in\mathbb{R}^{B\times T\times D}\),统计或注意力池化得到 \(E\in\mathbb{R}^{B\times D_e}\),分类头 logits 为 \([B,S]\),其中 \(S\) 是训练说话人数。训练常使用 softmax 的角度间隔变体,推理时则比较两个归一化 embedding 的余弦相似度:
阈值必须在与部署条件一致的开发集上校准。跨语言、跨设备、短语音、重放和合成语音攻击都要单独测试。
情感与副语言分类¶
语音情感识别使用内容、基频、能量、语速和音色等线索。标签常由主观标注产生,类别边界与文化、语言和数据集强相关。可用自监督 Encoder 的帧表示加注意力池化预测离散类别,或回归 valence、arousal、dominance。
对于 \(K\) 类任务,logits \(Z\in\mathbb{R}^{B\times K}\)、标签 \(y\in\{1,\dots,K\}^{B}\),使用交叉熵;类别严重不平衡时可加权或重采样,但评测仍要报告每类召回率。不能把说话人身份泄漏当作情感特征:同一说话人跨 split 是最低限度的检查。
VAD、分类与时间定位¶
语音活动检测 (Voice Activity Detection, VAD) 输出每帧是否含语音,形状通常为 \([B,T,2]\) 或 \([B,T]\)。声学事件分类对整段音频输出类别,事件检测还要输出起止时间。语言识别、口音分类和关键词检测也可使用相同的 Encoder + pooling/帧级头结构。
片段过短会缺少上下文,片段过长则稀释局部事件。部署时应验证滑窗长度、重叠和后处理迟滞,避免边界附近频繁开关。
语音增强与分离¶
传统谱减法估计噪声谱并从混合谱中减去;维纳滤波根据语音与噪声功率估计构造最小均方误差滤波器。这些方法计算低、可解释,但对非平稳噪声和混响有限。
深度增强可以预测时频 mask、干净频谱或直接生成波形。语音分离从混合信号 \(x=\sum_{i=1}^{S}s_i\) 中恢复多个源。若输出 \(\hat{S}\in\mathbb{R}^{B\times S\times N}\),说话人排列本身没有固定顺序,训练常使用置换不变目标:
Conv-TasNet 展示了在时域直接学习编码、分离和解码的路线。多通道系统还可利用波束形成和到达方向信息,不能在预处理阶段简单平均声道。
工程检查¶
| 现象 | 优先检查 |
|---|---|
| 说话人验证离线很好、线上很差 | 设备、语言、时长和阈值校准是否匹配 |
| 情感模型只预测多数类 | 类别分布、标注一致性和 Macro-F1 |
| VAD 切掉句首句尾 | 窗长、迟滞、最短语音和 padding |
| 增强后出现音乐噪声 | mask 约束、噪声估计和频谱损失 |
| 分离源顺序不稳定 | 是否使用 PIT,后处理是否绑定说话人 |
| 指标提升但下游退化 | 指标是否与真实消费端一致 |
所有身份和情感任务都涉及敏感生物特征或推断。数据收集、保留期限、授权范围和偏差评测必须进入系统设计,而不是只在模型发布后补充。