首页/新闻资讯/正文详情

ESPnet LibriMix 语音分离实验结果解析:从 Conv-TasNet 配置到 SI-SNR 评估全流程

发布时间:2026/9/25 5:48:31 来源:云帆数科 栏目:资讯中心
ESPnet LibriMix 语音分离实验结果解析:从 Conv-TasNet 配置到 SI-SNR 评估全流程
人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本文以 ESPnet 仓库中 egs2/librimix/enh1/RESULTS.md 记录的一份官方语音分离speech separation实验结果为切入点完整解读其背后的数据生成、模型配置、训练与评分链路。读完本文你将掌握 ESPnet2 增强enh任务的 LibriMix 实验复现方法、conf/train.yaml中 Conv-TasNet 风格模型的每一处关键参数以及 STOI / SAR / SDR / SIR 等分离指标在enhanced_dev、enhanced_test上的解读方式。RESULTS.md 记录了什么egs2/librimix/enh1/RESULTS.md是 ESPnet2 语音增强/分离任务的标准结果登记文件内容精炼但信息密度很高完整记录了实验运行环境ESPnet 版本、Python、PyTorch、Git 提交号与日期训练入口与模型命名enh_train_raw模型权重托管于 Zenodo数据与任务设定采样率8k、混合方式min_or_maxmin验证集与测试集的四类分离指标STOI、SAR、SDR、SIR。该文件的生成并不依赖人工撰写当enh.sh完成第 8 阶段Scoring后会调用./scripts/utils/show_enh_score.sh ${_dir}/../.. ${_dir}/../../RESULTS.md自动汇总各数据集评分并输出到RESULTS.md见 enh.sh。因此这份文件既是结果快照也是 ESPnet 增强任务训练 → 推理 → 自动评分 → 汇总闭环的最终产物。实验环境快照原文档记录的运行环境如下数值与版本信息均出自 RESULTS.md 原文不应当作当前仓库的推荐环境dateMon Jan 25 19:16:45 CST 2021python version3.6.3 |Anaconda, Inc.| (default, Nov 20 2017, 20:41:42) [GCC 7.2.0]espnet versionespnet 0.9.7pytorch versionpytorch 1.6.0Git hashdcaba2585e28b85c815807165ba9953565ee8694Commit dateThu Jan 21 21:26:59 2021 0800这段环境信息提示我们RESULTS.md属于早前版本ESPnet 0.9.7的归档结果。在复现时应优先使用当前仓库对应的依赖与安装方式并以自己跑出的评分为准该表可作为模型能力与训练策略的参考基线。任务与数据设定Libri2Mix WHAM 噪声的 8k 分离任务RESULTS.md中enh_train_raw一节写明sample_rate: 8k、min_or_max: min这两个参数直接对应 run.sh 中的顶层设定sample_rate8k min_or_maxmin # min or max. This is to determine how the mixtures are generated in local/data.sh.其语义在 local/data.sh 中有明确定义--min_or_max决定混合信号的生成方式。min表示按较短语音长度对齐生成混合max表示按较长语音长度对齐。脚本会校验取值只能是min或max否则直接报错退出data.sh--sample_rate只允许8k或16kdata.sh。RESULTS.md记录的是8k版本采样率降低后计算成本与数据体积更小便于快速验证模型num_spk支持2或3默认2对应 Libri2Mix / Libri3Mixdata.sh。local/data.sh的完整流水线分为五个阶段data.shstage 0下载 WHAM! 噪声数据约 17.65 GB解压后约 35 GB可自行通过wham_noise变量指定本地已有噪声目录stage 1克隆 LibriMix 工具仓库执行augment_train_noise.py扩充训练集噪声再用create_librimix_from_metadata.py依据--freqs采样率、--modesmin/max、--n_src说话人数生成mix_clean、mix_both、mix_single三类混合stage 2从 Libri2Mix 的mix_both元数据构造 Kaldi 风格数据目录产出wav.scp、spk1.scp、spk2.scp、noise1.scp、utt2spk等文件——这正是--use_noise_ref true所需的噪声参考轨道stage 3按train-100/train-360子集切分训练数据stage 4基于 LibriSpeech 文本为每个说话人生成text_spk1、text_spk2等标注文件供后续可选 ASR 评分使用。run.sh将训练/验证/测试集分别设为train、dev、test并把--use_noise_ref true、--audio_format wav、--lang en、--ngpu 4等参数透传给 enh.sh 执行完整实验run.sh。模型配置详解Conv-TasNet 风格时域分离网络RESULTS.md中的config: ./conf/train.yaml指向 conf/train.yaml它是本次实验的模型骨架结构上对应经典 Conv-TasNet 的编码器-分离器-解码器三段式设计但全部在时域波形上进行optim: adam init: xavier_uniform max_epoch: 200 batch_type: folded batch_size: 6 # batch_size 16 can be trained on 4 RTX 2080ti iterator_type: chunk chunk_length: 24000 num_workers: 4 optim_conf: lr: 1.0e-03 weight_decay: 0 patience: 5 val_scheduler_criterion: - valid - loss best_model_criterion: - - valid - si_snr - max - - valid - loss - min keep_nbest_models: 1 scheduler: reducelronplateau scheduler_conf: mode: min factor: 0.5 patience: 1 model_conf: loss_type: si_snr encoder: conv encoder_conf: channel: 512 kernel_size: 16 stride: 8 decoder: conv decoder_conf: channel: 512 kernel_size: 16 stride: 8 separator: tcn separator_conf: num_spk: 2 layer: 8 stack: 3 bottleneck_dim: 128 hidden_dim: 512 kernel: 3 causal: False norm_type: gLN nonlinear: relu关键参数解读如下优化与训练adam优化器 xavier_uniform初始化初始学习率1.0e-03max_epoch: 200配合reducelronplateaumode: min、factor: 0.5、patience: 1在验证 loss 停滞时减半学习率patience: 5控制提前停止。batch_size: 6是针对 4 张 RTX 2080 Ti 的显存折中选择配置注释明确指出 16 的 batch 也能在同样硬件上训练可通过--enh_args --batch_size 16覆盖。数据切块iterator_type: chunkchunk_length: 24000即训练时从每段波形中切出 24000 个采样点8k 采样率下约 3 秒作为输入块batch_type: folded将 chunk 折叠为 batch 维度。模型选择与保存best_model_criterion采用双指标——验证集si_snr取max、验证集loss取minkeep_nbest_models: 1只保留最优模型。这与enh.sh默认的推理模型名valid.loss.ave.pth平均化模型形成配合。损失函数model_conf.loss_type: si_snr即尺度不变信噪比Scale-Invariant SNR损失这是语音分离领域的主流训练目标与评分阶段的 SI-SNR 指标呼应。时域编解码器encoder: conv与decoder: conv共享相同配置channel: 512、kernel_size: 16、stride: 8相当于可学习的 STFT 与 ISTFT 替代编码器将波形切分为 512 维的时域特征解码器将其重建为波形。TCN 分离器separator: tcn是核心分离模块配置为layer: 8、stack: 38 层 × 3 个堆叠的时域卷积块、bottleneck_dim: 128、hidden_dim: 512、kernel: 3causal: False表示非因果模式可用整段上下文通常带来更好性能norm_type: gLN采用全局层归一化global LayerNormnonlinear: relu。num_spk: 2对应 Libri2Mix 的双说话人分离任务。作为对照仓库还提供了另一份频域掩码方案 conf/tuning/train_enh_rnn_tf.yaml它使用encoder: stft/decoder: stftn_fft: 256、hop_length: 128separator: rnn4 层 BLSTM、512 单元、0.5 dropout损失为mask_mse且掩码类型mask_type: psm相位敏感掩码。这组 tuning 配置说明同一数据与评分体系下ESPnet 支持时域端到端与频域掩码两种路线可依据计算资源与性能目标切换。训练、推理与评分流水线enh.sh是本次实验的执行引擎其关键环节与RESULTS.md直接对应实验目录命名未显式指定--enh_exp时默认输出目录为exp/enh_${enh_tag}其中enh_tag由配置文件自动生成例如本实验即为enh_train_rawtrain.yamlfeats_typeraw的组合见 enh.sh。推理enh.sh在推理阶段并行调用espnet2.bin.enh_inference将每个说话人输出写入spk${i}.scp默认推理参数--normalize_output_wav true --output_format wav保证输出为可直接播放的 wavenh.sh。评分第 8 阶段Scoring对观测信号原始混合与增强信号模型输出分别评分score_obstrue/false两轮。评分命令为python -m espnet2.bin.enh_scoring通过--ref_scp传入各说话人参考轨道、--inf_scp传入待评信号--ref_channel指定参考通道--flexible_numspk处理输出数与参考数不一致的情形enh.sh。协议与汇总默认scoring_protocolSTOI SDR SAR SIR SI_SNRenh.sh。每个协议按说话人求平均后show_enh_score.sh汇总为RESULTS.md。观测信号的结果写入dump/raw/RESULTS.md增强信号的结果写入exp/enh_train_raw/RESULTS.md两者可以横向对比分离带来的增益。结果解读STOI、SAR、SDR、SIRRESULTS.md中enh_train_raw的结果表如下数值为原文档记录datasetSTOISARSDRSIRenhanced_dev0.8511.1010.6722.65enhanced_test0.8510.9210.4222.08各指标含义与解读STOIShort-Time Objective Intelligibility短时客观可懂度取值 0~1越接近 1 表示语音可懂性越高。此处 dev/test 均为0.85说明模型在两套数据上保持了稳定且较高的可懂度。SDRSignal-to-Distortion Ratio信号失真比衡量分离信号相对理想源的整体质量10.67dev与10.42test说明分离后的语音能量集中、失真较低。SARSignal-to-Artifact Ratio伪影比反映分离输出中人工伪影的抑制程度11.10/10.92表明模型几乎没有引入结构性伪影。SIRSignal-to-Interference Ratio干扰抑制比衡量对另一说话人串扰的抑制效果22.65/22.08是四者中最高的说明双说话人间的互扰被有效压制——这正是separator_conf中 3 个堆叠 TCN 块与 512 维隐藏单元所承担的核心职责。整体来看dev 与 test 四项指标差异极小SDR 相差 0.25、SIR 相差 0.57说明模型泛化稳定SIR 显著高于 SAR 与 SDR符合分离网络优先压制干扰、再优化整体失真的典型训练行为。快速复现路径如需在当前仓库复现本实验可按以下步骤仓库为只读所有操作均在本地副本进行进入实验目录egs2/librimix/enh1/按 tools/README.md 安装好 ESPnet 及其依赖在 egs2/librimix/enh1/db.sh 中填写本机LIBRISPEECH数据路径local/data.sh会据此生成 Libri2Mix 混合数据直接运行./run.sh脚本会自动完成 WHAM 噪声下载、LibriMix 数据模拟、数据准备、训练4 GPU、推理与评分也可以按需追加参数例如./run.sh --stage 3 --stop_stage 8跳过数据下载直接训练或用--enh_args --max_epoch 100缩短训练周期训练完成后在exp/enh_train_raw/RESULTS.md查看增强信号评分在dump/raw/RESULTS.md查看原始混合信号评分对比分离增益。延伸阅读任务模板与脚本egs2/librimix/enh1/下的 run.sh、enh.sh、local/data.sh频域掩码对照组配置conf/tuning/train_enh_rnn_tf.yaml增强任务通用模板与说明egs2/TEMPLATE/enh1评分指标实现espnet2.bin.enh_scoring可在 espnet2/bin 目录下找到对应源码继续深入数据格式约定wav.scp / spk1.scp 等doc/espnet2_structured_data.md。综上这份RESULTS.md虽然只有十余行却串联起 ESPnet2 增强任务从数据生成、模型配置到自动评分的完整证据链。以它为入口配合 conf/train.yaml 与 enh.sh即可在自己的数据集上复现并扩展这套 Conv-TasNet 风格的双说话人分离方案。赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐SpeechBrain 盲 SI-SNR 估计Blind SI-SNR Estimation实战指南基于 REAL-M 与 LibriMix/WHAMR! 的无参考语音分离质量评估SpeechBrain 盲 SI SNR 估计Blind SI SNR Estimation实战指南基于 REAL M 与 LibriMix/WHAMR!人工智能深度学习语音音频NLP预训练ESPnet语音分离评估指标SDR、SI-SNR与PESQESPnet语音分离评估指标SDR、SI SNR与PESQ 在语音处理领域如何客观评价语音分离模型的性能是一项关键任务。本文将详细介绍ESPnet工具包中常人工智能语音音频深度学习NLPSpeechBrain中的Conv-TasNet双通道语音分离实现SpeechBrain中的Conv TasNet双通道语音分离实现 在日常会议、视频通话或嘈杂环境中我们常常需要从混合语音中分离出特定说话人的声音。想象一下人工智能深度学习语音音频NLP预训练上一篇工业4.0时代的Python效率革命30秒代码片段驱动智能工厂数据处理下一篇es-toolkit FP 系列用 pipe 组合 Fisher-Yates 洗牌的 shuffle() 算子创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Atlas 300V 24G部署YOLO全流程指南:从硬件定位到推理调优
Atlas 300V 24G部署YOLO全流程指南:从硬件定位到推理调优

