来源:公众号 歸藏的AI工具箱

前几天在B站刷到AI孙燕姿唱的《黑色毛衣》,让我听傻了,还原度还能这么高的。于是就研究了一下,做了几段居然效果还行,可以在这里听《爱得太迟》。

简单解释一下,这个项目分为两个部分,模型的使用和模型的训练,模型使用的话对电脑的要求不是很高基本上差不多点的N卡都可以,模型的训练其实对显卡要求还挺高的小于6G会有各种各样的问题,当然也能炼,不过太麻烦了不建议。  

主要使用的是So-VITS-SVC 4.0这个项目,github地址是:https://github.com/svc-develop-team/so-vits-svc  

我这里会使用整合包来推理(使用模型)和训练,目前B站有两个作者做的整合包分别是羽毛布団的和领航员未鸟的我把视频地址都放在下面。希望各位去视频给个三连毕竟用了人家的劳动成果。  

两位的视频教程也很好,我这边主要会更详细一些,会补充一些两位没说到但是有坑的地方。这次课程我使用的主要是羽毛布団的整合包,我把所有需要下载的都打包了。  

羽毛布団:https://www.bilibili.com/video/BV1H24y187Ko/
领航员未鸟:https://www.bilibili.com/video/BV1Eb411f7gX/

所需软件和模型下载(百度云):https://pan.baidu.com/s/1JaqXWwYSvs6ZnMYJxs_Gtg?pwd=6t7v

模型使用

首先是模型使用的部分,如果你没有兴趣训练自己的模型只想使用别人训练好的模型尝鲜的话只看这部分就可以了,这部分主要分为三个本部分原始声音的处理、推理过程以及最后的音轨合并。  

原始声音处理

要使用模型进行推理的话你首先需要一段已经演唱好的声音垫进去,然后使用模型把原来的音色换成你模型训练好的音色(类似AI画图的img2img垫图)。所以我们需要先对你垫进去的声音进行处理,去掉原始音乐里面的混响和乐器声音,只留下人物的干声这样效果会好一些。  

我们会使用UVR_v5.5.0这个软件来处理声音通过两段处理保留人物的干声。  

首先是安装,直接双击UVR\_v5.5.0\_setup.exe一直下一步就行,安装完成后我们需要给UVR增加一个模型解压UVR5模型文件将里面的两个文件夹粘贴到安装目录下的Ultimate Vocal Removermodels就行。  

在处理之前你需要把你声音的格式转换成WAV格式,因为So-VITS-SVC 4.0只认WAV格式的音频文件,现在处理了后面会省事点。可以用这个工具处理:https://www.aconvert.com/cn/audio/mp4-to-wav/  

处理完音频文件后我们就要开始利用UVR去掉背景音了,一共需要过两次,每次的设置都是不同的,这样能最大限度的保证不需要的声音能被去除干净。  

在Select Input选择你需要处理的音频文件,处理完成后你可以在Output的文件夹下面找到处理完成的文件,后缀有(Vocals)就是人声,后缀为(Instrumental)就是伴奏,伴奏先不要删,我们后面合成的时候还需要。  

下图为第一次处理UVR的参数:

 

完成第一次处理后我们再调整参数进行第二次处理,下面是第二次处理需要的参数设置:  

接下来我们就要运行整合包的Web UI来推理声音了,如果你用的其他人的模型的话你需要先把模型文件放进整合包对应的文件夹下面:  

首先是GAN模型和Kmeans模型就是模型文件夹下面后缀为pth和pt的两个文件放到整合包的logs44k文件夹下。  

之后是配置文件,就是你下载下来的模型文件里那个叫config.json的json文件,放到整合包的configs文件夹下面。  

接下来我们就可以运行整合包的Web UI了,打开整合包根目录下的【启动webui.bat】这个文件他会自动运行并打开Web UI的网页,经常玩Stable Diffusion的朋友肯定对这个操作不陌生。  

