Spleeter 的简介
有时我们需要对音频进行消除人声(原声)处理,在质量要求不太高的情况下通常会选择使用后期软件来完成。这类软件市面上也非常多,像 GoldWave Audacity 等都内置了消除人声的功能。因为人声在左右声道的波形是完全相同的,并且频率通常处在特定区间内,这使得人声能够较为容易的从背景伴奏中分离去除。
但这种简单粗暴的方法并不是没有缺点,在消除人声的同时,部分背景伴奏也会被同时去除。而 Spleeter 则是一款使用机器学习对音频进行人声和伴奏分离的软件,效果远好于传统基于固定算法的软件。
下面我们便以 Debian 10 平台为例来演示 Spleeter 的安装和使用。考虑到步骤相对复杂,如果只是偶尔需要用到,建议可以直接使用官方提供的 Google Colab 脚本。
安装依赖
这里 reizhi 没有选择使用官方推荐的 Conda 而是直接用 Debian 源来安装。
apt install python3 python3-pip
apt install libsndfile1 libsndfile-dev ffmpeg
发文的当下 Debian Stable 源中的 Python3 版本为3.7.3,下面我们查看当前 Python3 所支持的 whl 文件类型。
python3
import pip._internal
print(pip._internal.pep425tags.get_supported())
此处会得到类似以下的回显:
记住第一个大括号内的 cp37m 和 manylinux1_x86_64 ,后面会用到。
之后按 Ctrl + D 退出 Python 交互模式。
安装 tensorflow 和 llvmlite
本来 tensorflow 和 llvmlite 应该能够通过 pip3 来自动安装,不知为何 reizhi 实测下来在 Debian 10 上会出现各种问题,只好手动安装。考虑到 Debian Stable 的软件都比较老,估计用 Ubuntu 不会有各种奇怪的问题。
前往这个页面下载 tensorflow 2.3.0 ,按照上一步中的结果,我们选择下载最接近的文件 tensorflow-2.3.0-cp37-cp37m-manylinux2010_x86_64.whl
。下载完成后将其重命名为 tensorflow-2.3.0-cp37-cp37m-manylinux1_x86_64.whl
并使用 pip3 install tensorflow-2.3.0-cp37-cp37m-manylinux1_x86_64.whl
进行安装。
之后前往这个页面下载 llvmlite ,按照和上一步中同样的方式,下载 llvmlite-0.36.0-cp37-cp37m-manylinux2010_x86_64.whl
并重命名为 ......manylinux1......
后安装。
安装 Spleeter
终于我们完成了所有的准备工作,可以安装 Spleeter 了。使用 pip3 install spleeter
进行安装。
如果最终没有什么报错就总算是装好了。Spleeter使用起来非常简单,运行 spleeter separate -p spleeter:2stems -o output input.mp3
即可。其中 output 为输出文件夹的名称,input.mp3 为源文件的名称。实测下来对中文文件名能够很好的支持,并不需要预先重命名。
由于第一次运行时会下载已经训练好的模型,如果网络不好下载失败可能会出现 The read operation timed out
或者 Can't load save_path when it is None
之类的错误。将当前路径下的 pretrained_models
文件夹删除重新运行即可。
其他
Spleeter 不需要 CUDA 就可以运行,但 CPU 需要支持 avx 指令集才可以。非常古老的 CPU 可能无法运行。
项目主页:https://github.com/deezer/spleeter
Windows 可用的版本:https://makenweb.com/SpleeterGUI
试试在线版的消除人声、提取伴奏的网站,如音子AI https://yinziai.com。 或者其他类似的网站都可以。现在的AI技术很强大了。而且每天还可以免费转5首