【转】spleeter分离伴奏和人声


近日,Deezer开源了一个名为Spleeter项目,该项目利用深度学习对音乐曲目进行源分离。它使用Keras和TensorFlow构建,Spleeter可以帮助音乐信息检索(MIR)领域的研究机构,充分利用最先进的源分离算法的强大功能,它以基于Tensorflow的Python库的形式出现,包含针对2、4和5个词干分隔的预训练模型。

什么是源分离?

音乐录音通常是几个单独乐器音轨的组合(主音,鼓,贝斯,钢琴等)。
音乐源分离的任务是:给定混合音我们是否可以恢复这些分离的音轨(有时称为tems)
在这里插入图片描述
这个任务的应用范围非常广泛:比如混音、上混音、主动聆听、教育目的,还可以预处理其他任务,例如转录。
通过多种乐器的混合,像Spleeter这样的源分离引擎会输出一组单独的音轨或词干。
有趣的是,我们的大脑非常擅长分离乐器。只需专注于该曲目中的一种乐器,您就可以与其他乐器完全区别开来,并且听到它。但这并不是真正的分离,您仍然可以听到所有其他部分。
在许多情况下,可能无法准确恢复已混合在一起的各个音轨。因此,面临的挑战是尽可能地逼近它们,也就是说,在不造成太多失真的情况下,尽可能地接近原作。
多年来,来自世界各地的数十个杰出研究团队探索了许多策略。
近来,取得了突破性的进步,这主要归功于机器学习方法的进步。
为了跟踪最新进展,人们一直在国际评估活动中比较他们的算法。所以我们知道Spleeter的性能与提出的最佳算法相匹配。
此外,Spleeter非常快。如果您运行的是GPU版本,则预期分离速度比实时速度快100倍,这使其成为处理大型数据集的理想选择。

数据集
mushdb

使用手册

命令描述
train 训练源分离模型,您需要一个单独的轨道数据集才能使用它
evaluate 在musDB 测试集中进行预训练的模型评估

要获得有关separate 命令可用的不同选项的帮助 ,请键入:

spleeter separate -h

  

使用2stems模型

您可以使用默认的2个词干 (人声/伴奏)预训练模型直接分离音频文件, 如下所示:

spleeter separate -i audio_example.mp3 -o audio_output

  

-i 选项用于提供音频文件名列表。
-o 是提供输出路径在哪里写分离的wav文件。
由于该命令将下载预先训练的模型,因此在第一次运行时可能会花费一些时间。如果一切顺利,则应该获得一个audio_output/audio_example 包含两个文件的文件夹 : accompaniment.wav 和 vocals.wav。

使用4stems模型

您还可以使用预先训练的4个主音色 (人声/贝斯/鼓/其他)模型:
该 -p 选项用于提供模型设​​置。它可以是Spleeter 嵌入式设置标识符2 ,也可以是 JSON 文件配置的路径 如:在这里插入图片描述
这一次,它会生成四个文件: vocals.wav, drums.wav, bass.wav 和 other.wav。
目前,可以使用以下嵌入式配置:

spleeter:2stems
spleeter:4stems
spleeter:5stems

  

使用5stems模型

最后,开箱即用的还有经过预训练的 5个 主音(人声/贝斯/鼓/钢琴/其他)模型:

spleeter separate -i audio_example.mp3 -o audio_output -p spleeter:5stems

这将产生五个文件: vocals.wav, drums.wav, bass.wav, piano.wav 和 other.wav

批量处理

separate 每次调用模型时,该命令都会构建模型,并在首次下载时进行下载。如果您处理单个音频文件(尤其是简短的音频文件),则与单独进行分离过程相比,此过程可能会很长。如果要分离多个文件,则建议通过一次调用进行所有分离 separate:

spleeter separate 
     -i <path/to/audio1.mp3> <path/to/audio2.wav> <path/to/audio3.ogg> 
     -o audio_output
spleeter separate -i E:Sabinetekspleeter-masterDanceMonkey.mp3 -p spleeter:2stems -o output

训练模型

为了训练自己的模型,您需要:

  • 分离文件的数据集,例如mushdb
  • 数据集必须在CSV 文件中描述 : 一个用于训练 ,一个用于 验证(用于生成训练数据)。
  • JSON配置文件,收集所需的培训和路径的所有参数 的CSV 文件。