下面就是Web UI的界面我们使用模型的时候主要用的是推理这个功能。  

之后就是选择我们的模型,如果你刚才已经把模型放到合适的位置的话你现在应该能在下图的两个位置选择到你的模型和配置文件,如果有报错会在输出信息的位置显示。  

选择完模型之后我们需要点击加载模型,等待一段时间Loading之后模型会加载完成。Output Message这里会输出加载的结果。  

之后就是上传我们处理好的需要垫的音频文件了,把文件拖动到红框位置就行。

接下来是两个比较重要的选项【聚类f0】会让输出效果更好,但是如果你的文件是歌声的话不要勾选这个选项,不然会疯狂跑调。【F0均值滤波】主要解决哑音问题,如果你输出的内容有比较明显的哑音的话可以勾选尝试一下,这个选项歌声可以使用。  

除了这两个选项之外的其他选项不建议动。除非你理解它是什么意思。  

设置好之后我们点击【音频转换】按钮之后经过一段时间的运算,就可以生成对应的音乐了。  

【output audio】的位置就是生成的音频了可以试听,如果觉得OK的话可以,点击右边三个点弹出的下载按钮下载。  

我们现在生成的是一段只有人声的干声,这时候我们刚才剥离出来的伴奏就有用了,把两段音频合成就行,我用的剪映,直接把两段音轨拖进去导出就行,也可以加张图片变成视频。  

好了模型的使用部分到这里就结束了,理论上你现在如果有孙燕姿的模型的话已经可以生产AI音乐了。垫的音频文件也有一些要求,首先肯定是人声要清晰,伴奏最好少点去的也干净同时效果也会更好。  

AI孙燕姿我用的是B站Ozzy23的模型他的这个模型效果非常好各位可以去他视频下面的简介下载,不要忘了三连。  

https://www.bilibili.com/video/BV1kk4y1Y7vp/?spm\_id\_from=333.999.0.0&vd_source=e99f85042059f2864f5cca20d71575f0  

以上就是AI歌手的第一部分内容了,模型的训练部分内容会在稍晚的时候放出,感谢各位,看在藏师傅生病肝教程的份上希望可以多多支持。  

训练模型

接下来正式开始训练模型的部分,训练模型主要有两个步骤分别是数据准备和模型的训练。  

数据准备

首先我们需要准备你训练的人的声音素材,尽量找质量比较高人声比较清晰的音频。  

我们就以歌手为例子,歌手的声音素材是比较好找的,因为他们的歌就是天然的素材,我们在训练的时候最少要准备30分钟以上的人声素材,一般一个小时到两个小时最好。但是声音的质量大于时间长度,不要为了凑数搞一些质量不那么好的素材。  

在准备好足够的声音素材之后我们开始对素材进行处理,跟第一期一样,先把我们的素材转换为WAV格式,批量转换的话还是用格式工厂之类的本地软件比较快。  

获取到我们个WAV格式素材之后,继续进行跟上午一样的步骤去掉我们素材的伴奏以及混响之类的声音,只留下单纯的人声。  

这里我们还是使用UVR_v5.5.0这个软件每个素材都进行两次处理。  

在Select Input选择你需要处理的音频文件,处理完成后你可以在Output的文件夹下面找到处理完成的文件,后缀有(Vocals)就是人声,后缀为(Instrumental)就是伴奏,伴奏先不要删,我们后面合成的时候还需要。  

下图为第一次处理UVR的参数:  

完成第一次处理后我们再调整参数进行第二次处理,下面是第二次处理需要的参数设置:  

处理完成后扔掉分离出来的伴奏,只留下人声素材,整理好备用。类似我下图这样扔到一个文件夹里。  

接下来我们要对处理好的人声文件进行分割,因为如果训练的时候每段文件过长的话容易爆显存。  

这个时候就要用到下载文件里的【slicer-gui】这个软件了,它可以自动把声音素材分割成合适的大小。我们先打开slicer-gui,刚开始的参数按我的来就行。  