最近我在好几个群里都看到有人在聊atlas,问得最多的两个问题:一个说atlas部署yolo卡在模型转换,另一个直接问atlas 300v 24g是运算加速卡吗。其实这俩问的是同一件事——很多人想拿昇腾Atlas这张卡来做目标检测推理,结果被从CUDA迁… · 2026/9/25 5:48:25

Nuke 缓存访问指南:用 ImagePipeline.Cache 统一管理内存与磁盘缓存
Nuke 缓存访问指南:用 ImagePipeline.Cache 统一管理内存与磁盘缓存

移动开发图像处理 【免费下载链接】Nuke Image loading system 项目地址: https://gitcode.com/gh_mirrors/nu/Nuke 点击查看 免费下载 本文聚焦 Nuke 图片加载系统中面向开发者的缓存操作入口 ImagePipeline.Cache(即 pipeline.cache)&… · 2026/9/25 5:48:25

cube-ui TimePicker 时间选择器完全指南:从 API 配置到源码级原理
cube-ui TimePicker 时间选择器完全指南:从 API 配置到源码级原理

前端UI组件移动开发 【免费下载链接】cube-ui :large_orange_diamond: A fantastic mobile ui lib implement by Vue 项目地址: https://gitcode.com/gh_mirrors/cu/cube-ui 点击查看 免费下载 TimePicker 是 cube-ui 中基于 Picker/CascadePicker 封装的三列联动时… · 2026/9/25 5:48:25

