中文
ZH
← 研究与洞察

从 VAD 到 AED:为什么音频事件检测不能只听人声

语音活动检测只能判断是否有人正在说话。混合媒体中还包含音乐、笑声、掌声和相互重叠的音效。音频事件检测为后续环节提供带类型的时间线,避免配音和混音系统将所有声音都当作语音处理。

过去,在 AI 媒体处理流水线中,面对音频提出的第一个问题简单得近乎直白:现在有人说话吗?这个二元判断就是语音活动检测(VAD)。它成本低、稳定可靠,也早已成为一项基础能力,电话通信、会议系统和 ASR 分块都从这里开始。

一旦音频经过混合,这个问题就不足以支持后续处理了。一段素材可能同时包含语音、音乐、笑声、掌声、关门声和汽车鸣笛。每种事件从何时开始、何时结束,以及与哪些声音重叠,都会影响下一步处理:送去识别、送去配音,还是作为音效保留。这时需要的已不再是语音与非语音之间的判断,而是声音类型与事件识别,也就是生产环境中所说的音频事件检测(AED),在研究文献中则称为声音事件检测(SED)。

对于 VMEG 这类面向创作者的 AI 视频和音频产品,准确识别这些事件,主要是为了提高后续处理的可靠性,其中包括 AI 配音。本文将 VAD 和 AED 视为一项连续演进的能力,介绍二元判断的用途、它无法回答哪些问题,以及通用事件检测器究竟增加了什么能力。


1. 问题已经发生变化

早期音频系统面对的声道相对干净,通常只有一名说话人,以及办公室噪声或电话频段内的声音。VAD 的任务是滤除静音,将类似语音的帧交给编解码器或识别器。不同错误造成的代价并不对等,但处理方向很明确:漏掉一个词会引起用户不满,把一段噪声误判为语音通常只是浪费一些算力。

混合音频改变了这个问题。同一条时间线上可能同时出现说话声、笑声、音乐、环境声和短促音效。能量高的声音不一定是语音;微弱而短暂的事件也可能是关键提示。下游模块需要的不是“这里有人声”,而是一条带类型的时间线:事件属于什么类型、持续多长时间,以及是否与其他声音重叠。

因此,VAD 并没有过时,只是从最终判断降级为可选的粗粒度筛选环节。AED 会回答 VAD 从设计之初就不负责的问题:这是什么声音,又发生在什么时间?

diagram


2. VAD 仍然重要:它是低成本的二元判断环节

VAD 通常输出一条语音与非语音时间线。其方法涵盖能量阈值、过零率和 GMM,也包括 WebRTC VAD 以及 Silero 等神经网络模型。它的目标始终较为有限:在给定信噪比下,尽可能快速地标出可能包含说话声的时间区间。

出于实际需求,VAD 仍然不可替代。ASR 需要分段,否则长文件的对齐会逐渐漂移。语音转换和 TTS 数据清洗需要去除过长的静音。通话和会议系统必须在设备端实时开启和关闭语音通道。在这些场景中,有人声还是没人声就是正确的问题,而 VAD 给出的答案已经足够好。

运行良好的 VAD 几乎不会被听者察觉:起止点干净,呼吸声和短暂停顿得以保留,底噪也不会被误判为语音。它的失效模式同样具体,例如把歌声当作语音、把笑声标成一句台词、在鼓声中将对话切得支离破碎,或将一段混响尾音并入下一句话。

这些错误在电话通话中往往可以容忍。但当同一段音频还要进入识别、配音或混音环节时,仅知道“这里有人声”,会让后续每个模块都基于错误的前提工作。


3. 为什么只问“有人声吗?”还不够

VAD 通常按照“语音与其他所有声音”的二分类目标训练。开放环境中的音频并不遵循这种划分方式。

人类发出的声音不只有说话声。歌唱、笑声、哭声和尖叫都带有声带振动特征,因此 VAD 很容易将它们标记为语音。但下游的处理方式通常并不相同:口语台词可能需要识别或替换;笑声和尖叫更接近音效;歌声则通常属于音乐的一部分。二元判断无法表达这些差异。

各种声音也很少独占时间线。语音可能伴随背景音乐,掌声可能与欢呼声重叠,警笛声也可能和引擎声同时出现。VAD 往往只能看到这些声音的并集,即“这段时间内有人声”,而后续环节需要的是每种事件各自的边界。

简而言之,VAD 回答的是事件是否存在。后续处理需要的是类别与时间定位

能力VAD 可以回答什么后续处理仍然缺少什么
有人声吗?可以,而且通常足够准确是语音、歌声、笑声,还是其他声音?
发生在何时?粗略的边界各事件独立的边界,而不是一个合并后的区间
噪声与静音可以将其作为非语音丢弃其中有哪些音乐、音效和环境事件?
传递给下游的信号只有发送或不发送这段内容应该如何处理?

4. AED:在时间线上检测声音事件

用一句话概括 AED / SED:输入音频,输出带时间戳的事件,每个事件都包含类别,通常还包括置信度。它不会把整段素材压缩成一个全局标签,那属于音频标注或场景分类。AED / SED 具有多标签、可重叠和带时间定位的特点。

