云端服務器訓練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
數(shù)據(jù)集指路:
《撒野》原音源指路:
【【凱瑟喵】撒野(巫哲小說《撒野》同名曲)-嗶哩嗶哩】https://b23.tv/jDRqcg9
【【林一卡】《撒野》原唱正式版pv-嗶哩嗶哩】https://b23.tv/5rsKo86
一、尋找人聲數(shù)據(jù)集
用到的人聲:(最好挑和聲少的)
1、單曲:無與倫比的美麗、蜂鳥、燕窩、線的記憶、我好想你、起風了等
2、歌手2019合輯
https://www.bilibili.com/video/BV1s14y1U7Gu/
從B站下載視頻鏈接:
3、一些b站上的純?nèi)寺暺危梢运眩?/p>
金曲獎和我是歌手里面串講都能用
?
二、本地端的數(shù)據(jù)預處理
1、Au軟件反相法分離(不推薦)
參考了https://www.bilibili.com/video/BV1sa4y1w7Fk/
2、其它沒有伴奏的mp3,用軟件提取
需要處理軟件:uvr5
使用的配置

3、對于一些視頻節(jié)目剪輯純說話的部分,用Au編輯(裁剪),如果剪輯的比較精細的話,這個可以不用經(jīng)過人聲提取部分,但是剪輯的過程比較麻煩
①用格式工廠提取音頻,這個很簡單
②剪輯音頻,用電腦剪輯音頻怎么剪,這幾個方法很簡單! - 嗶哩嗶哩 (bilibili.com)
4、最后將這三種路徑下處理好的純?nèi)寺暥挤旁谝粋€文件夾target里
5、用格式工廠把所有mp3音頻拼接成一個wav文件all.wav
6、參考這里https://www.bilibili.com/video/BV1Eb411f7gX
(1)用slice-gui對all.wav進行切片處理,變成一個一個時長短的wav文件,存入新建的barbara文件夾中
建議在這個步驟執(zhí)行之后自己聽一下切片后的wav文件,刪掉你覺得質(zhì)量不好的數(shù)據(jù)
******************************************************************************
切片后的數(shù)據(jù)集我存在了網(wǎng)盤里:
******************************************************************************
(2)重命名(雙擊這個)

(3)上傳數(shù)據(jù)集到云服務器
從這里開始我想試試租一個GPU用,只是單純想試試這個過程,這里我用的恒源云
在正常手機號注冊之后,創(chuàng)建了一個鏡像和一個實例(先后順序),租了個10G的3080Ti
然后參照
從自己的電腦上上傳自己的數(shù)據(jù)到鏡像中:
a.進入oss:命令:
b.輸入在注冊時用的手機號和密碼
c.把壓縮包上傳上去
命令:
傳完之后進入實例中的Jupyter Lab鏈接,進入終端

然后解壓:
輸入密碼:領航員未鳥(需要粘貼進去)
三、云端服務器的預處理
在Jupyter里將barbara里面的東西放到AI-barbara-4.1-Stable/dataset_raw路徑下,然后進入工作區(qū)路徑AI-barbara-4.1-Stable
云端的linux系統(tǒng)不能用windows的bat文件,所以這里參照了這個文件里的過程,同時參照這個視頻來https://www.bilibili.com/video/BV1324y1572U



按照里面的python命令行一步一步執(zhí)行,中間遇到什么缺的庫就安裝上,用pip install +缺的庫的名字(主要是torch(注意版本),pyyaml,tqdm,fairseq等,如pip install tqdm),pytorch版本參照這個
注:關于里面的CUDA版本可以通過執(zhí)行命令行nvidia-smi后print出來的右上角查看
四、云端服務器模型訓練

