DNS-Challenge 深度降噪实战手册:从零搭建语音增强数据与评估流水线

📅 2026/8/23 14:02:39
DNS-Challenge 深度降噪实战手册:从零搭建语音增强数据与评估流水线
DNS-Challenge 深度降噪实战手册从零搭建语音增强数据与评估流水线【免费下载链接】DNS-ChallengeThis repo contains the scripts, models, and required files for the Deep Noise Suppression (DNS) Challenge.项目地址: https://gitcode.com/gh_mirrors/dn/DNS-ChallengeDNS-Challenge 深度降噪项目是微软 ICASSP 2023 语音增强挑战赛DNS5的官方仓库覆盖训练数据合成、客观质量打分与词准确率评估三类脚本。如果你要训练或复现一个降噪模型最常卡住的两件事——带噪训练数据从哪来和不靠人耳怎么给模型打分——在这里都能直接跑通。 三个真实场景看懂它能做什么场景一给降噪模型造训练集。真实录音里的噪声和说话人是绑死的你很难拿到成对的干净版带噪版。这个仓库的合成器从 827GB 干净语音、58GB 噪声和 5.9GB 房间冲激响应出发随机拼接、卷积混响、按指定信噪比混合一次产出 500 小时、30 秒一条的带噪-干净配对文件名里直接记录了 SNR 和目标电平训练时省去了标注环节。场景二迭代降噪模型时快速打分。每次改完模型跑一批测试集如果靠人听一个晚上听不完。仓库自带的 DNSMOS非侵入式感知客观语音质量指标即只给输出音频、不需要参考信号就能预测主观分把音频切成 9.01 秒窗口过 ONNX 模型直接吐出 SIG语音质量、BAK背景噪声质量、OVRL整体质量三个维度几分钟出完整报表。场景三复现挑战赛结果。DNS5 分两条赛道耳机赛道Track 1针对头戴/入耳式设备和扬声器赛道Track 2针对笔记本、手机内置麦克风等会议场景评估框架是 ITU-T P.835众包主观测试协议分别让听者给语音、噪声、整体打 MOS 分加上词准确率 WAcc把增强后音频丢给 ASR看识别对了多少词。仓库里的开发测试集、基线增强片段、评估脚本都能对上这套流程。 四步把噪声语音合成器跑起来先克隆仓库git clone https://gitcode.com/gh_mirrors/dn/DNS-Challenge安装依赖。合成器只依赖soundfile和librosa如果要跑 DNSMOS再补上onnxruntimepip3 install soundfile librosa pandas onnxruntime打开 noisyspeech_synthesizer.cfg重点改四组参数speech_dir/noise_dir指向你已下载的干净语音和噪声目录noisy_destination/clean_destination指定输出位置SNR 范围默认-5到20dB、共 21 个档位snr_lower/snr_upper/total_snrlevels。启动合成日志会打印每个源文件的裁剪和活跃度统计python3 noisyspeech_synthesizer_singleprocess.py产出后用 unit_tests_synthesizer.py 里的单测抽检 SNR、归一化、采样率和削波是否达标。整条链路就是下数据 → 改配置 → 跑合成 → 验数据不需要 git LFS。 三个值得深挖的机制噪声语音合成器数据是怎么拼出来的noisyspeech_synthesizer_singleprocess.py 是单进程数据生成引擎。它按文件顺序取干净语音可选混入演唱VocalSet、情感语音CREMA-D和普通话数据再随机选一条 T60 落在 0.3~1.3 秒之间的房间冲激响应做 FFT 卷积加混响噪声侧则随机挑一个噪声类别目录采样。混音由 audiolib.py 的segmental_snr_mixer完成按分段能量算 SNR 而不是全局能量更接近真实录音的波动。生成前会对每条素材做削波检测is_clipped和活跃度检测activitydetector不合格的直接丢弃并重试。之所以需要这套机制语音增强模型的泛化能力取决于训练数据里噪声种类、混响强度和 SNR 分布的覆盖面人工录制做不到这种量级。DNSMOS免参考打分怎么落地DNSMOS/dnsmos_local.py 是本地打分脚本。它把音频重采样到 16 kHz不足 9.01 秒则循环补齐然后以 1 秒为步长滑动窗口主模型DNSMOS/sig_bak_ovr.onnx输出 SIG/BAK/OVRL 三个原始分DNSMOS/model_v8.onnxP.808 模型输出整体 MOS原始分再经多项式拟合映射到 MOS 刻度。调用示例python3 DNSMOS/dnsmos_local.py -t ./testset -o scores.csv -p-p参数切换到个性化 MOS 模型pDNSMOS/sig_bak_ovr.onnx会把干扰说话人算作惩罚项对应 P.835 的打分口径。需要它的原因很实际主观测试一次要组织几十名听者而 DNSMOS 与人工排序的相关性足够高适合放在训练循环里当代理指标。WAcc可懂度的自动量化WAcc/WAcc.py 把目录下每个 16 kHz wav 送去做 ASR 转写与 TSV 文本对照算词准确率非 16 kHz 的音频会先重采样再写回。用法是python3 WAcc/WAcc.py --testset_dir ./clips --score_file wacc.csv需要自备对应的转写文本文件开发测试集扬声器赛道附带真值文本。它衡量的和 DNSMOS 不同前者回答人听得舒服吗后者回答机器还认得出内容吗两个维度都过才算增强合格。 数据集下载与评估指标对照下载脚本默认是 dry-run只请求 HTTP 头必须打开脚本把curl或wget那行取消注释才真正拉数据。各赛道脚本分工download-dns-challenge-5-headset-training.sh耳机赛道训练数据download-dns-challenge-5-speakerphone-training.sh扬声器赛道训练数据download-dns5-dev-testset.sh开发测试集10 秒测试片段 30 秒注册片段download-dns5-blind-testset.sh盲测试集解压后的目录结构和容量压缩包约 550GB解压后约 1TBdatasets_fullband -- dev_testset -- impulse_responses 5.9G -- noise_fullband 58G \-- clean_fullband 827G -- emotional_speech 2.4G -- french_speech 62G -- german_speech 319G -- italian_speech 42G -- read_speech 299G -- russian_speech 12G -- spanish_speech 65G -- vctk_wav48_silence_trimmed 27G \-- VocalSet_48kHz_mono 974M评估指标对照指标维度是否需要参考信号对应工具P.835 主观分SIG / BAK / OVRL否听者直接打分ITU-T P.835 众包框架DNSMOSSIG / BAK / OVRL 预测分否dnsmos_local.pyWAcc词准确率需文本真值WAcc/WAcc.py模型延迟实时性约束否提交时按赛道要求统计另外赛道基线用的说话人嵌入是 SpeechBrain 预训练的 ECAPA-TDNNpip install speechbrain后即可加载个人化增强赛道需要它来提取注册语音特征。 论文引用、文档与后续路径论文里用到该数据集时引用inproceedings{dubey2023icassp, title{ICASSP 2023 Deep Noise Suppression Challenge}, author{Dubey, Harishchandra and Aazami, Ashkan and Gopal, Vishak and Naderi, Babak and Braun, Sebastian and Cutler, Ross and Gamper, Hannes and Golestaneh, Mehrsa and Aichner, Robert}, booktitle{ICASSP}, year{2023} }仓库内资料赛题说明见 docs/ICASSP_2022_4th_Deep_Noise_Suppression_Challenge.pdf 与 V5_DNS_Challenge_FinalResults.pdf代码采用 MIT 许可见 LICENSE-CODE文档采用 CC-BY-4.0见 LICENSE。代码层面合成器之外还有一个个人化数据版本 pdns_noisyspeech_synthesizer_singleprocess.py 可作扩展起点。建议的下一步是先下载开发测试集用 DNSMOS 给仓库基线片段打一遍分再跑一次合成器小规模生成数据验证整条流水线然后就可以替换成自己的模型做迭代了。【免费下载链接】DNS-ChallengeThis repo contains the scripts, models, and required files for the Deep Noise Suppression (DNS) Challenge.项目地址: https://gitcode.com/gh_mirrors/dn/DNS-Challenge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考