把你你准备好的人声素材拖到【Task List】里面,在Output位置设置好输出文件夹的位置,然后点Start就可以开始分割了。  

处理好的文件,基本上就是下面这个文件的样子,处理完成后在输出文件夹把文件从大到小排序,看一下最大的文件时多长的,分割完的素材每一段尽量不要超过15秒。不然有可能会爆显存。  

如果你发现有几条素材比较大的话可以拖进slicer-gui里面重新分割一下,参数按我下面图片设置就行。  

所有数据处理好之后,我们准备开始训练了首先需要把准备好的素材移动到so-vits-svcdataset\_raw这个文件夹下,注意不要直接把素材放在dataset\_raw文件夹里,拿个文件夹装好放进去,所有的目录不要有中文字符。  

模型训练

我们开始模型训练,运行so-vits-svc根目录的【启动webui.bat】打开Web UI界面,切换到训练Tab下面。然后点击识别数据集,这时候上面就会展示你数据集文件夹的名字,也会是你模型的名字。  

之后就是选择与训练分支了,【vec768-layer12】好像效果会好一些,所以这里我选了这个分支。后就是点击【数据预处理】。  

注意这里有个大坑,昨天折腾了我好久,你需要看一下你数据集里面有多少条数据,如果有几百条的的话,你需要把虚拟内存调大点,至于如何调整虚拟内存,这个百度就行,有很多教程。  

给个参考我的数据集是300多条,我把虚拟内存调到100G才能保证顺利处理完,不会中途蓝屏。  

开始数据预处理之后这个框会有非常多的信息,基本都是进度到百分之几了,如果预处理出错,在这个框的最后会展示报错信息,如果没错这个回显的基本就到100%就结束了。  

如果你数据预处理完了,不想看那一堆信息的话可以点那个【清空输出信息】。  

数据处理完之后我们来看一下下面的几个参数,调整一下,准备开始训练。  

每多少步生成一次评估日志这里,用默认的200步就行  

【每隔多少步(steps)验证并保存一次模型】这里默认的800步也就够了,他的意思是每训练800步就会保存一次模型,这个保存的模型你是可以用的。  

【仅保留最新的X个模型】这个就是字面意思如果每800步保存一次模型的话,你训练到8800的时候第800步的模型就会被自动删除,一个模型大概有1G左右这里看你的硬盘。如果设置成0的话就永远不会自动删除。  

【批量大小】这个参数跟你的显卡的显存有关,6G建议是4,我的4070Ti是12G我昨天设置的8,我有点怂,其实12也行,我怕爆显存。  

上面几个参数设置完之后,我们选择当前训练分支跟我们数据预处理的时候的一致就行,然后点击写入配置文件,输出信息那里会有写入的结果,如果有报错也会显示在那里。  

如果你是第一次训练点击这个【从头开始训练】就行,如果你之前训练过你还想继续训练的话就点这个【继续上一次训练进度】。如果你之前有训练进度,然后你点了【从头开始】的话你的训练进度就会被清空,从新开始从第0步训练。  

在你点击按钮之后会弹出这样一个弹窗里面就是训练进度,我框起来的地方就是每200步输出的信息,那个loss的值就是判断模型质量好坏的标准,越低越好,如果你觉得现在的已经可以了的话按CTAL+C键就会停止训练,你可以去推理tab下尝试你的模型,如果不满意还是可以重新回来训练的。  

注意你如果设置的每800步保存的话起码要到800才能暂停训练,不然没有保存的模型供你使用。下面这个图就是模型已经保存的提示。  

如果你觉得可以了暂停训练之后回到推理 Tab 就能看到你刚才训练的模型了,可能会有好几个因为你选的最多保留十个。按照我们第一期的内容正常使用就可以了。  

以上就是AI歌手的最后一部分内容了,感谢各位,如果觉得对你有帮助的话可以帮助藏师傅转发传播。