python train.py -c configs/config.json -m 44k
在模型訓練的時候,可以準備下一步的工作
由于這首歌是女生唱,并且在女key里也是算高的,所以最好要降調(diào),先用Au軟件試聽一下,試一下什么key適合,參照的這個https://www.bilibili.com/video/BV11t41167Hv
我想讓翻唱盡量全用真聲,真聲高音部分落在D4-B4這部分,假音落在B4-C5這部分,而這首歌原key高的地方在升D(D#5)左右,所以降2個全音(4個半音)是比較合適的
聽上去還是-4或-5最好,那么在inference的時候我就大概知道要往-3到-6這個范圍去試
?
五、云端服務器推理(得到最終結(jié)果)
這邊模型訓練的差不多了,訓了有40個epoch,直接在Jupyter notebook里上傳wav原曲,放在raw文件夾下
然后訓練一個cluster模型,參照這段話

推理的結(jié)果在這里

從Jupyter notebook網(wǎng)頁里將這個flac文件下載到本地,就能在本地端聽了
?
關于提升效果的一些經(jīng)驗(比較重要):
1、模型跑的時間長主要去除的還是底噪,對于人聲效果的提升沒有想象的明顯(比如唱其中某一句時電流聲很大,那么就算再多訓練很長時間,也不會就把那句唱好了)
2、要多試幾個key,選一下效果最好的,聽上去最貼近你想象中的音色的
比如我想讓翻唱盡量全用真聲,真聲高音部分落在D4-B4這部分,假音落在B4-C5這部分,而這首歌原key高的地方在升D(D#5)左右,所以降2個全音(4個半音)是比較合適的,那么在inference的時候我就大概知道要往-3到-6這個范圍去試
3、在跑程序出bug的時候要print一下出錯的地方,debug一下,一般是諸如某個變量變成了None無法處理,你可以print一下執(zhí)行到這一句調(diào)用的文件名,把它刪掉
4、如果效果不滿意的話,可以自行用uvr5處理一下要翻唱的音樂,提取一下人聲,然后模型在inference的時候不調(diào)用它自己的提取人聲部分,直接用你這邊提取的人聲(這個需要同3一樣debug一下,看中間哪一步是讀音頻文件,把這一句替換掉)這個比較有用!
5、感覺diffusion和cluster,包括一些參數(shù)(batchsize,learning rate等)對結(jié)果影響很小,幾乎可以忽略不計,也不要指望通過單純的修改這個帶來很大的效果提升,有時候你都不一定能聽出來差別,就按照默認的來加個cluster就行,如果資源不那么充足的話不用加difffusion
6、數(shù)據(jù)集到了一定量之后,再往上加實際上效果不太大
7、在顯存允許的情況下,可以把batchsize和learning rate等比例調(diào)大一些(我顯卡11G可以用batchsize=6,learning rate=0.0006),提高GPU的利用效率
六、修音
由于AI生成的音頻存在一些電流聲,還有一些音明顯不對(尤其是尾音),所以用Au軟件處理一下
1、從原曲用的音頻用uvr5軟件提取出伴奏,然后放到Au中變一下調(diào)(和人聲一樣的key)
2、診斷->雜音處理器,將AI生成的人聲降噪
3、對于唱錯的地方,有三種解決方式:
(1)唱錯的地方裁剪掉,然后把前面最后一個音延長一下,覆蓋錯的地方(如果想要漸弱效果可以用淡化包絡)
(2)找一下前面一段有沒有唱對了的字,copy過來覆蓋掉
(3)找一下音源有沒有別的版本,只要是這首歌就行,誰唱的無所謂(但還是盡量要一樣,不同人的唱法不同,對于某一句處理的不同,也會體現(xiàn)在模型輸出結(jié)果上),也用模型跑一下,如果有那句唱對的,就復制出來copy覆蓋掉(注意音源key要和inference時候key匹配上,比如版本A那句key在C5,且inference的時候是降了3個半音,版本B的key1那句唱在了D5,則inferennce的時候要降5個全音,或者用Au里面的音高換擋器修改替換部分的key)關于key的測量可以雙擊音頻查看里面的頻譜圖
4、試著加了一下混響,效果還不錯,可以彌補一些純?nèi)寺曋羞`和的部分
七、總結(jié)
這個視頻完全是我作為一個連Au和Pr和Ps都從來沒用過的純小白從零做起的(連里面的黑膠唱片旋轉(zhuǎn)都是我自己做的),碰到不會的都是各種百度搜b站搜,而且在這之前我也沒用過云端服務器,前前后后包括各種調(diào)試模型包括做這個視頻包括寫這個東西花了大概5天時間,沒想到居然真的做出來了,現(xiàn)在我也算是半個會剪視頻的人了(其實訓練沒花多長時間,修音剪輯花了我很多時間)
做這個視頻的初衷是很喜歡這首歌,respect作曲林一卡和原著作者巫哲,然后突然想到男歌手里面能有誰適合唱這個歌,除了吳青峰我想不到有第二個聲音更適合了,音色也適合曲風也適合感覺也比較貼,所以訓了一個模型出來
以后有時間可能會再做一下AI吳青峰翻唱的其它歌曲