Linux · 2023-01-14

将背景音乐和人声「分离」

来自法国的音乐流媒体公司Deezer开源了一个音轨分离软件spleeter,只需输入一段命令就可以将音乐的人声和各种乐器声分离,支持mp3wavogg等常见音频格式。

这款软件基于TensorFlow开发,效果拔群,有网友说自己曾经试过无数类似软件,spleeter是最好用的一个。

spleeter还支持GPU加速。如果在GPU上运行,会比实时分解速度快100倍,也就是说分解一首5分钟的歌曲只需要3秒

spleeter在GitHub上线仅仅一周,就收获了2.4K星,在Hacker News上也有1000+的热度。

最多分离5个音轨

用户可以根据自己的需求来训练模型,Deezer还给出了在musdb数据集上的预训练模型,因此能直接拿来使用。

在官方提供的预训练模型里,spleeter可将人声和乐器声分为2个音轨,已经能满足基本的要求。

此外它还能把乐器声进一步分离为鼓、贝斯、钢琴及其他乐曲,加上人声,spleeter最多可以分离出5个音轨。

其中,2个音轨和4个音轨的模型在musdb据集上均具有最先进的性能。

使用方法:

spleeter可以从conda或者pip安装。

如果用conda安装,可以选择CPU或者GPU环境,以CPU环境为例:

conda换为清华源,执行如下命令

conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

conda config –set show_channel_urls yes
在Linux系统中,删除 – defaults 增加 ssl_verify: false

vim ~/.condarc
如果是在windows系统,是~/.condarc文件,在C盘的当前用户目录下,是一个隐藏文件;(需要设置onda config –add,才会生成的;)

改为如下所示:

channels:
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/fastai/
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
– https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
show_channel_urls: true
ssl_verify: false
移除刚设置的源,并恢复默认

conda config –remove-key channels
2.2 中科大源
中科大Anaconda 源使用帮助 — USTC Mirror Help 文档

conda换为中科大源,执行如下命令

conda config –add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/

conda config –set show_channel_urls yes
然后删除 – defaults 增加 ssl_verify: false;

移除刚设置的源,并恢复默认

conda config –remove-key channels
2.3 上海交大源
上海交通大学 Linux 用户组 软件源镜像服务

conda换为交源,执行如下命令

conda config –add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/free
conda config –add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/main
conda config –add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/mro
conda config –add channels https://mirror.sjtu.edu.cn/anaconda/pkgs/msys2

conda config –set show_channel_urls yes
删除 – defaults 增加 ssl_verify: false;

移除刚设置的源,并恢复默认

conda config –remove-key channels

<span class="c1"># install using conda</span>
conda install -c conda-forge spleeter
<span class="c1"># download an example audio file (if you don't have wget, use another tool for downloading)</span>
wget https://github.com/deezer/spleeter/raw/master/audio_example.mp3
<span class="c1"># separate the example audio into two components</span>
spleeter separate -i audio_example.mp3 -p spleeter:2stems -o output

如果想换成GPU环境,只需将上述代码中的spleeter-cpu换成spleeter-gpu。

分离音轨的命令中,加入选项-p spleeter:4stems来指定音轨数量,如果不加,系统默认分离为2个音轨。

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

最终乐器和人声将以wav文件的格式保存在audio_output文件夹中。

分离过程可以在GPU或CPU上执行。在GPU上运行,速度非常快,可以实现100倍的加速。

经过实测,在单个英伟达 GTX 1080上,spleeter只用了90秒就分解完了3小时27分钟长度的musDB测试数据

pip安装更简单,但是不支持GPU加速,一般分解一两首歌已足够使用:

pip install spleeter

项目地址: