Open-Unmix

# assuming you have a PyTorch >=1.6.0 installed
pip install -q torchaudio
import torch

# loading umxhq four target separator
separator = torch.hub.load('sigsep/open-unmix-pytorch', 'umxhq')

# generate random audio
# ... with shape (nb_samples, nb_channels, nb_timesteps)
# ... and with the same sample rate as that of the separator
audio = torch.rand((1, 2, 100000))
original_sample_rate = separator.sample_rate

# make sure to resample the audio to models' sample rate, separator.sample_rate, if the two are different
# resampler = torchaudio.transforms.Resample(original_sample_rate, separator.sample_rate)
# audio = resampler(audio)

estimates = separator(audio)
# estimates.shape = (1, 4, 2, 100000)

模型描述

Open-Unmix 提供了可直接使用的模型,允许用户将流行音乐分离为四个音轨:人声鼓声贝斯以及剩余的其他乐器。这些模型是在免费提供的 MUSDB18 数据集上预训练的。

每个目标模型都基于三层双向深度 LSTM。该模型学习从混合输入的幅度谱图中预测目标源(如人声)的幅度谱图。在内部,预测是通过对输入应用掩码来实现的。模型在幅度域中使用均方误差进行优化。

一个 Separator 元模型(如上面的代码示例所示)将多个用于各目标的 Open-unmix 谱图模型组合在一起,并在使用 torchaudio 应用逆 STFT 之前,通过多通道广义维纳滤波器(multichannel generalized Wiener filter)整合它们的输出。该滤波是 norbert 的可微分(但无参数)版本。

预训练的 Separator 模型

  • umxhq (默认) 是在 MUSDB18-HQ 上训练的,该数据集包含与 MUSDB18 相同的音轨,但未经过压缩,能够提供 22050 Hz 的全带宽。
  • umx 是在常规的 MUSDB18 上训练的,由于 AAC 压缩,其带宽被限制在 16 kHz。该模型应仅用于与 SiSEC18 中其他(较旧的)方法进行评估比较。

此外,我们还提供了一个由 Sony Corporation(索尼公司) 训练的语音增强模型。

所有三个模型也都提供谱图(核心)模型版本,它们接收幅度谱图作为输入并输出分离后的谱图。这些模型可以通过 umxhq_specumx_spec 和 umxse_spec 加载。

详细信息

如需更多示例、文档和使用指南,请访问 GitHub 仓库

此外,这些模型以及用于预处理、读取和保存音频音轨的所有工具函数,均包含在一个可通过以下方式安装的 Python 包中:

pip install openunmix

参考文献

音乐源分离的参考实现

模型类型: 音频 | 可脚本化
提交方: Inria