作为音乐爱好者,寻找伴奏算是频度较高的诉求了,比较常规的方法有au里的中置声道提取(此方法截至2022年已彻底沦为摆设,不必再浪费时间去尝试)、俄罗斯音频软件iZotope(其同时也可作为插件包附在au里)里的Music Rebalance、直接到5sing等原创音乐站点上下载等,本文想介绍的是另一种效果很好的软件——法国音乐流媒体公司Deezer研发的开源音轨分离软件spleeter。
一、软件简介
该项目于2019年年中发布于github(源地址deezer/spleeter),属于代码交互的机器学习软件(但也有人开发了图形化界面,详见后文),能将音乐的人声和各种乐器声分离,最多支持分离成人声、鼓、贝斯、钢琴、其他共5部分(分离效果取决于源文件音质及封装方式等,实践中通常建议只分为2轨,即伴奏+人声)。
由该软件在github上最新的README信息可知iZotope、AconDigital等专业音频软件在音轨分离的相关功能上都采用了其“核心科技”pretrained models(预训练模块),其实力之强大可见一斑——
真·被大腿环抱的大腿
分离效果上,它确实不如原版单音轨文件(这是肯定的)以及花钱请音乐工作者通过扒谱等流程仿照原版编写出来的音频(否则人家凭什么收费拿什么恰饭),但对于制作自用伴奏、扒取影视作品中的纯音乐等日常非专业场景而言已足堪胜任了,对于一些官方未收录于ost中的罐头纯音乐更是可以DIY出来收藏欣赏(切记不要有商用等侵权行为)。
本软件原生于命令行界面,为了避免部分不习惯代码交互的同学望而却步、因技术受限而错失使用这一音频神器的机会,笔者决定把自己对其探索的全程记录下来,一方面给广大音乐爱好者一些参考和启示,另一方面也算为自己的捣鼓经历留点史料,纪念这次勤(tou)勉(tie)地点技能树的过程。
本文面向完全零基础用户,懂得基本下载操作即可。由于笔者水平有限,文中有讹误之处敬请谅解,同时欢迎批评指正。安装与使用中有任何疑问也欢迎在评论区留言,笔者看到后会尽量帮忙解答。
(本文保持更新中)
二、极简使用方案
完全不想涉足任何安装or研究的同学可以直接下载这个spleeterGUI(GUI=Graphical User Interface,即区别于黑白命令行的图形化界面应用软件)——
该软件自带spleeter核心,无需其他准备工作,即装即用,非常方便。截至2022.08.19最新版为2.9.2,不同版本之间功能上差别不大,每次更新的内容也不一定与deezer在github上的项目同步,具体可查阅软件主页上的更新日志,作为自用来说,一直不更新也没啥问题。但需注意,如想更新,需要检查新版本后下载新的安装包,而不能点击菜单中的“更新spleeter核心”,否则将出错导致需要重新安装软件。
下载解压并选择合适的路径安装好后,直接进入文件夹打开spleeterGui.exe,将语言改成中文(英语大神请无视),就可以按提示自行操作了。
GUI界面
点击“选择音乐档案”浏览选择待分离的音频文件,也可将音频直接拖动到软件界面处;
点击“储存至”选择导出分离后音轨的储存路径;
点击“分离声部”后的数字可选择将音频分为几个部分(建议只分为2部分即人声+伴奏,具体效果可自行测试)。
“最大歌曲长度”经部分同学反映调整后是无效的,无论调为多少,最多都只能分离前600秒(即10分钟)的音频,如果要分离时长大于10分钟的音频,可以手动切割后再分别分离,或者用命令行界面的spleeter完成(见下文《完整探索方案》)。
分离过程中鼠标可能会变成圆圈状,耐心等待即可。另外该软件对剩余内存(RAM,不是硬盘容量)的要求较高,如果内存不足,可能出现软件运行完毕但未生成分离后的文件。
图片引自spleeter官方FAQ页
三、完整探索方案
本方案面向有兴趣&时间对命令行界面进行探索的同学,不想探索的同学也可以引为参考,借以对conda/python有个初步了解。
安装condaspleeter需要conda作为搭载平台,conda有anaconda和miniconda之分,顾名思义分别是完整版和精简版,功能上后者要少一些,但我们只是用于spleeter的安装,所以用miniconda就够了。
2. 下载miniconda。这是官网链接:
根据操作系统win/mac、32/64位选择安装包,python版本选3.9
3.安装miniconda,安装路径不要改动,中间出现的两个打钩,第一个是为miniconda创建环境变量,第二个是将miniconda作为默认的python运行平台,把第一个钩起来即可。虽然英文注释不建议钩选它,但实测中问题不大,而且添加环境变量后,从cmd就可以调用spleeter并运行,不必再打开miniconda,操作上更简便。
Tip1.(本文中的Tip面向对计算机了解较少的同学,已掌握的同学可自行忽略)
按Win+R键后,在弹出的窗口里输入cmd可打开windows默认的命令行界面。当命令行窗口的标题栏是最后输入的命令时,说明正在运行这个命令,耐心等待即可。
例如,下图是个无命令正在运行的“正常”标题栏:
下图则是正在运行命令的标题栏,请耐心等待:
Tip2.“环境变量”可以简单理解为命令行界面的“快捷方式”,当某程序添加了环境变量后,它可以不用输入精确路径便“一键打开”,这也是上述钩选行为最主要的目的,即方便调用spleeter。
安装spleeter
安装步骤在github/spleeter主页里的Quick Start部分有说明,但原文系英语,且由于墙等缘故,部分步骤需要对命令行进行改动,因此这里还是完整叙述,有兴趣的同学也可以参考原网页内容github.com/deezer/spleeter。
1.安装“依赖”。“依赖”可以简单理解为安装spleeter所必需的一些“预装数据”。打开cmd并在其中输入以下代码(直接复制下列代码,再粘贴到cmd中并按回车即可,下同)——
conda install -c conda-forge ffmpeg libsndfile
其中-c表示从特定网站(channel)下载,即代码中的conda-forge这一站点。
如果这步报错,则说明该站点连接情况不好(该站点存在不定期被墙的情况),需要对站点进行重定向。
“依赖”安装完成后,窗口会自动清屏并出现一个done:
2.安装主体
在cmd中输入以下代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple spleeter
-i用以在pip命令下实现从特定网站下载,所接的网址是清华大学开源软件镜像站,该站专门用以解决因墙的缘故而无法连接、无法安装软件的问题,类似的镜像站还有中科大、华中理工大学等高校自设的站点。
部分开源软件镜像站网址
清华大学开源软件镜像站主页
一切顺利的话,安装完成后会有如下提示——
对于曾经使用过conda的同学需要注意一点,G站主页上特别指出了不再建议用conda install命令来直接安装spleeter——
笔者实测发现用conda命令安装的spleeter有时确实会报错,推测原因是代码层面的改动导致现行版本spleeter搭载于conda上运行时会出现动态库中dll文件的调用及python版本不兼容等问题。
使用spleeter
在cmd中输入以下格式的代码并运行,就可以进行音频分离了——
spleeter separate -p spleeter:2stems -o [导出路径] [待分离音频]
spleeter运行实例——将《江南》分成2轨并导出到桌面
-d可设定最大分离时长(单位秒,默认600s),-s可设定开始分离的时间点(单位秒),该功能理论上可以突破前文提到的GUI只能分离10分钟音频的限制,但分离耗时及成功与否取决于电脑配置及音频属性,有兴趣的同学可以自行测试。
四、后记
本文始发于2020.03.28,两年半来spleeter几番更新和改动,为了让每个时间段的读者都能顺利使用,我作了多次更新,此次(2022.08)删去了几处冗余部分和原后记,增加了新后记和一些常见问题的解析。
本来想专门写写FAQ的,奈何最近真的心累,实在没心气再做整理了,能坚持做完这次大改已经是用尽全力了,有疑问的可以留言,我会尽力帮助解决,希望我的付出可以让大家在使用这个软件时少走点弯路吧。
有耐心看到这的朋友就当我抽空吐个槽吧,抱歉污了大家的眼,终究是玲珑心思风霜苦,混沌眉眼清平福。
愿初心永不成灰
发表评论