Ontology-based Target Sound Extraction
Carlos Hernandez-Olivan, Marc Delcroix, Tsubasa Ochiai, Naohiro Tawara, Shoko Araki
eess.AS
2026-09-01
NTT在SoundBeam上用AudioSet本体做条件化,多热查询加CPCC正则一次前向覆盖三层。叶级SI-SNRi达7.10dB,比叶子聚合基线5.42高1.68;根级从1.52提到6.43。
目标声音提取(Target Sound Extraction,TSE)要做的事很具体:混音里有好几种声音,给一个语义查询,模型只把要的那一类抠出来。现有系统几乎都把类别当成互不相关的标签,「猫」和「狗」在嵌入空间里没有亲缘关系,「动物」这个更粗的查询也没法直接用同一个模型回答。
实际场景里查询粒度会变。家用监控可能要「动物」,宠物项圈只要「猫」。Kong 等人的做法是先做声音事件检测,把检测到的叶子类逐个提取,再按 AudioSet 本体汇总。这条路要多一个检测模型,每个叶子还要单独前向一次,训练 TSE 时也不看层级。另一条路是把层级塞进双曲空间做分离,但嵌入几何和本体树距离对不上,没法直接量。
NTT 把任务改写成:本体树上任意节点都能查,一个模型、一次前向。本体从 AudioSet 裁出三层。根节点(L0)是 animal、human、music、soundsthings;中间层(L1)是 domestic、voice、instrument 这类;叶子是 cat、dog、female speech 等细类。部分节点既当中间层评,也当叶子评。
骨干是 SoundBeam:时域 encoder-masker-decoder。1D 卷积把混音编到隐空间,TasNet 式 masker 用查询嵌入做乘法条件化,解码还原波形。类别走可学习嵌入表。论文比了三种条件化。
训练时每个 batch 在每一层抽一个节点。重建损失是负 SI-SNR。另外加一项来自图像分类的 CPCC 损失(Cophenetic Correlation Coefficient):让嵌入两两欧氏距离和本体树上最短路径距离的 Pearson 相关尽量高,权重 λ=0.1。树距举例:亲兄弟叶子距离 2,叶子到直接父节点距离 1,跨根分支最远到 2×树深。
数据是合成混音。FSD50K 提供环境声,LibriSpeech 替换其中的语音,SynthSOD 和 MoisesDB 补乐器和古典。采样分两步:先在同一子树抽 2 到 3 个叶子,再从另一个根下抽 2 到 3 个,保证每条 5 秒混音至少跨两个根,含 3 到 5 个目标,单源 2.5 到 3.5 秒,相对背景 SNR 5 到 15 dB。训练集 48K,验证 4K,测试 8K。模型侧:encoder/decoder 核 16、步长 8;masker 512 通道、8 块;嵌入维 256;batch 8,学习率 1e-5。
指标是测试集上的平均 SNRi / SI-SNRi(dB)。未处理混音相对目标已经是负的:根级 -0.69,中间层 -2.00,叶子 -5.43。根级输入 SNR 更高,因为同根下往往有多个事件,目标占混音能量的比例更大。
| 条件化 | CPCC | 根 SI-SNRi | 中间层 SI-SNRi | 叶子 SI-SNRi |
| 叶子提取+聚合(全叶子) | 无 | 1.52 | 2.97 | 5.42 |
| 叶子提取+聚合(Oracle 检测) | 无 | 3.79 | 4.22 | 5.42 |
| 多热 | 无 | 5.57 | 5.93 | 6.12 |
| 多热 | 有 | 6.43 | 6.66 | 7.10 |
| 全本体 one-hot | 无 | 4.42 | 4.90 | 5.68 |
| 全本体 one-hot | 有 | 4.75 | 5.12 | 5.73 |
全叶子聚合在叶子级还能打,SI-SNRi 5.42,和 Oracle 一样,因为叶子查询本来就只提一个类。一到根级,SNRi 掉到 -4.67,SI-SNRi 只剩 1.52。不在场的叶子也会被提一遍再加进去。Oracle 检测把这件事抹掉,根级 SI-SNRi 回到 3.79,这是「先检测再提取」路线的上界,不是 Kong 系统的复现。
多热一次前向就超过这条 Oracle 上界。加上 CPCC 之后三层都是表里最好:根 6.43、中间 6.66、叶子 7.10。叶子相对聚合基线 +1.68 dB SI-SNR,相对无 CPCC 的多热再 +0.98。全本体 one-hot 全程落后多热一截,根和中间层差过 1 dB;CPCC 对它几乎帮不上忙,根级 SNRi 还从 5.87 掉到 5.52。
父类嵌入写成子类之和,比给父类单独一个 one-hot 更有效。层级约束加在这种已经共享子嵌入的空间上,才有增益。
给做听觉场景分析和可听设备的人,这是一条很具体的产品需求:同一套权重既要回答「把说话抠出来」,也要回答「把人声都抠出来」,还不能先跑一个检测器。多热查询把这件事做成一次前向,推理成本按叶子数从 O(|L|) 降到 O(1)。
对训练 TSE 的人,数字说明层级信息即使只关心叶子也有用:叶子 SI-SNRi 从 5.42 到 7.10,没有换更大骨干,只是查询编码和一项正则。代价是训练数据必须有叶子级隔离音源,混音还得按本体分层采样。这是渐进改进,骨架仍是 SoundBeam,新东西在条件化和损失。
数据全是 5 秒合成混音,3 到 5 个源,SNR 还控制在 5 到 15 dB。真实录音里的重叠、混响、本体标注噪声,这篇没有测。
本体是从 AudioSet 裁出来的闭集树,查询只能是树上的节点,没有文本开放词表,也没有 enrollment 音频查询。作者把这两项列进未来工作。
CPCC 的 λ 只试了 0.1,敏感度分析明确留到以后。全本体 one-hot 加了 CPCC 之后,SNRi 在根和叶子还略降,说明这项目正则并不是无条件加分,它和「父嵌入等于子嵌入之和」绑在一起才有效。
和双曲空间分离那条线没有实验对照。Oracle 检测基线也不是 Kong 等人系统的复现,只是概念上界。测试集 8K 条都来自同一套合成流程,泛化幅度读不出来。