尧图精选

ESPnet DNS Interspeech 2020 语音增强 Recipe 实战指南:从 BLSTM 到 TFGridNet 的完整复现与评分解读

🕒 发布时间:2026/9/25 14:12:43 📁 来源:尧图网络
人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本指南以 egs2/dns_ins20/enh1/README.md 为骨架完整讲解 ESPnetEnd-to-End Speech Processing Toolkit中基于 DNS ChallengeINTERSPEECH 2020数据集的语音增强EnhancementENH配方从语料仿真、数据准备、四种主流增强模型BLSTM-TF、DCCRN、Conv-TasNet、TFGridNet的训练配置到推理、评分与模型分发。读完本文你将能够复现该配方、读懂其RESULTS评分表并根据实际场景选择与调优模型。配方定位DNS-INS20 与合成语音增强基准dns_ins20是 ESPnet 中专门面向DNS ChallengeINTERSPEECH 2020提供的语音增强配方位于 egs2/dns_ins20/enh1配方类型为enh1单说话人语音增强即 1 个参考说话人 噪声。该配方采用 合成混合 策略使用 DNS Challenge 官方提供的干净语音与噪声素材在本地按指定信噪比SNR混合生成训练/验证数据并利用官方测试集评估模型在无混响no_reverb与带混响with_reverb两种条件下的增强效果。从 run.sh 可以看到默认的数据集划分sample_rate16k train_settr_synthetic valid_setcv_synthetic test_setstt_synthetic_no_reverb tt_synthetic_with_reverb即训练集tr_synthetic、验证集cv_synthetic两个测试集分别对应无混响与带混响的合成测试语音采样率统一为 16 kHz。数据准备从 DNS 语料到可训练数据前置条件配置 DNS 数据路径数据准备由 local/data.sh 驱动它依赖db.sh中的DNS变量指向 DNS Challenge 数据目录db.shDNS # 例如 /path/to/DNS-Challenge如果DNS未设置local/data.sh会直接报错 Fill the value of DNS of db.sh。阶段 1数据仿真Data Simulationlocal/data.sh的阶段 1 调用 dns_create_mixture.sh将 DNS 官方数据目录中的噪声datasets/noise与干净语音datasets/clean混合生成带噪语音输出到data/dns_wav。该脚本会基于 DNS 自带的noisyspeech_synthesizer.cfg生成一份本地训练配置并可通过--configure参数覆盖默认配置其核心仿真参数包括参数默认值含义total_hours100生成的混合语音总时长小时默认配置约产生 33 GB 数据snr_lower0混合信噪比下限dBsnr_upper40混合信噪比上限dBnoisy/clean/noise_destinationdata/dns_wav/{noisy,clean,noise}三类音频的输出目录阶段 2数据整理Data Preparationlocal/data.sh的阶段 2 调用 dns_data_prep.sh生成 ESPnet/Kaldi 风格的数据目录{tr,cv}_synthetic与tt_synthetic_{no,with}_reverb。关键产出包括wav.scp混合语音含噪路径清单spk1.scp参考干净语音路径清单ref_num1单说话人noise1.scp参考噪声路径清单对应run.sh中的--use_noise_ref trueutt2spk、spk2utt、text等标准数据目录文件。从 run.sh 的参数可见本配方不使用去混响参考--use_dereverb_ref false使用噪声参考--use_noise_ref true这正是纯降噪任务的设定。值得注意的是 README.md 中 DCCRN 一节的注释——该模型仅在无混响数据上训练the model is only trained on data without reverberation因此在带混响测试集上指标明显回落这是复现时需要注意的数据差异来源。四种增强模型的配置与原理本配方在 conf/tuning 下提供了四种模型的完整训练配置均以 conf/train.yaml默认 BLSTM-TF 基线为参照。所有配置共享相同的训练框架参数Adam 优化器lr1e-3、reducelronplateau学习率调度、以验证集si_snr与loss双指标选优、best_model_criterion控制最优模型保存。BLSTM-TF默认基线配置文件train_enh_blstm_tf.yaml即 conf/train.yaml 本身。其核心结构model_conf: loss_type: mask_mse # 掩码 MSE 损失 mask_type: psm # 理想比例掩码 (PSM) encoder: stft # 短时傅里叶变换编码器 encoder_conf: n_fft: 256 hop_length: 128 decoder: stft decoder_conf: n_fft: 256 hop_length: 128 separator: rnn # RNN 分离器 separator_conf: rnn_type: blstm # 双向 LSTM num_spk: 1 nonlinear: relu layer: 3 unit: 896 dropout: 0.5对应实现见 rnn_separator.pySTFT 域掩码估计3 层 896 单元双向 LSTM回归相位敏感掩码PSM。其评分为 STOI 0.95 / SDR 18.63验证集是配方中参数最少、最容易训练的入门基线。DCCRN配置文件train_enh_dccrn.yaml。DCCRN 是深度复数卷积循环网络Deep Complex Convolution Recurrent Network直接对复数频谱建模init: null # 不设置通用初始化DCCRN 自带初始化 batch_size: 32 iterator_type: chunk chunk_length: 64000 # 约 4 秒 16kHz encoder: stft encoder_conf: n_fft: 512 win_length: 400 hop_length: 100 decoder: stft decoder_conf: n_fft: 512 win_length: 400 hop_length: 100 separator: dccrn criterions: - name: si_snr # 训练目标为 SI-SNR wrapper: fixed_order实现见 dccrn_separator.py。该模型采用 chunk 迭代器iterator_type: chunk块长 64000 采样点在验证集上 PESQ 达到 3.72、STOI 0.98、SDR 24.69。Conv-TasNet配置文件train_enh_conv_tasnet.yaml。这是经典的时域端到端分离模型直接在波形上操作batch_size: 16 # 4 张 RTX 2080ti 可训练 iterator_type: chunk chunk_length: 40000 encoder: conv encoder_conf: channel: 256 kernel_size: 20 stride: 10 decoder: conv decoder_conf: channel: 256 kernel_size: 20 stride: 10 separator: tcn separator_conf: num_spk: 1 layer: 8 stack: 4 bottleneck_dim: 256 hidden_dim: 512 kernel: 3 causal: False # 非因果 norm_type: gLN # 全局层归一化 criterions: - name: si_snr wrapper: pit # 排列不变训练 (PIT)注意其损失使用wrapper: pit排列不变训练尽管num_spk1时 PIT 与固定顺序等价但保留了多说话人扩展的可能。验证集 STOI 0.97、SDR 24.52。TFGridNet配置文件train_enh_tfgridnet.yaml。TFGridNet 是基于时频域网格的堆叠注意力模型2023 年加入也是当前配方中指标最好的模型max_epoch: 35 batch_size: 2 # 模型规模大需要小 batch iterator_type: chunk chunk_length: 48000 num_iters_per_epoch: 5000 encoder: same decoder: same separator: tfgridnet separator_conf: n_srcs: 1 n_fft: 512 stride: 256 n_imics: 1 n_layers: 4 lstm_hidden_units: 128 attn_n_head: 4 attn_approx_qk_dim: 512 emb_dim: 32 emb_ks: 4 emb_hs: 4 activation: prelu criterions: - name: mr_l1_tfd # 多分辨率 L1 时频域损失主损失 conf: window_sz: [256, 512, 768, 1024] time_domain_weight: 0.5 - name: si_snr # SI-SNR 辅助损失权重 0.0仅监控 wrapper: fixed_order use_amp: false实现见 tfgridnet_separator.py。它采用多分辨率 L1 时频域损失mr_l1_tfd作为主训练目标SI-SNR 仅用于监控权重 0.0在验证集上 PESQ_WB 3.61、STOI 99.06%、SDR 26.04是无混响测试集上 SDR 提升最明显的方案。训练、推理与评分流水线整个流水线由 enh.sh 驱动ESPnet 通用的 ENH 脚本默认执行 stage 1–8 并与 run.sh 的参数配合Stage功能关键命令/产出1数据准备local/data.sh仿真 数据整理2变速扰动可选perturb_enh_data_dir_speed.sh本配方未启用3音频格式统一scripts/audio/format_wav_scp.sh转 FLAC 并重采样至 16 kHz4去除过短/过长音频按min_wav_duration/max_wav_duration过滤5统计收集espnet2.bin.enh_train --collect_stats true产出 shape 文件6模型训练espnet2.bin.enh_train输出到exp/enh_${enh_tag}7推理增强espnet2.bin.enh_inference对 valid/test 集生成增强语音8评分espnet2.bin.enh_scoring生成各数据集的评分表9–10ASR 联合评估可选用预训练 ASR 模型解码并计算 WER/CER11打包模型espnet2.bin.pack enh产出可分发 zip12上传 HuggingFace需设置hf_repo与 git-lfsrun.sh中值得注意的推理参数--inference_model valid.loss.best.pth # 选择验证损失最小的模型 --max_wav_duration 31 # 训练样本最大时长 31 秒 --ref_num 1 # 单说话人增强增强推理Stage 7 对每个数据集调用espnet2.bin.enh_inference默认推理参数enh.sh中为inference_args--normalize_output_wav true --output_format wav inference_modelvalid.loss.ave.pth # 默认取验证集平均模型输出按说话人保存为spk1.scpinf_num默认等于ref_num即输出 1 路增强语音存放在exp/enh_${enh_tag}/${inference_tag}_${dset}/下。评分与 RESULTS 生成Stage 8 使用espnet2.bin.enh_scoring默认评分协议enh.shscoring_protocolSTOI SDR SAR SIR SI_SNR评分过程对观测信号原始含噪语音与增强信号分别计算每项指标按说话人汇总后求平均最终由 show_enh_score.sh 生成 Markdown 格式的RESULTS.md——这正是 egs2/dns_ins20/enh1/README.md 中评分表的来源。该脚本会同时记录 Python/ESPnet/PyTorch 版本与 Git hash保证结果可追溯文档中每次实验都带完整环境快照例如 python 3.8.5 / espnet 0.9.9 / pytorch 1.4.0。指标说明PESQ语音质量感知评估、STOI短时客观可懂度、SAR/SDR/SIR信号失真/干扰比分解、SI-SNR尺度不变信噪比。其中 README 特别注明 DCCRN 的 PESQ 基于python-pesq计算vBaiCai/python-pesq 实现是横向对比时需要注意的度量口径差异。实验结果全景四份评分表解读egs2/dns_ins20/enh1/README.md 汇总了 2021–2024 年间四次独立实验的结果覆盖 4 种模型、3 个数据集1. enh_train_enh_blstm_tf_rawespnet 0.9.92021-05datasetSTOISARSDRSIRenhanced_cv_synthetic0.9518.6318.630.00enhanced_tt_synthetic_no_reverb0.9210.9210.920.00enhanced_tt_synthetic_with_reverb0.859.319.310.00SIR 恒为 0.00 是单参考单说话人评分的固有现象仅有一个输出流参与指标分解时干扰项为 0SAR 与 SDR 相等。2. enh_train_enh_dccrn_rawespnet 0.10.5a12022-02datasetPESQSTOISARSDRSIRSI_SNRenhanced_cv_synthetic3.720.9824.6924.690.0024.22enhanced_tt_synthetic_no_reverb3.290.9617.6917.690.0017.50enhanced_tt_synthetic_with_reverb2.540.8110.4510.450.009.72此实验加入了 PESQ 与 SI-SNR 指标受仅无混响数据训练限制带混响测试集上 PESQ 从 3.29 跌至 2.54。3. enh_train_enh_conv_tasnet_rawespnet 0.10.6a12022-04datasetSTOISARSDRSI_SNRenhanced_cv_synthetic0.9724.5224.5224.43enhanced_tt_synthetic_no_reverb0.9617.6617.6617.69enhanced_tt_synthetic_with_reverb0.8411.8411.8411.154. enh_train_enh_tfgrid_rawespnet 2023082024-03datasetPESQ_WBSTOISARSDRSIRSI_SNRenhanced_cv_synthetic3.6199.0626.0426.040.0026.44enhanced_tt_synthetic_no_reverb3.3297.8820.1820.180.0020.17enhanced_tt_synthetic_with_reverb2.7991.7515.5415.540.0015.06此实验使用 PESQ_WB宽带 PESQ且 STOI 以百分数呈现格式与前几次实验不同对比时需注意。跨模型对比结论在无混响测试集上TFGridNet 的 SDR20.18显著优于 BLSTM-TF10.92与 DCCRN17.69Conv-TasNet 居中17.66在带混响测试集上所有模型均有明显回落TFGridNet SDR 15.54、DCCRN 10.45、BLSTM-TF 9.31说明混响仍是语音增强的难点训练数据的混响条件直接影响带混响评测DCCRN 仅用无混响数据训练其 with_reverb 指标跌幅最大。预训练模型与模型分发egs2/dns_ins20/enh1/README.md 为除 BLSTM-TFZenodo 存档外的模型提供了 HuggingFace 预训练权重入口。在enh.sh中通过--download_model参数即可直接下载并使用预训练模型完成推理与评分download_model # 例如 HF 上的 dns_ins20 enh 模型 IDenh.sh会调用espnet_model_zoo_download解包模型自动解析enh_model_file与enh_train_config并建立符号链接随后跳过训练直接进入 stage 7 推理和 stage 8 评分stage 5/6 被跳过。若需自行分发stage 11 的espnet2.bin.pack enh会将config.yaml、模型权重与RESULTS.md打包为 zipstage 12 可配合hf_repo变量上传到 HuggingFace需预先安装 git-lfs。复现与调优建议复现步骤配置 db.sh 的DNS路径 → 运行./run.sh默认 2 卡训练→ 查看exp/enh_*/RESULTS.md显存紧张时从 train_enh_blstm_tf.yaml 起步batch 64、参数量小或降低 Conv-TasNet 的batch_size其配置注释给出 4×RTX 2080ti 的参考TFGridNet 需 2 的 batch size 与约 48000 采样点的 chunk追求带混响性能应引入混响数据或参考 dns_create_mixture.sh 调整仿真 SNR 范围避免 DCCRN 式无混响训练导致的评测落差指标口径PESQ窄带/宽带、STOI小数/百分数与 SI-SNR 的引入版本不同跨实验对比时应优先比较同一次实验内部的 SDR/STOI模块化复用四种分离器的实现均可直接复用于其他 ENH 配方——rnn_separator.py、dccrn_separator.py、tfgridnet_separator.py 均位于espnet2/enh/separator/通过separator字段即可在任意enh.sh配方中切换。赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet CHiME-4 多通道语音增强实战从数据模拟到 Conv-TasNet、MVDR、DC-CRN 与 FASNet 的完整评测指南ESPnet CHiME 4 多通道语音增强实战从数据模拟到 Conv TasNet、MVDR、DC CRN 与 FASNet 的完整评测指南 本文以 ESP人工智能语音音频深度学习NLPSpeechBrain 语音去混响实战Spectral-Mask 基线 Recipe 完整解析与复现指南SpeechBrain 语音去混响实战Spectral Mask 基线 Recipe 完整解析与复现指南 导读 本文基于 SpeechBrain 开源语音工具人工智能深度学习语音音频NLP预训练AWS CLI apigatewayv2 get-api-mapping 命令详解查询自定义域名下的 API 映射AWS CLI apigatewayv2 get api mapping 命令详解查询自定义域名下的 API 映射 本文围绕 AWS CLI 中 apigat人工智能语音音频深度学习NLP上一篇Wasp 0.14 读取 Google 认证身份数据AuthUser、identities 与底层实体模型完全指南下一篇9大网盘直链解析工具免费高速下载完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →