伴奏提取

遇到的问题

之前找到一个伴奏处理的网站,分离人声和伴奏后每天有3次下载次数。当时想着够自己用,大不了每天只处理一首伴奏。但今天发现打不开了。

于是搜索在线分离伴奏工具,

有的 前两首音乐免费,之后的需要付费,每首50美分

有的 免费用户可用网站试听30s,最多使用5首歌曲,需要更多和完整版本的则需要付费。

有的 别人发贴推荐的时候说是完全免费,只是需要科学上网。但现在有用了限制,需要订阅

解决的方法

虽然这次也找到了能用的网站,但多少有些限制,而且怕之后会关闭或变本加厉。继续寻找合适的方法。发现有个帖子说,好多提取伴奏的网站都是基于 Python 开源项目 Spleeter 做的,利用ai技术从任何音频中分离出伴奏,人声,鼓点,贝斯以及其他乐器。就去搜索deezer/spleeter的相关资料。并实现了再本电脑docker中运行Spleeter,提取伴奏。

实现的效果

以下是《大悲咒-小样》的提取效果。

原声

伴奏

人声 听的时候注意,因为前边都是伴奏,大概在30秒有声音

docker运行spleeter

1、把spleeter的docker pull到本地。

docker pull researchdeezer/spleeter

2、创建任意文件夹,如 spleeter_files。

cd spleeter_files

3、执行命令运行docker

docker run --rm -v $(pwd)/output:/output -v $(pwd)/input:/input -v $(pwd)/pretrained_models:/model researchdeezer/spleeter separate -i /input/da-bei-zhou.mp3 -o /output -p spleeter:2stems

这时会在 spleeter_files 生成3个空文件夹,input 中存放音频。output 用来输出结果。pretrained_models 用来存放 2stems、4stems、5stems 三个预训练模型。

4、在input文件家中放入要处理的音乐。再次执行上步命令行中的命令。这时如果 pretrained_models 文件夹中没有对应的预训练模型,会自动下载,下载好下次就不用下载了。运行完之后会在 output 文件夹生成一个和音频同名的文件夹,里边是提取分离的结果。

注释:

本地生成的3个空文件夹是可以自定义的,为了验证这个,我单独修改 pretrained_models 为 models,发现报错了。应该是权限的事情,这3个文件夹需要再第三步,自动生成空文件夹,自己提前创建的不行,我是遇到这样的问题了。在生产这三个文件夹之后,每次提取伴奏的时候只用运行一次命令就行了。

--rm:docker run生成container,本次用完就删掉

-v $(pwd)/output:/output:指把宿主机的$(pwd)/output文件夹和docker里/output进行映射

-v $(pwd)/pretrained_models:/model:注意docker里存放模型的文件夹名为model

separate -i /input/test.flac -o /output -p spleeter:5stems:这里是执行spleeter的命令,和上面一样,-i是需要分割的音频文件,-o是输出文件夹,-p是选择2/4/5模型。