云端服务器训练AI吴青峰cover《撒野》(自留)
参考方法:
https://www.bilibili.com/video/BV1Eb411f7gX
https://www.bilibili.com/video/BV1324y1572U
云端服务器配置:2080-Ti GPU显卡(11G),python 3.8版本
本地服务器配置:HP Envy Laptop 13-aq0xxx,Intel core i5-8265U CPU
数据集指路:
《撒野》原音源指路:
【【凯瑟喵】撒野(巫哲小说《撒野》同名曲)-哔哩哔哩】https://b23.tv/jDRqcg9
【【林一卡】《撒野》原唱正式版pv-哔哩哔哩】https://b23.tv/5rsKo86
一、寻找人声数据集
用到的人声:(最好挑和声少的)
1、单曲:无与伦比的美丽、蜂鸟、燕窝、线的记忆、我好想你、起风了等
2、歌手2019合辑
https://www.bilibili.com/video/BV1s14y1U7Gu/
从B站下载视频链接:
3、一些b站上的纯人声片段(可以搜)
金曲奖和我是歌手里面串讲都能用
二、本地端的数据预处理
1、Au软件反相法分离(不推荐)
参考了https://www.bilibili.com/video/BV1sa4y1w7Fk/
2、其它没有伴奏的mp3,用软件提取
需要处理软件:uvr5
使用的配置

3、对于一些视频节目剪辑纯说话的部分,用Au编辑(裁剪),如果剪辑的比较精细的话,这个可以不用经过人声提取部分,但是剪辑的过程比较麻烦
①用格式工厂提取音频,这个很简单
②剪辑音频,用电脑剪辑音频怎么剪,这几个方法很简单! - 哔哩哔哩 (bilibili.com)
4、最后将这三种路径下处理好的纯人声都放在一个文件夹target里
5、用格式工厂把所有mp3音频拼接成一个wav文件all.wav
6、参考这里https://www.bilibili.com/video/BV1Eb411f7gX
(1)用slice-gui对all.wav进行切片处理,变成一个一个时长短的wav文件,存入新建的barbara文件夹中
建议在这个步骤执行之后自己听一下切片后的wav文件,删掉你觉得质量不好的数据
******************************************************************************
切片后的数据集我存在了网盘里:
******************************************************************************
(2)重命名(双击这个)

(3)上传数据集到云服务器
从这里开始我想试试租一个GPU用,只是单纯想试试这个过程,这里我用的恒源云
在正常手机号注册之后,创建了一个镜像和一个实例(先后顺序),租了个10G的3080Ti
然后参照
从自己的电脑上上传自己的数据到镜像中:
a.进入oss:命令:
b.输入在注册时用的手机号和密码
c.把压缩包上传上去
命令:
传完之后进入实例中的Jupyter Lab链接,进入终端

然后解压:
输入密码:领航员未鸟(需要粘贴进去)
三、云端服务器的预处理
在Jupyter里将barbara里面的东西放到AI-barbara-4.1-Stable/dataset_raw路径下,然后进入工作区路径AI-barbara-4.1-Stable
云端的linux系统不能用windows的bat文件,所以这里参照了这个文件里的过程,同时参照这个视频来https://www.bilibili.com/video/BV1324y1572U



按照里面的python命令行一步一步执行,中间遇到什么缺的库就安装上,用pip install +缺的库的名字(主要是torch(注意版本),pyyaml,tqdm,fairseq等,如pip install tqdm),pytorch版本参照这个
注:关于里面的CUDA版本可以通过执行命令行nvidia-smi后print出来的右上角查看
四、云端服务器模型训练

