头图

在视频剪辑工作中,假设我们拿到了一段电影或者电视剧素材,如果直接在剪辑的视频中播放可能会遭遇版权问题,大部分情况需要分离其中的人声和背景音乐,随后替换背景音乐进行二次创作,人工智能AI库Spleeter可以帮我们完成大部分素材的人声和背景音乐的分离流程。

Spleeter的模型源来自最大的音乐网站Deezer,底层基于深度学习框架Tensorflow,它可以通过模型识别出素材中的背景音乐素材,从而判断出哪些是背景音乐,哪些是外部人声。

Spleeter安装

在终端执行运行pip命令:

pip3 install spleeter --user

安装成功之后,输入命令,检查Spleeter安装路径:

pip show spleeter

程序返回:

PS C:\Users\liuyue\www\videosite> pip show spleeter                                        WARNING: Ignoring invalid distribution -umpy (c:\python39\lib\site-packages)               Name: spleeter                                                                             Version: 2.3.2  
Summary: The Deezer source separation library with pretrained models based on tensorflow.  
Home-page: https://github.com/deezer/spleeter  
Author: Deezer Research  
Author-email: spleeter@deezer.com  
License: MIT  
Location: c:\users\liuyue\appdata\roaming\python\python39\site-packages                    Requires: ffmpeg-python, httpx, librosa, llvmlite, norbert, numpy, pandas, protobuf, tensorflow, typer

说明安装成功。

如果不想在本地搭建深度学习环境,也可以通过Docker镜像安装。关于Docker,请移步:一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群,这里不在赘述。

运行Docker命令:

docker pull deezer/spleeter:3.8-5stems

这里程序加上预训练模型大概需要1.73GB的硬盘空间。

Spleeter分离人声和背景音乐

Spleeter同时支持视频和音频文件的人声和背景音乐分离,Spleeter自带三种预训练模型:

1、人声&伴奏声分离模型 2 stems,分离出两个音轨

2、鼓声、贝斯声及其它声分离模型 4 stems,分离出4个音轨)

3、鼓声、贝斯声、钢琴声及其它声分离模型 5 stems,分离出5个音轨)

后面两种模型相对比较精细,它可以把人声、鼓声、贝斯声、钢琴声各自分离成多个音轨,一般适合音乐行业的专业人士进行使用。

大多数情况下,我们只需要使用第一种模型 2 stems 即可,它将音频分离成两个音轨,人声和背景音乐的声音:

spleeter separate -o /output/ -p spleeter:2stems /test.mp3

这里-o代表输出目录,-p代表选择的分离模型,最后是要分离的素材。

首次运行会比较慢,因为spleeter会下载预训练模型,体积在1.73g左右,运行完毕后,会在输出目录生成分离后的音轨文件:

accompaniment.wav  
vocals.wav

accompaniment.wav代表人声,vocals.wav是背景音乐。

如果是基于Docker安装的,则需要运行对应的Docker命令:

docker run -v $(pwd)/output:/output deezer/spleeter:3.8-5stems separate test.mp3 -o /output

结语

Spleeter可以算是免费的人声和背景音乐分离功能的最佳本地方案了,除了影视剧素材的人声和背景音乐分离的二次创作,如果是在外部环境录制的Vlog,环境音非常嘈杂,而又不得不现场录音,那么使用Spleeter也可以将人声从环境音中分离出来,节省了二次录制画外音的环节。


刘悦的技术博客
56 声望10 粉丝