微软 DNS-Challenge:用深度学习给语音做降噪
微软 DNS-Challenge:用深度学习给语音做降噪
微软在 GitHub 上开源了 DNS-Challenge 项目,目前拿到 1,435 Star。这个项目是 ICASSP 2023 Deep Noise Suppression Challenge 的官方仓库,提供数据集和脚本,用于训练和评估语音降噪模型。
简单说,就是微软搞了个比赛,让大家用深度学习的方法来做语音降噪,这个仓库是比赛的基础设施。

1、 这个挑战赛在做什么
语音降噪不是新鲜事,但 DNS Challenge 的范围比一般降噪更广。它除了去噪,还包括去混响(de-reverberation)和抑制干扰说话人。
比赛分两个赛道:一个是耳机场景(有线/无线耳机、AirPods 之类的),另一个是非耳机场景(扬声器、笔记本内置麦克风、手机、会议设备)。
评估指标用的是 ITU-T P.835 主观测试框架,分别测量语音质量(SIG)、背景噪声质量(BAK)和整体音频质量(OVRL)。同时引入了词准确率(WAcc)来衡量模型对语音内容的保留程度。
2、 数据集规模
这个项目提供的训练数据量不小。
干净语音数据约 827GB,包含英语、德语、法语、意大利语、西班牙语、俄语等多种语言的录音,还有情感语音和唱歌声音的数据。噪声数据约 58GB,房间脉冲响应约 5.9GB。
解压后全部数据大约需要 1TB 存储空间,压缩包约 550GB。

3、 怎么用
安装依赖:
pip3 install soundfile librosa
下载仓库:
git clone https://github.com/microsoft/DNS-Challenge
编辑 noisyspeech_synthesizer.cfg 配置文件,指定干净语音、噪声和脉冲响应的 CSV 文件路径,以及输出目录。
然后运行合成脚本:
python3 noisyspeech_synthesizer_singleprocess.py
这个脚本会把干净语音和噪声按照指定的信噪比混合,生成带噪声的训练数据。
4、 说话人嵌入
项目默认使用 SpeechBrain 中的 ECAPA-TDNN 预训练模型来提取说话人嵌入向量。参与者也可以用其他公开的说话人嵌入模型,比如 RawNet3。
安装 SpeechBrain:
pip install speechbrain
提取嵌入向量:
import torchaudio
from speechbrain.pretrained import EncoderClassifier
classifier = EncoderClassifier.from_hparams(source="speechbrain/spkrec-ecapa-voxceleb")
signal, fs = torchaudio.load('your_audio.wav')
embeddings = classifier.encode_batch(signal)
之前的 DNS Challenge 用的是 RawNet2 嵌入,这次换了 ECAPA-TDNN,但不同嵌入对个性化语音增强的影响还没有被深入研究。
5、 评估与测试
项目提供了 V5 开发测试集,每条测试音频 10 秒,对应的注册音频 30 秒。盲测集也在仓库中。
词准确率脚本在仓库的 WAcc 目录下。对于耳机赛道,官方提供了 ASR 输出和录音时使用的提示词列表,参与者可以帮忙修正 ASR 输出来生成真实转录文本。
6、 知识产权
有一点值得关注:参与者提交的代码,知识产权不转移给比赛组织方。如果代码被公开发布,参与者仍然是代码的所有者,只需要加上合适的开源许可证就行。
7、 引用
这个项目从 2020 年的 INTERSPEECH 开始,每年都会举办一次挑战赛,到 2023 年已经是第五届。仓库中包含了历年的论文引用信息和基线模型的引用。
代码采用 MIT 许可证,数据集则按照各自的原始许可证发布,包括 Creative Commons、Open Data Commons 等。
引用信息和基线模型的引用。
代码采用 MIT 许可证,数据集则按照各自的原始许可证发布,包括 Creative Commons、Open Data Commons 等。
更多推荐

所有评论(0)