使用 Spleeter 对音频消除人声提取伴奏

By | 2021年7月29日

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

One thought on “使用 Spleeter 对音频消除人声提取伴奏

  1. ookk

    试试在线版的消除人声、提取伴奏的网站,如音子AI https://yinziai.com。 或者其他类似的网站都可以。现在的AI技术很强大了。而且每天还可以免费转5首

    Reply

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滑动到最右以进行验证 *