波形域中的音乐源分离。
项目描述
Demucs 音乐源分离
这是 Demucs (v3) 的第三个版本,具有混合源分离功能。
仅适用于波形 Demucs (v2): Go this commit。如果您遇到问题并希望恢复旧的 Demucs,请填写问题,然后您可以使用
git checkout v2
.
我们提供了用于音乐源分离的 Hybrid Demucs 实现,在MusDB HQ数据集和内部额外训练数据上进行了训练。他们可以将鼓、贝司和人声与其他人分开,并在 2021 年索尼音乐 DemiXing 挑战赛 (MDX)中获得第一名
Demucs 基于受Wave-U-Net启发的 U-Net 卷积架构。最新版本具有混合频谱图/波形分离,以及压缩残差分支、局部注意力和奇异值正则化。查看我们的论文Hybrid Spectrogram and Waveform Source Separation 了解更多详情。据我们所知,Demucs 是目前唯一支持真正端到端混合模型训练的模型,在域之间共享信息,而不是训练后模型混合。
仅在 MusDB HQ 上训练时,Hybrid Demucs 在 MDX 测试集上的 SDR 为 7.33,在 200 个额外训练轨道上达到 8.11 dB。尽管KUIELAB-MDX-Net在人声和其他伴奏方面表现更好,但它对于鼓和贝司提取特别有效。
如果您已经在使用 Demucs 的重要消息
有关更多详细信息,请参阅发行说明。
- 24/02/2022:发布 v3.0.4:分为两个词干(即卡拉 OK 模式)。导出为 float32 或 int24。
- 2021 年 12 月 17 日:发布 v3.0.3:错误修复(感谢 @keunwoochoi)、GPU 上的内存大幅减少(感谢 @famzah)和 CPU 上的新多核评估(
-j
标志)。 - 2021 年 12 月 11 日:发布带有混合域分离的Demucs v3 。对所有来源的重大改进。这是赢得索尼 MDX 挑战的模型。
- 11/05/2021:为 MDX 挑战添加对 MusDB-HQ 和任意 wav 集的支持。有关使用 Demucs 加入挑战的更多信息,请参阅Demucs MDX 说明
- 28/04/2021:Demucs v2,具有额外的增强和基于 DiffQ 的量化。
一切都会中断,请按照以下说明从头开始。这个版本还增加了预测帧之间的重叠,从一个到下一个的线性过渡,这应该可以防止帧边界的突然变化。此外,Demucs 现在在 PyPI 上,因此仅用于分离,安装就像
pip install demucs
:) - 2020 年 4 月 13 日:在 MIT下发布Demucs :我们很高兴在 MIT 许可下发布 Demucs。我们希望这将扩大这项研究对新应用的影响。
与其他型号的比较
我们在下文中提供了本文中提出的不同指标的摘要。您还可以比较 Hybrid Demucs (v3)、KUIELAB-MDX-Net、Spleeter、Open-Unmix、Demucs (v1) 和 Conv-Tasnet 在我的soundcloud 播放列表中我最喜欢的歌曲之一。
精度比较
Overall SDR
是 4 个源中每一个的 SDR 的平均值,MOS Quality
是对人类听众给出的自然度和无伪影的 1 到 5 评级(5 = 无伪影),MOS Contamination
是从 1 到 5 的评级,其中 5 是零污染由其他来源。我们向读者推荐我们的论文,了解更多详细信息。
模型 | 领域 | 额外数据? | 总体特别提款权 | MOS品质 | MOS 污染 |
---|---|---|---|---|---|
Wave-U-Net | 波形 | 不 | 3.2 | - | - |
开放混合 | 频谱图 | 不 | 5.3 | - | - |
D3Net | 频谱图 | 不 | 6.0 | - | - |
转换-Tasnet | 波形 | 不 | 5.7 | - | |
德穆克斯 (v2) | 波形 | 不 | 6.3 | 2.37 | 2.36 |
ResUNet解耦+ | 频谱图 | 不 | 6.7 | - | - |
KUIELAB-MDX-Net | 杂交种 | 不 | 7.5 | 2.86 | 2.55 |
混合 Demucs (v3) | 杂交种 | 不 | 7.7 | 2.83 | 3.04 |
MMDenseLSTM | 频谱图 | 804 首歌曲 | 6.0 | - | - |
D3Net | 频谱图 | 1.5k 首歌曲 | 6.7 | - | - |
斯普利特 | 频谱图 | 25k 首歌曲 | 5.9 | - | - |
要求
你至少需要 Python 3.7。如果您想训练新模型,请参阅requirements_minimal.txt
仅分离要求和environment-[cpu|cuda].yml
(或)。requirements.txt
对于 Windows 用户
每次看到python3
都换成python.exe
. 您应该始终从 Anaconda 控制台运行命令。
对于音乐家
如果你只是想使用 Demucs 来分隔轨道,你可以安装它
python3 -m pip install -U demucs
对于最前沿的版本,您可以使用直接从此 repo 安装
python3 -m pip install -U git+https://github.com/facebookresearch/demucs#egg=demucs
以下页面提供了高级操作系统支持,您必须在发布问题之前阅读适用于您的操作系统的页面:
- 如果您使用的是 Windows: Windows 支持.
- 如果您使用的是 MAC OS X: Mac OS X 支持。
- 如果您使用的是 Linux: Linux 支持。
对于机器学习科学家
如果你安装了 anaconda,你可以从这个存储库的根目录运行:
conda env update -f environment-cpu.yml # if you don't have GPUs
conda env update -f environment-cuda.yml # if you have GPUs
conda activate demucs
pip install -e .
这将创建一个demucs
安装了所有依赖项的环境。
您还需要安装soundstretch/soundtouch:在 Mac OSX 上可以安装brew install sound-touch
,在 Ubuntu 上安装sudo apt-get install soundstretch
。这用于音高/速度增强。
在 Docker 中运行
感谢@xserrat,现在有一个可以使用 Demucs 的 Docker 映像定义。这可以确保正确安装所有库而不干扰主机操作系统。有关更多信息,请参阅他的 repo Docker Facebook Demucs。
从 Colab 运行
我制作了一个 Colab 来轻松地与 Demucs 分开音轨。请注意,对于大型媒体文件,使用 Colab 的传输速度有点慢,但它允许您在不安装任何东西的情况下使用 Demucs。
网络演示
使用Gradio集成到Huggingface Spaces中。见演示:
图形界面
@CarlGao4 发布了 Demucs 的 GUI:CarlGao4/Demucs-Gui。可在此处下载适用于 Windows 和 macOS 的下载。使用FossHub 镜像加快下载速度。
@Anjok07 在支持 Demucs的UVR(Ultimate Vocal Remover)中提供了一个自包含的 GUI 。
其他供应商
Audiostrip 在其网站https://audiostrip.co.uk/上提供与 Demucs 的免费在线分离。
MVSep还提供免费的在线分离,选择Demucs3 model B
最好的质量。
Spleeter.io 在其网站https://www.spleeter.io/demucs上提供与 Demucs 的免费在线分离。
分离轨道
为了尝试 Demucs,您可以从任何文件夹运行(只要您正确安装它)
demucs PATH_TO_AUDIO_FILE_1 [PATH_TO_AUDIO_FILE_2 ...] # for Demucs
# If you used `pip install --user` you might need to replace demucs with python3 -m demucs
python3 -m demucs --mp3 --mp3-bitrate BITRATE PATH_TO_AUDIO_FILE_1 # output files saved as MP3
# If your filename contain spaces don't forget to quote it !!!
demucs "my music/my favorite track.mp3"
# You can select different models with `-n` mdx_q is the quantized model, smaller but maybe a bit less accurate.
demucs -n mdx_q myfile.mp3
# If you only want to separate vocals out of an audio, use `--two-stems=vocal` (You can also set to drums or bass)
demucs --two-stems=vocals myfile.mp3
如果您有 GPU,但内存不足,请使用--segment SEGMENT
以减少每个拆分的长度。SEGMENT
应改为整数。个人推荐不少于10个(数字越大,需要的内存越多,但质量可能会提高)。创建环境变量PYTORCH_NO_CUDA_MEMORY_CACHING=1
也很有帮助。如果这仍然没有帮助,请添加-d cpu
到命令行。有关 GPU 加速的内存要求的更多详细信息,请参阅下文部分。
分开的曲目存储在separated/MODEL_NAME/TRACK_NAME
文件夹中。在那里,您会发现四个以 44.1 kHz 采样的立体声 wav 文件:drums.wav
、bass.wav
、
other.wav
、vocals.wav
(或者.mp3
如果您使用了该--mp3
选项)。
可以处理所有支持的音频格式torchaudio
(即 Linux/Mac OS X 上的 wav、mp3、flac、ogg/vorbis 等)。在 Windows 上,torchaudio
支持有限,所以我们依赖ffmpeg
,它应该支持几乎任何东西。如有必要,音频会即时重新采样。输出将是一个编码为 int16 的波形文件。您可以使用 保存为 float32 wav 文件--float32
,或使用 .保存为 24 位整数 wav文件--int24
。您可以--mp3
改为保存为 mp3,并设置比特率--mp3-bitrate
(默认为 320kbps)。
输出可能需要剪辑,特别是由于一些分离伪影。Demucs 将自动重新调整每个输出主干,以避免削波。然而,这可能会破坏茎之间的相对体积。相反,如果您更喜欢硬剪辑,请通过--clip-mode clamp
. 您还可以尝试减少输入混合物的体积,然后再将其送入 Demucs。
可以使用-n
标志选择其他预训练模型。预训练模型列表如下:
mdx
:仅在 MusDB HQ 上训练,在MDX挑战赛 A 赛道上获胜。mdx_extra
:使用额外的训练数据(包括 MusDB 测试集)进行训练,在MDX挑战的赛道 B 上排名第二。mdx_q
,mdx_extra_q
: 以前模型的量化版本。较小的下载和存储,但质量可能会稍差。mdx_extra_q
是使用的默认模型。SIG
:模型动物园SIG
中的单个模型在哪里。
更快的分离:如果你想要更快的分离,特别是如果你没有 GPU,你可以使用-n 83fc094f
例如使用单个模型,而不是用于比赛的 4 个模型的包。
该--two-stems=vocals
选项允许将人声与其他人声分开(例如卡拉 OK 模式)。
vocals
可以更改为所选模型中的任何源。这将在完全分离混合后混合文件,因此这不会更快或使用更少的内存。
使用输入的随机移位(又名移位技巧--shifts=SHIFTS
)执行多个预测并将它们平均。这使得预测时间变慢。除非你有 GPU,否则不要使用它。SHIFTS
该--overlap
选项控制预测窗口之间的重叠量(对于 Demucs,一个窗口是 10 秒)。默认值为 0.25(即 25%),这可能没问题。
该-j
标志允许指定多个并行作业(例如demucs -j 2 myfile.mp3
)。这将乘以相同的 RAM 使用量,所以要小心!
GPU 加速的内存要求
如果您想使用 GPU 加速,您的 GPU 上至少需要 3GB 的 RAM 才能用于demucs
. 但是,如果使用默认参数,则需要大约 7GB 的 RAM。添加--segment SEGMENT
以更改每个拆分的大小。如果您只有 3GB 内存,请将 SEGMENT 设置为 8(如果此参数太小,质量可能会更差)。创建环境变量PYTORCH_NO_CUDA_MEMORY_CACHING=1
可以帮助使用更小的 RAM(例如 2GB)的用户(我分离了一个 4 分钟的轨道,但只使用了 1.5GB),但这会使分离速度变慢。
如果您的 GPU 上没有足够的内存,只需添加-d cpu
到命令行以使用 CPU。使用 Demucs,处理时间应大致等于轨道持续时间的 1.5 倍。
培训 Demucs
如果你想训练 (Hybrid) Demucs,请遵循训练文档。
MDX 挑战再现
为了重现 Track A 和 Track B 提交的结果,请查看 MDX Hybrid Demucs 提交 repo。
如何引用
@inproceedings{defossez2021hybrid,
title={Hybrid Spectrogram and Waveform Source Separation},
author={D{\'e}fossez, Alexandre},
booktitle={Proceedings of the ISMIR 2021 Workshop on Music Source Separation},
year={2021}
}
执照
Demucs 是根据LICENSE文件中的 MIT 许可证发布的。