前言
項(xiàng)目名:VITS-fast-fine-tuning (VITS 快速微調(diào))
項(xiàng)目地址:https://github.com/Plachtaa/VITS-fast-fine-tuning
支持語言:中、日、英
官方簡介:
這個代碼庫會指導(dǎo)你如何將自定義角色(甚至你自己),加入預(yù)訓(xùn)練的VITS模型中,在1小時內(nèi)的微調(diào)使模型具備如下功能:
在 模型所包含的任意兩個角色 之間進(jìn)行聲線轉(zhuǎn)換
以 你加入的角色聲線 進(jìn)行中日英三語 文本到語音合成。
本項(xiàng)目使用的底模涵蓋常見二次元男/女配音聲線(來自原神數(shù)據(jù)集)以及現(xiàn)實(shí)世界常見男/女聲線(來自VCTK數(shù)據(jù)集),支持中日英三語,保證能夠在微調(diào)時快速適應(yīng)新的聲線。
數(shù)據(jù)集
干聲數(shù)據(jù)收集
干聲,一般指錄音以后未經(jīng)過任何空間性質(zhì)或的后期處理和加工的純?nèi)寺暋?br> 為了保證最好的合成效果,數(shù)據(jù)集越干凈越好。當(dāng)然也不是必須使用干聲數(shù)據(jù),也可以使用從視頻中分離的人聲來進(jìn)行訓(xùn)練,效果也還可以。
錄制可以直接使用手機(jī)進(jìn)行錄音,如果電腦有效果較好的麥克風(fēng),也可以使用麥克風(fēng)進(jìn)行錄制(如果可以自定義錄制音頻格式,建議選擇wav)。
如果進(jìn)行視頻人聲分離,我這給大家推薦幾個分離相關(guān)的網(wǎng)站和項(xiàng)目。
-
vocalremover:https://vocalremover.org/zh/
-
tme_studio:https://y.qq.com/tme_studio/index.html#/editor
-
UVR5:https://github.com/Anjok07/ultimatevocalremovergui
-
demucs:https://github.com/facebookresearch/demucs
音頻轉(zhuǎn)碼
將音頻轉(zhuǎn)碼為wav格式,碼率等配置保持原始音頻質(zhì)量即可??梢允褂酶袷焦S、ShanaEncoder等轉(zhuǎn)碼軟件進(jìn)行音頻轉(zhuǎn)碼。
音頻分割
將我們的音頻數(shù)據(jù)切分成多個5-15s的小段,這個范圍僅供參考。需要注意的是,如果音頻時長過長,在訓(xùn)練過程中會占用更多的顯存,所以為了降低顯存和顯卡負(fù)擔(dān),建議大家切分成小段。
那么切分方式同樣也多種多樣,可以使用視頻剪輯軟件、音頻編輯軟件、格式轉(zhuǎn)換軟件、第三方軟件等。
我這邊就以windows用戶為例,給大家推薦一款開源的音頻批量自動分割軟件slicer-gui(源自b站),官方下載地址:https://github.com/flutydeer/audio-slicer/releases/download/v1.1.0/slicer-gui-windows-v1.1.0.zip
下載完成,解壓后打開,運(yùn)行slicer-gui.exe
選擇待處理的音頻文件,設(shè)置需要切分的音頻參數(shù),選擇輸出路徑,點(diǎn)擊start即可。默認(rèn)配置運(yùn)行也可以,視情況可以微調(diào)參數(shù)。(需要注意,軟件需要
完成以上分割后,我們將我們分割好的音頻文件,存入一個文件夾中,需要注意的是,此文件夾的命名就是我們訓(xùn)練時的說話人配置,所以需要慎重取名,并不要和其他說話人重復(fù)。最后將存放音頻的文件夾再存入一個名為:custom_character_voice 的文件夾中,最后打包壓縮包即可。需要注意,此文件夾在源碼中是默認(rèn)的配置,所以建議大家保持一致,可以避免不必要的麻煩。那么最終的文件目錄結(jié)構(gòu)如下:
custom_character_voice
├───speaker0
│ ├───1.wav
│ ├───...
│ └───2.wav
└───speaker1
├───1.wav
├───...
└───2.wav
環(huán)境搭建
服務(wù)器選購
本文中,以AutoDL平臺為例,如果您的個人計(jì)算機(jī)顯卡顯存在4GB及以上(建議4GB+),可以使用個人來進(jìn)行訓(xùn)練。
AutoDL官網(wǎng):https://www.autodl.com/home
完成注冊后,我們選購一臺合適的服務(wù)器,我這以Tesla T4為例(期間的付費(fèi)實(shí)名等操作這里不做展開)。
服務(wù)器購買后,可以使用鏡像,平臺社區(qū)有很多作者發(fā)布了自己的鏡像,可以搜索vits查找相關(guān)鏡像。選擇做好的鏡像可以大大降低我們的環(huán)境部署的時間。大家可以直接選擇以下的vits-fast的鏡像,然后運(yùn)行我們的服務(wù)器。
開機(jī)后,在右上角控制臺,容器實(shí)例中,我們可以看到我們的服務(wù)器的相關(guān)信息。
點(diǎn)擊JupyterLab
,打開在線面板,再打開終端。
運(yùn)行環(huán)境和前期準(zhǔn)備
由于我選擇的鏡像是so-vits-svc-v10,會有些許出入,但整體不會對項(xiàng)目運(yùn)行使用造成影響。
python:3.8.10
我們先安裝git,在終端運(yùn)行命令sudo apt install git -y
然后clone項(xiàng)目到/root
目錄。(注意,如果您選擇的VITS-fast-fine-tuning的鏡像,那可能需要先刪除默認(rèn)的VITS-fast-fine-tuning
文件夾,重新clone項(xiàng)目)
git clone https://github.com/Plachtaa/VITS-fast-fine-tuning.git
如果您沒有選擇做好的官方鏡像,則需要手動安裝相關(guān)環(huán)境,具體可以參考官方筆記:https://colab.research.google.com/drive/1pn1xnFfdLK63gVXDwV4zCXfVeo8c-I-0?usp=sharing
1. 安裝運(yùn)行環(huán)境
cd VITS-fast-fine-tuning
python -m pip install --upgrade --force-reinstall regex
python -m pip install --upgrade --force-reinstall numba
python -m pip install --force-reinstall soundfile
python -m pip install --force-reinstall gradio
python -m pip install imageio==2.4.1
python -m pip install --upgrade youtube-dl
python -m pip install moviepy
python -m pip install -r requirements.txt
python -m pip install --upgrade pyzmq
cd monotonic_align/
mkdir monotonic_align
python setup.py build_ext --inplace
cd ..
mkdir pretrained_models
wget https://huggingface.co/datasets/Plachta/sampled_audio4ft/resolve/main/sampled_audio4ft_v2.zip
unzip sampled_audio4ft_v2.zip
mkdir video_data
mkdir raw_audio
mkdir denoised_audio
mkdir custom_character_voice
mkdir segmented_character_voice
2.下載預(yù)訓(xùn)練模型(以下步驟如果不進(jìn)行訓(xùn)練,皆可以跳過)
可以根據(jù)自己的需求下載對應(yīng)的模型,不一定全部都下載。
mkdir pretrained_models/{C,CJ,CJE}
wget https://huggingface.co/spaces/sayashi/vits-uma-genshin-honkai/resolve/main/model/D_0-p.pth -O ./pretrained_models/CJ/D_0.pth
wget https://huggingface.co/spaces/sayashi/vits-uma-genshin-honkai/resolve/main/model/G_0-p.pth -O ./pretrained_models/CJ/G_0.pth
wget https://huggingface.co/spaces/sayashi/vits-uma-genshin-honkai/resolve/main/model/config.json -O ./pretrained_models/CJ/finetune_speaker.json
wget https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer/resolve/main/pretrained_models/D_trilingual.pth -O ./pretrained_models/CJE/D_0.pth
wget https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer/resolve/main/pretrained_models/G_trilingual.pth -O ./pretrained_models/CJE/G_0.pth
wget https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer/resolve/main/configs/uma_trilingual.json -O ./pretrained_models/CJE/finetune_speaker.json
wget https://huggingface.co/datasets/Plachta/sampled_audio4ft/resolve/main/VITS-Chinese/D_0.pth -O ./pretrained_models/C/D_0.pth
wget https://huggingface.co/datasets/Plachta/sampled_audio4ft/resolve/main/VITS-Chinese/G_0.pth -O ./pretrained_models/C/G_0.pth
wget https://huggingface.co/datasets/Plachta/sampled_audio4ft/resolve/main/VITS-Chinese/config.json -O ./pretrained_models/C/finetune_speaker.json
下載好后,需要將配置文件和預(yù)訓(xùn)練模型移動到指定路徑,我這里提供了shell腳本,您可以創(chuàng)建名為 init.sh 的文件,貼入以下內(nèi)容,然后通過 bash init.sh CJE 來運(yùn)行腳本,選擇需要使用的預(yù)訓(xùn)練模型。最后就是預(yù)訓(xùn)練模型的傳參,分別是 CJE、CJ、C。
#!/bin/bash
if [ "$1" = "CJE" ]
then
cp -rf pretrained_models/CJE/* pretrained_models/
rm -rf OUTPUT_MODEL/*
#rm -rf custom_character_voice/*
cp -rf pretrained_models/CJE/finetune_speaker.json configs/
elif [ "$1" = "CJ" ]
then
cp -rf pretrained_models/CJ/* pretrained_models/
rm -rf OUTPUT_MODEL/*
#rm -rf custom_character_voice/*
cp -rf pretrained_models/CJ/finetune_speaker.json configs/
elif [ "$1" = "C" ]
then
cp -rf pretrained_models/C/* pretrained_models/
rm -rf OUTPUT_MODEL/*
#rm -rf custom_character_voice/*
cp -rf pretrained_models/C/finetune_speaker.json configs/
else
cp -rf pretrained_models/CJE/* pretrained_models/
rm -rf OUTPUT_MODEL/*
#rm -rf custom_character_voice/*
cp -rf pretrained_models/CJE/finetune_speaker.json configs/
fi
3.上傳數(shù)據(jù)集并解壓
將我們前面準(zhǔn)備好的數(shù)據(jù)集上傳到服務(wù)器中
然后使用unzip命令(如果沒有可以使用apt安裝),解壓到項(xiàng)目路徑中,注意圖片路徑
4.數(shù)據(jù)預(yù)處理
我這里提供了shell腳本,您可以創(chuàng)建一個data_pre.sh的文件,將以下內(nèi)容寫入,然后使用bash data_pre.sh 運(yùn)行,第一個傳參是選擇訓(xùn)練的目標(biāo)語言(需要有配套的預(yù)訓(xùn)練模型),第二個傳參為0表示不使用預(yù)訓(xùn)練模型,直接進(jìn)行訓(xùn)練,非0則使用預(yù)訓(xùn)練模型。例如: bash data_pre.sh CJE 就是使用預(yù)訓(xùn)練模型CJE訓(xùn)練CJE三語模型。
#!/bin/bash
if [ $# -eq 1 ]; then
lang=$1
else
lang=CJE
fi
python scripts/video2audio.py
python scripts/denoise_audio.py
python scripts/long_audio_transcribe.py --languages "$lang" --whisper_size large
python scripts/short_audio_transcribe.py --languages "$lang" --whisper_size large
python scripts/resample.py
if [ "$2" = "0" ]
then
python preprocess_v2.py --languages "$lang"
else
python preprocess_v2.py --add_auxiliary_data True --languages "$lang"
fi
訓(xùn)練
在完成運(yùn)行環(huán)境和前期準(zhǔn)備后,則可以進(jìn)行我們的訓(xùn)練了。
打開終端,在項(xiàng)目根目錄運(yùn)行以下命令即可,其中 -m 后為模型輸出路徑, --max_epochs 后為最大迭代次數(shù),到達(dá)后會自動停止。您可以根據(jù)自己需求自行更改,默認(rèn)為存儲在 OUTPUT_MODEL文件夾中,訓(xùn)練100個迭代。
mkdir OUTPUT_MODEL
python finetune_speaker_v2.py -m "./OUTPUT_MODEL" --max_epochs "100" --drop_speaker_embed True
下面是訓(xùn)練日志內(nèi)容,可以看到訓(xùn)練相關(guān)的配置,迭代次數(shù),損失率,輸出的模型等內(nèi)容。等待訓(xùn)練完成即可,期間也可以隨時終止訓(xùn)練。
推理合成
將我們的模型和配置文件放到指定文件夾下(配置文件放到項(xiàng)目根目錄,模型放到OUTPUT_MODEL文件夾下),項(xiàng)目根目錄運(yùn)行以下命令,打開web UI服務(wù),進(jìn)行推理。其中 --model_dir 后就是模型路徑,可以自行修改,配置文件默認(rèn)讀取的 項(xiàng)目路徑下的 finetune_speaker.json 。
需要注意的是,默認(rèn)服務(wù)跑在 http://127.0.0.1:7860,如果您需要公網(wǎng)訪問,可以做修改端口至6006,開放AutoDL對應(yīng)實(shí)例的自定義服務(wù)功能,或者自建內(nèi)網(wǎng)穿透。文章來源:http://www.zghlxwxcb.cn/news/detail-718518.html
python VC_inference.py --model_dir ./OUTPUT_MODEL/G_latest.pth --share True
為了方便,可以在個人電腦上進(jìn)行合成,將模型和配置文件下載到本地,然后使用官方提供的windows合成包,下載鏈接:https://github.com/Plachtaa/VITS-fast-fine-tuning/releases/download/webui-v1.1/inference.rar
解壓后,將我們的模型和配置文件都放到解壓后的根目錄內(nèi),模型改名為G_latest.pth,配置文件改名為finetune_speaker.json,運(yùn)行inference.exe即可自動加載。
頁面簡單易懂,就可以盡情合成了。文章來源地址http://www.zghlxwxcb.cn/news/detail-718518.html
到了這里,關(guān)于AI語音合成 VITS Fast Fine-tuning,半小時合成專屬模型,部署訓(xùn)練使用講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!