Amadeus復刻計劃(AI擬聲篇 一 So-vits-svc的訓練)
目前主流的AI合成聲音模型有三種:
VITS: 最早出現(xiàn)的基于GAN的網(wǎng)絡模型,用于文字轉(zhuǎn)語音,但是想要提升合成質(zhì)量需要手動對數(shù)據(jù)集進行標注,并且很難跨語種,如使用日語訓練集進行訓練的模型,無法使用中文輸入進行推理
So-vits-svc:據(jù)說是國人根據(jù)的VITS和soft-vc創(chuàng)建的開源模型,版本迭代到了4.0,其用于“AI換聲”,可理解為柯南的蝴蝶結變聲器,由于其僅學習聲色特征,可用于跨語種(當然相似度肯定不如原語種直接換聲)
ps:由于其擬聲特性,許多人使用其進行歌聲合成,但是考慮到必須有干聲素材作為輸入,靈活性并不高,之后筆者打算結合xstudio等軟件作為輸入嘗試下調(diào)教
倉庫地址:https://github.com/svc-develop-team/so-vits-svc
diffsinger:基于diffsion擴散模型實現(xiàn)的歌聲合成,擴散模型也是Stable diffusion這一AI繪畫模型所使用的,不過這一模型最大的問題就是很吃算力資源,文檔中提到訓練時需要準備不小于20G顯存的顯卡,因此筆者暫時放棄該模型。不過據(jù)說穩(wěn)定性很高,有愛好者嘗試后可以在評論區(qū)交流交流。
倉庫地址:https://github.com/MoonInTheRiver/DiffSinger
筆者近些天折騰了下so-vits-svc的訓練,以下是基本流程,希望能給后來者以借鑒
數(shù)據(jù)準備:
筆者從命運石之門(stein;gate)游戲中提取牧瀨紅莉棲角色語音2906條,將提取出的ogg格式語音轉(zhuǎn)化為wav格式,并將其放在cristina文件夾下待用(理論上來說應該手動篩選掉時長過短或無意義的音頻,但數(shù)據(jù)量過大,筆者并未人工處理)
ps:感謝大佬的開源項目用于解包游戲文件:https://github.com/rdavisau/sg-unpack
模型準備:
本人使用的是B站大佬的整合包,其打包了整個python環(huán)境與預訓練模型,加入了幾個簡單的bat腳本,操作較為方便,有一定編程基礎且不懶的可以直接通過上述倉庫clone

3. 需要了解的模型文件結構:

? ? 其中Cristina文件夾即先前整理過的放置角色語音的文件夾,直接放在dataset_raw文件夾下即可,logs/44k文件夾下存儲了訓練后的權重模型,其中默認放置了D_0,G_0作為預訓練模型,config.json中決定了訓練該如何進行,其中參數(shù)的意義在下文單獨介紹
3.5.config.json的參數(shù)意義
大部分參數(shù)不需要去動他,除非你深刻了解自己要做什么,可以動的參數(shù):
seed:初始化隨機種子,如果訓練效果不好,可以更改該值再次訓練,或許會好些?不過一次完整的訓練過程中不應改動該值
epochs:總共訓練的輪次,一般設置為10000確保其不會停止,請記住,并不一定訓練輪次越多,效果越好
learing_rate:學習步長,設置時盡量與batch_size成反比,如batch_size->2*batch_size,learing_rate->0.5*learning_rate
batch_size:其值越大訓練越快,也越占顯存,根據(jù)自己電腦顯存設置,記得同步更改learning_rate
keep_ckpts: 最大保存模型數(shù)量,設置為0表示保存所有模型,一個模型大約500M,請根據(jù)自己硬盤容量進行設置
4. 點擊數(shù)據(jù)預處理.bat或使用官方代碼
5. 開始訓練即可
6.檢測訓練效果
初級:直接從logs/44k中取出模型進行推理,人耳判別好壞
中級:訓練過程中會打印每個epoch所花費的時間,以及相關loss數(shù)值,可以一般化的了解
高級:使用
然后在6006端口獲取可視化數(shù)據(jù)
7.補充下各loss的意義


寫在最后:
筆者使用租賃的3090,設置batch_size為12,跑上述2906個語音數(shù)據(jù),大概3分鐘一個epoch,在跑了一百多個epoch,步長為10400后效果較為理想。
并且先前筆者使用100個語音數(shù)據(jù)在個人電腦上(2060)簡單跑了3000步左右(epoch次數(shù)忘了……),已經(jīng)基本可以還原音色(或者是可以聽出來是誰了),感覺模型質(zhì)量還不錯,鼓勵大家嘗試
ps: 對于命運石之門角色音線合成有興趣的歡迎加群交流,群內(nèi)已打包上傳cris的音頻數(shù)據(jù)集,桶子的聲音也很有辨識度哇(笑)
交流群:
723240586