评估模型

为了评估模型,您需要mushdb数据集。例如,您可以通过这种方式评估提供的4个词干预训练模型:

spleeter evaluate -p spleeter:4stems --mus_dir </path/to/musdb> -o eval_output

  

为了使用多通道维纳滤波执行分离,您需要添加 --mwf 选项(以获取报告的结果):

spleeter evaluate -p spleeter:4stems --mus_dir </path/to/musdb> -o eval_output --mwf

使用Docker映像

我们提供的图像是为了将Spleeter 与 Docker一起使用 ( GPU 和 CPU 图像)。您首先需要安装 Docker,例如 Docker Community Edition

建立影像

您可以使用docker build 命令从克隆的存储库构建映像 :

git clone https://github.com/deezer/spleeter 
cd spleeter 
#构建CPU映像。
docker build -f docker / cpu.Dockerfile -t spleeter:cpu。
#构建GPU映像。
docker build -f docker / gpu.Dockerfile -t spleeter:gpu。

  

运行容器

内置图像入口点是 Spleeter的 主要命令 spleeter。因此,您可以 separate 使用docker run3命令运行此先前构建的映像来运行该 命令,并使用已安装的目录进行输出写入:

# Run with CPU :
docker run -v $(pwd)/output:/output spleeter:cpu separate -i audio_example.mp3 -o /output
# Or with GPU if available :
nvidia-docker run -v $(pwd)/output:/output spleeter:gpu separate -i audio_example.mp3 -o /output

  

要通过GPU运行命令 ,应使用 nvidia-docker 命令而不是 docker command。此替代命令允许容器 从主机访问 Nvidia 驱动程序和 GPU设备。

这将分离作为输入提供的音频文件(此处 audio_example.mp3 嵌入在生成的图像中),并将分离的文件 vocals.wav 和 accompaniment.wav 您的计算机放在已安装的输出文件夹中 output/audio_example。

要使用自己的音频文件,您需要在运行图像时创建容器音量,我们也建议您创建一个用于存储下载的模型的音量。这样可以避免 Spleeter 每次运行映像时都下载模型文件。

为此,我们首先创建一些环境变量:

export AUDIO_IN='/path/to/directory/with/audio/file'
export AUDIO_OUT='/path/to/write/separated/source/into'
export MODEL_DIRECTORY='/path/to/model/storage'

然后我们可以separate 通过container 运行 命令:

# Run with CPU :
docker run -v $(pwd)/output:/output spleeter:cpu separate -i audio_example.mp3 -o /output
# Or with GPU if available :
nvidia-docker run -v $(pwd)/output:/output spleeter:gpu separate -i audio_example.mp3 -o /output

  

non️至于非docker用法,我们建议您一次调用Spleeter 映像执行多个文件的分离

您可以使用 train 命令(您应该主要在GPU上使用 它,因为它在计算上非常昂贵)以及 使用musevalevaluate 对musDB测试数据集4 进行评估的 命令

# Model training.
nvidia-docker run -v </path/to/musdb>:/musdb spleeter:gpu train -p configs/musdb_config.json -d /musdb
# Model evaluation.
nvidia-docker run -v $(pwd)/eval_output:/eval_output -v </path/to/musdb>:/musdb spleeter:gpu evaluate -p spleeter:4stems --mus_dir /musdb -o /eval_output

您需要请求访问权限并从此处下载
在GPU上,分离过程应该非常快(在musdb测试集上应该少于90s),但是执行 museval 需要更多的时间(几个小时)

windows下配置spleeter及测试

1.下载压缩包到本地并解压
github
2. 安装ffmpeg(windows版)
win64版本ffmpeg
将依赖ffmpeg(.exe文件)放入spleeter目录下
这里有直接下载好的
3.安装spleeter

pip install spleeter

4.运行程序

spleeter separate -i E:Sabinetekspleeter-masterDanceMonkey.mp3 -p spleeter:2stems -o output

  

在这里插入图片描述
6.看效果
背景声:
背景
分离的声音:
在这里插入图片描述

点此试听音乐效果

from:https://blog.csdn.net/weixin_42788078/article/details/102956046

from:https://blog.csdn.net/weixin_44253169/article/details/111152524

原文地址:https://www.cnblogs.com/xuan52rock/p/14272597.html