Atlas 300V 24G部署YOLO实战:推理加速卡环境搭建与多路调优
Atlas 300V 24G部署YOLO实战:推理加速卡环境搭建与多路调优

一块Ones板卡放服务器里,旁边插着网线,风扇声不算大,但一跑模型温度很快就上来了——这是我对Atlas 300V 24G的第一印象。先说结论:它确实是一块运算加速卡,但和很多人习惯的GPU不是一回事。这篇东西基于我在实际项目里… · 2026/9/25 6:22:40

CSM331A SPI/UART双模CAN协议转换器实战指南
CSM331A SPI/UART双模CAN协议转换器实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:22:40

边缘AI芯片选型:从场景需求反推硬件能力
边缘AI芯片选型:从场景需求反推硬件能力

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:22:40

ROS激光雷达点云投影到图像的工程实践与坑点解析
ROS激光雷达点云投影到图像的工程实践与坑点解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:22:40

Agentic Runtime 设计实战:从状态机到Kubernetes调度
Agentic Runtime 设计实战:从状态机到Kubernetes调度

1. 从“ax”这个标题说起:一个被低估的运行时抽象层第一次看到“ax”这个标题,很多人会一头雾水。它不像“Kubernetes 入门”那样直白,也不像“agentic rag”那样自带热度。但把热搜词摊开来看,ax、agentic、orchestration、runti… · 2026/9/25 6:22:28

Keil工程打不开?常见原因与完整排查解决指南
Keil工程打不开?常见原因与完整排查解决指南

先说句实在话,“KEIL工程打不开”这个报错,遇上过一次就够让人头疼的。明明昨天还好好的工程,今天双击.uvprojx文件,界面闪一下或者干脆弹个红叉,瞬间心态就炸了。尤其是项目做到一半、急着改代码交差的时候&#xff0… · 2026/9/25 6:22:22

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码