研究领域,尤其是 DCASE 声音事件检测,多年来一直沿用这套术语:复音意味着多个类别可以同时处于活跃状态;基于事件的指标关心事件是否被正确放置在时间轴上,而不是逐帧准确率曲线看起来是否平滑。通用标签集可以覆盖大量类别。AudioSet 风格的分类体系不仅包括语音和音乐,还包括笑声、掌声、狗叫、警笛、餐具碰撞声、脚步声、枪声以及大量长尾事件。对于 AED 而言,这些都属于同一个问题:是什么声音、出现在哪个区间,以及是否与其他声音并存?

不同系统采用的架构并不相同。CRNN 使用卷积捕捉局部频谱图模式,再通过循环层建模时间结构,是经典的 SED 主干网络。PANNs、AST、BEATs 及相关的预训练音频编码器,会在检测头之前增强帧级特征。架构名称会变,但其输入输出约定不变:输入波形,输出事件时间线。

AED 相比 VAD 增加的能力,并不是“更准确地判断是否有人声”,而是一个允许重叠的类型维度。两秒钟的窗口内可以同时存在语音与音乐,也可以同时存在笑声与掌声,或者只有完全不含人声的警笛声与引擎声。这样,后续环节才能根据具体事件执行操作,而不是只判断“是否出现过声音”。


5. 通用事件与应用特定标签

在实际产品中,团队很少直接把几百个类别全部交给每一个下游模块。更常见的做法是将通用事件检测器的输出归并为规模较小的工作标签集。这并不是因为 AED 只能识别这些类别,而是因为后续处理通常只需要在少数几个节点上采取不同分支。

媒体制作就是一个典型例子。对于粗粒度检测器来说,对话、歌声和器乐都可能表现为“人声”或“能量”,但它们需要截然不同的处理:语音通常会送去识别或配音,歌声和背景音乐则往往需要保留。因此,一些系统会将通用 AED 输出重新映射为语音 / 歌声 / 音乐等工作标签。这是特定于应用的分类体系,并非 AED 的定义。

通用 AED 仍然可以检测笑声、哭声、掌声和环境音效。产品只需决定哪些事件需要单独处理、哪些需要合并,以及哪些可以忽略。缩小标签集可以简化后续处理,但不会把声音世界压缩成三个类别。


6. 降低后续处理难度

AED 位于流水线的前部,其职责应该保持克制:它不会拆分混合音轨,也不会生成新的语音。它只是为后续模块提供一条真正可用的时间线。

diagram

有了事件时间线,识别模块可以减少在纯音乐上的算力消耗,配音模块可以判断哪些区间可能是对话,混音或音效模块也能区分掌声、笑声和环境声。原始检测结果通常包含多个标签,并且彼此重叠;随后由下游代码决定如何处理每个区间。这种映射关系属于产品逻辑,不属于检测器本身。


7. 如何评估:实验室数据不是最终标准

SED 论文通常采用带容差范围的事件级 F1,以及 PSDS(复音声音检测分数)等曲线指标。这类指标能更真实地惩罚时间误差和漏检,适合用来比较不同检测头:边界偏移了多少、重叠事件是否得到区分、长尾类别是否失效。

真正能够用于产品交付的评估还要回答另一个问题:听众是否会立即察觉这个错误?较高的平均分并不表示短事件、容易混淆的类别或重叠事件已经达到可接受水平。一套清晰的评估至少应区分三类错误:

  1. 类别错误:将一种事件标记成另一种,例如混淆笑声与语音,或警笛声与引擎声。
  2. 边界错误:类别判断正确,但切分点落在事件内部。这会让听感变差,后续分段也会继承这个错误切口。
  3. 存在性错误:漏掉短事件,或将无关声音误判为目标类别。应根据实际用途为这些错误分配权重,不要将它们与类别错误简单平均。

试听清单也应该按照相同方式分类,而不是随意选择少量素材。平均值会掩盖长尾问题,而影响后续处理的失效情况几乎都来自长尾。


8. 局限依然存在

半说半唱的句子、远处的环境人声以及只有两个音节的情绪爆发,仍会长期徘徊在判断阈值附近。声学特征相近的事件,例如语音与歌声、笑声与呼吸声、警笛声与合成器音色,也仍会相互争夺标签。一旦 AED 切分错误,识别、配音和混音都会沿用这个错误的时间窗口。

物理规律仍然构成约束。如果多个声源已经被压缩并混合到一条母带中,即使事件检测器完美无误,也无法从单声道信号中无损恢复每一个声源。AED 能够减少的是本可避免的语义误标,也就是不要把一种声音交给预期处理另一种声音的模块。它改善的是时间语义的质量,无法突破信息论的限制。


9. 要点

VAD 判断是否有人声,AED 判断是什么事件以及发生在何时。前者仍是低成本且不可缺少的筛选环节;后者提供更通用的声音理解能力,让后续处理减少猜测。

AED 本身关注开放环境中的声音事件,以通用事件检测为基础,让后续环节知道该如何处理某个时间区间。先听清事件,再决定接下来如何处理音频。对于 VMEG 这类工具而言,这是实现可靠配音与混音的必要条件,而不是产品上线后的润色环节。