LookOnceToHear的8种语音分离损失函数完全清单:SI-SDR、Fused Loss与CDPAM感知损失选型实战

发布时间:2026/8/27 16:56:13
LookOnceToHear的8种语音分离损失函数完全清单:SI-SDR、Fused Loss与CDPAM感知损失选型实战 LookOnceToHear的8种语音分离损失函数完全清单SI-SDR、Fused Loss与CDPAM感知损失选型实战【免费下载链接】LookOnceToHearA novel human-interaction method for real-time speech extraction on headphones.项目地址: https://gitcode.com/gh_mirrors/lo/LookOnceToHearLookOnceToHear 是一个看一眼就能听清的耳机目标语音提取系统CHI 2024 最佳论文提名用户在嘈杂环境中注视目标说话人几秒系统即可从混合音频中分离出该人的声音。项目的语音分离损失函数全部集中在src/losses/LossFn.py中内置 8 种可选损失SI-SDR、SNR、尺度依赖SDR、Fused Loss、PIT 感知不变损失以及 CDPAM 感知损失等本文带你逐一拆解并给出选型建议。项目一分钟速览核心任务给定双耳混合音频 目标说话人声纹嵌入embedding提取目标语音训练入口src/trainer.py通过--config configs/tsh.json启动损失统一封装LossFn 类 通过name参数选择具体损失forward接收(B, C, T)形状的估计与真值波形训练模块src/ts_hear_embed_pl_module.py中调用损失并记录val/si_snr_i作为监控指标8种损失函数速查表#配置名组成适用场景1sisdr负SI-SDR单说话人提取的标准选择2snr负SNR简单基线3sdsdr尺度依赖SDR关注幅度一致性4snr_sdsdrmax(SNRR, SDSDR)防止两种误差此消彼长5sisdr_with_sumSI-SDR 混合重构L1防平凡解、保完整性6fusedSI-SDR SNR兼顾波形保真与相似性7pit_sisdrPIT包装的双源SI-SDR2说话人、无需对齐8cdpam/mel/l1_mel感知损失家族提升主观听感、去金属味基础三兄弟SI-SDR、SNR 与尺度依赖SDR这三种损失都来自 asteroid 的SingleSrcNegSDR是语音分离领域最常用的指标型损失sisdrSI-SDR信号失真比衡量估计语音与目标在方向上的相似度对尺度不敏感是单说话人提取的首选snr经典信噪比损失实现最简单常作基线sdsdr尺度依赖SDR惩罚幅度偏差让模型不只像目标还要响度对三者都在LossFn构造时通过一行配置完成切换见 LossFn.py 第15-20行。Fused LossSI-SDR 与 SNR 的融合 fused_loss.py 中的FusedLoss同时计算 SI-SDR 与 SNR 两项并直接相加loss mean(sisdr_loss snr_loss)为什么有效SI-SDR 对增益缩放不敏感单独使用时模型可能输出相似度很高但响度不对的结果加入 SNR 项后幅度也被约束输出波形更自然。这是本项目推荐的稳妥组合拳。姊妹实现 scale_dependent_snr_loss.py 中的SDSDR_SNR_Loss则采用torch.maximum(sdsdr, snr)取较大值而非求和——用木桶原理强迫两项同时达标适合对两种误差都不容忍的场景。防平凡解SI-SDR with Sum 的混合重构约束⚠️ 语音分离有个经典陷阱模型可能学出什么都不输出的平凡解。sisdr_with_sum_loss.py 的解法是额外加一项 L1 约束loss mean(SI-SDR) L1(noise_estimate est, mixture)即提取出的语音 估计的噪声必须能还原原始混合音频。这个能量守恒约束确保模型必须把混合信号完整拆分而不是丢掉大部分信息。多说话人场景PIT SI-SDR 的排列不变性当同时分离 2 个说话人时网络输出的第1路不一定对应真值的第1人。sisdr_with_pit.py 使用 asteroid 的PITLossWrapper(PairwiseNegSDR(sisdr))实现排列不变训练PIT对每种排列取最优匹配计算损失无需预先对齐输出顺序还会返回重排后的估计波形供下游使用。感知损失家族CDPAM 与 Mel 谱损失 波形损失指标好但听起来金属味重perceptual_losses.py 提供了 3 种感知损失cdpamCDPAMLoss调用 cdpam 包的时域感知损失直接建模人耳对时域失真的敏感度melMultiResolutionMelSpecLossauraloss 的多分辨率 STFT 损失FFT 大小 1024/2048/8192、Mel 尺度 感知加权兼顾高频细节与低频能量l1_melL1_Mel多分辨率和-差STFT 损失FFT 64~1024 时域 L1双管齐下感知损失计算开销略高建议在指标损失收敛后引入或混合使用显著提升主观听感。选型实战5步选对损失函数单说话人目标提取本项目主任务→sisdr起步追求更稳用fused输出响度异常→ 换sdsdr或snr_sdsdr怀疑模型偷懒/输出偏静音→sisdr_with_sum双说话人分离实验→pit_sisdr指标达标但听感刺耳→ 叠加cdpam/mel感知损失 提示训练模块 ts_hear_embed_pl_module.py 中的默认监控指标是val/si_snr_i与sisdr家族损失天然对齐切换损失时建议同步观察日志中的loss曲线由 trainer.py 驱动。相关文件索引模块路径损失统一入口src/losses/LossFn.pyFused Losssrc/losses/fused_loss.pySNRSDSDR 组合src/losses/scale_dependent_snr_loss.pySI-SDR 混合重构src/losses/sisdr_with_sum_loss.pyPIT 双源损失src/losses/sisdr_with_pit.py感知损失家族src/losses/perceptual_losses.py训练配置示例configs/tsh.json掌握这 8 种语音分离损失函数的差异你就能在 LookOnceToHear 的实验中针对不同任务快速调出最佳组合——从 SI-SDR 到 Fused Loss 再到 CDPAM 感知损失按需取用即可。【免费下载链接】LookOnceToHearA novel human-interaction method for real-time speech extraction on headphones.项目地址: https://gitcode.com/gh_mirrors/lo/LookOnceToHear创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考