音乐录音通常是几个单独乐器音轨的组合(主音,鼓,贝斯,钢琴等)。
音乐源分离的任务是:给定混合音我们是否可以恢复这些分离的音轨(有时称为tems)
这个任务的应用范围非常广泛:比如混音、上混音、主动聆听、教育目的,还可以预处理其他任务,例如转录。
通过多种乐器的混合,像Spleeter这样的源分离引擎会输出一组单独的音轨或词干。
有趣的是,我们的大脑非常擅长分离乐器。只需专注于该曲目中的一种乐器,您就可以与其他乐器完全区别开来,并且听到它。但这并不是真正的分离,您仍然可以听到所有其他部分。
在许多情况下,可能无法准确恢复已混合在一起的各个音轨。因此,面临的挑战是尽可能地逼近它们,也就是说,在不造成太多失真的情况下,尽可能地接近原作。
多年来,来自世界各地的数十个杰出研究团队探索了许多策略。
近来,取得了突破性的进步,这主要归功于机器学习方法的进步。
为了跟踪最新进展,人们一直在国际评估活动中比较他们的算法。所以我们知道Spleeter的性能与提出的最佳算法相匹配。
此外,Spleeter非常快。如果您运行的是GPU版本,则预期分离速度比实时速度快100倍,这使其成为处理大型数据集的理想选择。
数据集
mushdb
命令 | 描述 |
---|---|
train | 训练源分离模型,您需要一个单独的轨道数据集才能使用它 |
evaluate | 在musDB 测试集中进行预训练的模型评估 |
要获得有关separate 命令可用的不同选项的帮助 ,请键入:
spleeter separate -h
您可以使用默认的2个词干 (人声/伴奏)预训练模型直接分离音频文件, 如下所示:
spleeter separate -i audio_example.mp3 -o audio_output
-i 选项用于提供音频文件名列表。
-o 是提供输出路径在哪里写分离的wav文件。
由于该命令将下载预先训练的模型,因此在第一次运行时可能会花费一些时间。如果一切顺利,则应该获得一个audio_output/audio_example 包含两个文件的文件夹 : accompaniment.wav 和 vocals.wav。
您还可以使用预先训练的4个主音色 (人声/贝斯/鼓/其他)模型:
该 -p 选项用于提供模型设置。它可以是Spleeter 嵌入式设置标识符2 ,也可以是 JSON 文件配置的路径 如:
这一次,它会生成四个文件: vocals.wav, drums.wav, bass.wav 和 other.wav。
目前,可以使用以下嵌入式配置:
最后,开箱即用的还有经过预训练的 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:\Sabinetek\spleeter-master\DanceMonkey.mp3 -p spleeter:2stems -o output
为了训练自己的模型,您需要:
为了评估模型,您需要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
我们提供的图像是为了将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 需要更多的时间(几个小时)
1.下载压缩包到本地并解压
github
2. 安装ffmpeg(windows版)
win64版本ffmpeg
将依赖ffmpeg(.exe文件)放入spleeter目录下
这里有直接下载好的
3.安装spleeter
pip install spleeter
4.运行程序
spleeter separate -i E:\Sabinetek\spleeter-master\DanceMonkey.mp3 -p spleeter:2stems -o output
点此试听音乐效果