MossFormer2语音分离+降噪-单麦-16k

我要开发同款
匿名用户2024年07月31日
616阅读

技术信息

开源地址
https://modelscope.cn/models/dengcunqin/speech_mossformer2_separation_temporal_16k
授权协议
Apache License 2.0

作品详情

主要改动

这个模型是mossformer2,2说话人,支持单声道,16k音频,同时发现模型在说话人分离的同时具备很强的降噪效果。

建议使用GPU进行推理,经过测试,GPU的推理速度是CPU的数十倍。

3-6说话人分离 视情况发布。

MossFormer2语音分离模型介绍

本次发布为上一代单声道语音分离算法MossFormer的升级版。并在单声道语音分离任务上比MossFormer取得显著的性能提升。MossFormer模型主要采用了基于自注意力的MossFormer模块,倾向于强调较长范围、粗粒度的依赖关系,在有效建模较细粒度的循环模式方面存在不足。在MossFormer2模型中,我们引入了一种新颖的混合模型,通过将一个循环模块集成到MossFormer框架中,从而具备了同时建模较长范围、粗粒度依赖关系和较细粒度循环模式的能力。为了减轻非并行循环神经网络(RNN)的局限性,我们提出了一种基于前馈顺序记忆网络(FSMN)的非RNN循环模块。该循环模块包含一个基于扩张(dilated)机制的FSMN块,不仅通过扩张机制增强感受野,同时通过密集连接(Dese Coectio)提高信息流动性。另外,我们还使用门控卷积单元(GCU)来设计循环模块,以便在降低嵌入维度和提高模型效率的同时,促进相关背景信息的门控控制。该循环模块依靠线性投影(Liear Projectio)和卷积来实现对整个序列的无缝并行处理。MossFormer2模型在WSJ0-2/3mix、Libri2Mix和WHAM!/WHAMR!基准测试中表现出色,超越了MossFormer和其他最先进的方法。

模型的使用方式

模型pipelie 输入为个16000Hz采样率的单声道wav文件,内容是两个人混杂在一起的说话声,输出结果是分离开的两个单声道音频。

环境准备

  • 本模型支持Liux,Widows和MacOS平台。
  • 本模型使用了三方库SoudFile进行wav文件处理,在Liux系统上用户需要手动安装SoudFile的底层依赖库libsdfile,在Widows和MacOS上会自动安装不需要用户操作。详细信息可参考SoudFile官网。以Ubutu系统为例,用户需要执行如下命令:
sudo apt-get update
sudo apt-get istall libsdfile1

代码范例

import ox
import oxrutime as ort
import umpy as p
import soudfile as sf

def save_result(est_source):
    result = []
    for s i rage(2):
        sigal = est_source[0, :, s]
        sigal = sigal / p.abs(sigal).max() * 0.5
        sigal = sigal[p.ewaxis, :]
        # covert umpy array to pcm
        output = (sigal * 32768).astype(p.it16).tobytes()
        result.apped(output)
        save_file = f'output_spk{s}.wav'
        sf.write(save_file, p.frombuffer(output, dtype=p.it16), 16000)

ox_model_path = 'simple_model.ox'
ox_model = ox.load(ox_model_path)
ox.checker.check_model(ox_model)
ort_sessio = ort.IfereceSessio(ox_model_path)
iput_data,sr = sf.read('mix_speech1_16000.wav')
if sr!=16000:raise 'Oly supports 16000 Hz'
if iput_data.dim>1:raise 'Oly supports 1 chael'
iput_data = p.expad_dims(iput_data, axis=0).astype(p.float32)
iput_ame = ort_sessio.get_iputs()[0].ame
outputs = ort_sessio.ru(Noe, {iput_ame: iput_data})
output_data = outputs[0]
save_result(output_data)

模型局限性

本模型训练虽然尽量涵盖各类噪声和混响场景,我们也加入一定的电话通道数据,但由于训练数据有限,无法完全覆盖所有噪声、混响场景和电话场景,因而无法保障对各种混合数据上的分离效果!

训练数据介绍

本模型训练时使用了包括WSJ0-2Mix和 Libri2Mix的干净语音混合数据,以及WHAMR、DNS Challege 2020带噪声及混响数据。

数据评估及结果

MossFormer2模型与其它SOTA模型在公开数据集WSJ0-2mix/3mix、Libri2Mix和 WHAM!/WHAMR!上的对比结果如下,注意:该对比结果使用的是MossFormer2模型在相应的数据集上训练后的参考测试结果,并非本次发布模型的测试结果。

指标说明:

  • SI-SNR (Scale Ivariat Sigal-to-Noise Ratio) 尺度不变的信噪比,是在普通信噪比基础上通过正则化消减信号变化导致的影响,是针对宽带噪声失真的语音增强算法的常规衡量方法。SI-SNRi (SI-SNR improvemet) 是衡量对比原始混合语音,SI-SNR在分离后语音上的提升量。

相关论文以及引用信息

Zhao, Shegkui ad Ma, Bi et al, “MossFormer2: Combiig Trasformer ad RNN-Free Recurret Network for Ehaced Time-Domai Moaural Speech Separatio”, submittig to ICASSP 2024.

功能介绍

主要改动 这个模型是mossformer2,2说话人,支持单声道,16k音频,同时发现模型在说话人分离的同时具备很强的降噪效果。 建议使用GPU进行推理,经过测试,GPU的推理速度是CPU的数十倍。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论