微软 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。

README区域截图

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 等。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