把音频中的不同音频源分离出来,是影音处理领域中的常用操作。
最普遍的需求就是把人声、背景音乐提取出来。
Spleeter 是开源的音频分离工具,分离效果非常好。
项目地址 github.com/deezer/spleeter
Spleeter 使用 TensorFlow 进行的机器学习,训练好了3种模型:
1)2 stems -- 人声、伴奏
2)4 stems -- 人声、鼓、贝斯、其他
3)5 stems -- 人声、鼓、贝斯、钢琴、其他
此外,Spleeter 也可以让你轻松的训练自己的模型。
下面是 Spleeter 的本地安装运行过程。
1. 安装依赖
必须先安装好 ffmpeg 和 libsndfile。
Spleeter 项目文档中是使用 conda 安装的。
建议使用 conda 安装,我刚开始没用 conda,折腾好久也没装好,后来使用 conda 一次就OK了
没装 conda 的,先去官网下载安装。
推荐安装 Anaconda,这个 conda 用于科学计算。它包含了 Vonda、Python 和超过 150 个科学软件包及其依赖项。
下载地址 anaconda.com/download
安装后,设置好环境变量,使命令行中可以执行 conda 命令。
conda 搞定后,创建 python 虚拟环境。
因为,安装 Spleeter 一定要使用 Python 3.10。
创建虚拟环境,指定 python 版本:
conda create -n spleeter_env python=3.10
激活刚创建的环境:
activate spleeter_env
执行安装依赖命令:
conda install -c conda-forge ffmpeg libsndfile
2. 安装 spleeter
只要 python 3.10 和依赖安装好之后,spleeter 安装就很简单了。
我之前安装时主要就是卡在这两部分。
安装 spleeter:
pip install spleeter
这个过程比较长,因为 spleeter 依赖库非常多,耐心等待一会儿。
3. 运行 spleeter
运行命令:
spleeter separate -p spleeter:2stems -o output test.mp3
其中 -p spleeter:2stems
指定了使用 2stems 模型,也就是分离人声和伴奏。
第一次运行时,会自动下载 2stems 模型,时间会比较长,不要以为是死机了,耐心等待。
test.mp3
指定了要分离的目标音频文件。
-o output
参数指定了分离后文件的目录,这里是放在了 output 目录中。运行完成后,Spleeter 会自动在其中创建一个文件夹(以音频文件名命名),里面是分离好的音频文件,accompaniment.wav 和 vocals.wav。
运行完成之后,结果文件结构:
├─output
│ ├─test
│ │ accompaniment.wav
│ │ vocals.wav
播放分离后的音频,效果很棒,完全符合预期。
4. spleeter 性能
我的测试音频长度48秒,spleeter 10秒运行完成。
spleeter 对电脑配置的要求不高。
我的电脑配置:
- CPU -- AMD Ryzen 7 5700x
- 内存 -- 32G
- 显卡 -- RTX 4060Ti 16G
spleeter 这10秒的运行期间,只有瞬间的资源占用高峰,CPU 达到了 70%,显卡达到了 20%,内存没有明显变化。
Spleeter 的分离效果、性能都是相当优秀的,如果你有音频分离的需求,推荐尝试。
#音频分离,#人声提取,#Spleeter,#gpt890