主要改动
这个模型是mossformer2,2说话人,支持单声道,16k音频,同时发现模型在说话人分离的同时具备很强的降噪效果。
建议使用GPU进行推理,经过测试,GPU的推理速度是CPU的数十倍。
3-6说话人分离 视情况发布。
MossFormer2语音分离模型介绍
本次发布为上一代单声道语音分离算法MossFormer的升级版。并在单声道语音分离任务上比MossFormer取得显著的性能提升。MossFormer模型主要采用了基于自注意力的MossFormer模块,倾向于强调较长范围、粗粒度的依赖关系,在有效建模较细粒度的循环模式方面存在不足。在MossFormer2模型中,我们引入了一种新颖的混合模型,通过将一个循环模块集成到MossFormer框架中,从而具备了同时建模较长范围、粗粒度依赖关系和较细粒度循环模式的能力。为了减轻非并行循环神经网络(RNN)的局限性,我们提出了一种基于前馈顺序记忆网络(FSMN)的非RNN循环模块。该循环模块包含一个基于扩张(dilated)机制的FSMN块,不仅通过扩张机制增强感受野,同时通过密集连接(Dense Connection)提高信息流动性。另外,我们还使用门控卷积单元(GCU)来设计循环模块,以便在降低嵌入维度和提高模型效率的同时,促进相关背景信息的门控控制。该循环模块依靠线性投影(Linear Projection)和卷积来实现对整个序列的无缝并行处理。MossFormer2模型在WSJ0-2/3mix、Libri2Mix和WHAM!/WHAMR!基准测试中表现出色,超越了MossFormer和其他最先进的方法。
模型的使用方式
模型pipeline 输入为个16000Hz采样率的单声道wav文件,内容是两个人混杂在一起的说话声,输出结果是分离开的两个单声道音频。
环境准备
- 本模型支持Linux,Windows和MacOS平台。
- 本模型使用了三方库SoundFile进行wav文件处理,在Linux系统上用户需要手动安装SoundFile的底层依赖库libsndfile,在Windows和MacOS上会自动安装不需要用户操作。详细信息可参考SoundFile官网。以Ubuntu系统为例,用户需要执行如下命令:
sudo apt-get update
sudo apt-get install libsndfile1
代码范例
import onnx
import onnxruntime as ort
import numpy as np
import soundfile as sf
def save_result(est_source):
result = []
for ns in range(2):
signal = est_source[0, :, ns]
signal = signal / np.abs(signal).max() * 0.5
signal = signal[np.newaxis, :]
# convert numpy array to pcm
output = (signal * 32768).astype(np.int16).tobytes()
result.append(output)
save_file = f'output_spk{ns}.wav'
sf.write(save_file, np.frombuffer(output, dtype=np.int16), 16000)
onnx_model_path = 'simple_model.onnx'
onnx_model = onnx.load(onnx_model_path)
onnx.checker.check_model(onnx_model)
ort_session = ort.InferenceSession(onnx_model_path)
input_data,sr = sf.read('mix_speech1_16000.wav')
if sr!=16000:raise 'Only supports 16000 Hz'
if input_data.ndim>1:raise 'Only supports 1 channel'
input_data = np.expand_dims(input_data, axis=0).astype(np.float32)
input_name = ort_session.get_inputs()[0].name
outputs = ort_session.run(None, {input_name: input_data})
output_data = outputs[0]
save_result(output_data)
模型局限性
本模型训练虽然尽量涵盖各类噪声和混响场景,我们也加入一定的电话通道数据,但由于训练数据有限,无法完全覆盖所有噪声、混响场景和电话场景,因而无法保障对各种混合数据上的分离效果!
训练数据介绍
本模型训练时使用了包括WSJ0-2Mix和 Libri2Mix的干净语音混合数据,以及WHAMR、DNS Challenge 2020带噪声及混响数据。
数据评估及结果
MossFormer2模型与其它SOTA模型在公开数据集WSJ0-2mix/3mix、Libri2Mix和 WHAM!/WHAMR!上的对比结果如下,注意:该对比结果使用的是MossFormer2模型在相应的数据集上训练后的参考测试结果,并非本次发布模型的测试结果。
指标说明:
- SI-SNR (Scale Invariant Signal-to-Noise Ratio) 尺度不变的信噪比,是在普通信噪比基础上通过正则化消减信号变化导致的影响,是针对宽带噪声失真的语音增强算法的常规衡量方法。SI-SNRi (SI-SNR improvement) 是衡量对比原始混合语音,SI-SNR在分离后语音上的提升量。
相关论文以及引用信息
Zhao, Shengkui and Ma, Bin et al, “MossFormer2: Combining Transformer and RNN-Free Recurrent Network for Enhanced Time-Domain Monaural Speech Separation”, submitting to ICASSP 2024.
评论