python train.py -c configs/config.json -m 44k
在模型训练的时候,可以准备下一步的工作
由于这首歌是女生唱,并且在女key里也是算高的,所以最好要降调,先用Au软件试听一下,试一下什么key适合,参照的这个https://www.bilibili.com/video/BV11t41167Hv
我想让翻唱尽量全用真声,真声高音部分落在D4-B4这部分,假音落在B4-C5这部分,而这首歌原key高的地方在升D(D#5)左右,所以降2个全音(4个半音)是比较合适的
听上去还是-4或-5最好,那么在inference的时候我就大概知道要往-3到-6这个范围去试
五、云端服务器推理(得到最终结果)
这边模型训练的差不多了,训了有40个epoch,直接在Jupyter notebook里上传wav原曲,放在raw文件夹下
然后训练一个cluster模型,参照这段话

推理的结果在这里

从Jupyter notebook网页里将这个flac文件下载到本地,就能在本地端听了
关于提升效果的一些经验(比较重要):
1、模型跑的时间长主要去除的还是底噪,对于人声效果的提升没有想象的明显(比如唱其中某一句时电流声很大,那么就算再多训练很长时间,也不会就把那句唱好了)
2、要多试几个key,选一下效果最好的,听上去最贴近你想象中的音色的
比如我想让翻唱尽量全用真声,真声高音部分落在D4-B4这部分,假音落在B4-C5这部分,而这首歌原key高的地方在升D(D#5)左右,所以降2个全音(4个半音)是比较合适的,那么在inference的时候我就大概知道要往-3到-6这个范围去试
3、在跑程序出bug的时候要print一下出错的地方,debug一下,一般是诸如某个变量变成了None无法处理,你可以print一下执行到这一句调用的文件名,把它删掉
4、如果效果不满意的话,可以自行用uvr5处理一下要翻唱的音乐,提取一下人声,然后模型在inference的时候不调用它自己的提取人声部分,直接用你这边提取的人声(这个需要同3一样debug一下,看中间哪一步是读音频文件,把这一句替换掉)这个比较有用!
5、感觉diffusion和cluster,包括一些参数(batchsize,learning rate等)对结果影响很小,几乎可以忽略不计,也不要指望通过单纯的修改这个带来很大的效果提升,有时候你都不一定能听出来差别,就按照默认的来加个cluster就行,如果资源不那么充足的话不用加difffusion
6、数据集到了一定量之后,再往上加实际上效果不太大
7、在显存允许的情况下,可以把batchsize和learning rate等比例调大一些(我显卡11G可以用batchsize=6,learning rate=0.0006),提高GPU的利用效率
六、修音
由于AI生成的音频存在一些电流声,还有一些音明显不对(尤其是尾音),所以用Au软件处理一下
1、从原曲用的音频用uvr5软件提取出伴奏,然后放到Au中变一下调(和人声一样的key)
2、诊断->杂音处理器,将AI生成的人声降噪
3、对于唱错的地方,有三种解决方式:
(1)唱错的地方裁剪掉,然后把前面最后一个音延长一下,覆盖错的地方(如果想要渐弱效果可以用淡化包络)
(2)找一下前面一段有没有唱对了的字,copy过来覆盖掉
(3)找一下音源有没有别的版本,只要是这首歌就行,谁唱的无所谓(但还是尽量要一样,不同人的唱法不同,对于某一句处理的不同,也会体现在模型输出结果上),也用模型跑一下,如果有那句唱对的,就复制出来copy覆盖掉(注意音源key要和inference时候key匹配上,比如版本A那句key在C5,且inference的时候是降了3个半音,版本B的key1那句唱在了D5,则inferennce的时候要降5个全音,或者用Au里面的音高换挡器修改替换部分的key)关于key的测量可以双击音频查看里面的频谱图
4、试着加了一下混响,效果还不错,可以弥补一些纯人声中违和的部分
七、总结
这个视频完全是我作为一个连Au和Pr和Ps都从来没用过的纯小白从零做起的(连里面的黑胶唱片旋转都是我自己做的),碰到不会的都是各种百度搜b站搜,而且在这之前我也没用过云端服务器,前前后后包括各种调试模型包括做这个视频包括写这个东西花了大概5天时间,没想到居然真的做出来了,现在我也算是半个会剪视频的人了(其实训练没花多长时间,修音剪辑花了我很多时间)
做这个视频的初衷是很喜欢这首歌,respect作曲林一卡和原著作者巫哲,然后突然想到男歌手里面能有谁适合唱这个歌,除了吴青峰我想不到有第二个声音更适合了,音色也适合曲风也适合感觉也比较贴,所以训了一个模型出来
以后有时间可能会再做一下AI吴青峰翻唱的其它歌曲