最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

vits聲音合成-本地部署(windows)-自己組合ai的第二步

2023-04-05 00:06 作者:不想起名字的雨狼  | 我要投稿

這些是vits的衍生版本(沒有配置使用過):

https://github.com/PlayVoice/vits_chinese(不是教程版本)

https://github.com/Plachtaa/VITS-fast-fine-tuning(小白的最好選擇)

https://github.com/svc-develop-team/so-vits-svc(三方維護衍生版)


本文檔基于:

windows11

CUDA 12.1

Anaconda

Anaconda對于配置單個AI可有可無,這是用來用于虛擬多個python環(huán)境,防止之后組合別的ai出現(xiàn)環(huán)境和包不匹配導致安裝多AI失敗的情況,比如擬聲鳥需要的是python3.9,而stablediffusion需要的是python3.10,以及各個包之間會有相同的依賴庫但版本不同

nccl(無法在windows運行),windows使用的是gloo(無需下載文件)

Cmake(需要先下載microsoft visual studio【社區(qū)版就行(community)】)

FFmpeg

顯卡2080ti(很慢,1500的訓練用了一天,一般建議配置不好的各位后面配置config.json的時候填的雖然是10000,但可以在1500左右就使MogGoeGUI跑一下,一般好的訓練材料已經(jīng)可以出效果了)

開始(前置準備):

【這版教程很匆忙,我沒有設置網(wǎng)盤資源】


查看當前電腦的CUDA版本:

打開“命令提示符(CMD)”

輸入nvidia-smi

531.41為驅動版本,12.1為CUDA版本


下載所用文件:

下載vits項目(Github)

https://github.com/jaywalnut310/vits(原版,非教程版,步驟差不多,但是缺少對于中文的支持,動手能力強的可以自己修改其中代碼增加對于中文的支持,尤其是symbol.py和cleaner.py)

github.com/CjangCjengh/vits(Cj中文版vits【大部分改動在對于中文的處理上】)


下載AnaConda(Windows):

https://www.anaconda.com (主頁)

https://repo.anaconda.com/archive/Anaconda3-2023.03-Windows-x86_64.exe

https://mirrors.bfsu.edu.cn/anaconda/(北京外國語大學開源軟件鏡像站)



msvc:

https://visualstudio.microsoft.com/zh-hans/downloads/



下載pytorch文件(以防各種莫名其妙的pytorch報錯):

命令行方式:https://pytorch.org/get-started/locally/

Pytorch下載:

https://download.pytorch.org/whl/ (所有庫下載)

pytorch:

https://download.pytorch.org/whl/torch

cp:python版本(cp310=python3.10版本)

cu:cuda版本(cu118=cuda11.8版本)? ? ?使用顯卡

cu118可以適用于cuda12.1版本

cpu:cpu版本? ? 使用CPU

cpu版本適用于顯卡顯存不足6g的電腦

2.0.0為最新版本

Pytorch Audio

https://download.pytorch.org/whl/torchaudio

Pytorch Vision

https://download.pytorch.org/torchvision/



CUDA下載(CUDA Toolkit):

https://developer.nvidia.com/cuda-downloads?


Git下載(梯子在這個項目中非常重要,最好有梯子):

https://git-scm.com/downloads

需要的軟件:

shotcut(導出音頻文件):

https://www.shotcut.org


buzz(語音轉文字,安裝運行,基于openai的whisper,我項目里直接使用的代碼制作訓練集,放置于評論區(qū))

https://github.com/chidiwilliams/buzz/releases/tag/v0.7.2


audio-slicer(視頻切片,.exe文件運行,可以多切幾次弄多一點訓練材料,參數(shù)自己調整,最好每一條都在5秒以內)

https://github.com/flutydeer/audio-slicer/releases/tag/v1.1.0


Espeak:

https://github.com/espeak-ng/espeak-ng/releases/tag/1.51(只在環(huán)境變量中用到)


FFmpeg:

https://github.com/BtbN/FFmpeg-Builds/releases(win,文件大小126M的版本,只在環(huán)境變量中用到)


MoeGoeGUI:

https://github.com/CjangCjengh/MoeGoe_GUI/issues(用于使用訓練好的模型)


配置環(huán)境變量:

按照自己的安裝路徑修改

PHONEMIZER_ESPEAK_LIBRARY

PHONEMIZER_ESPEAK_PATH


環(huán)境變量(path中):

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\libnvvp

D:\Microsoft\Microsoft Visual Studio\Visual Studio\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\

C:\Program Files\NVIDIA Corporation\Nsight Compute 2023.1.0\

D:\Microsoft\Microsoft Visual Studio\Visual Studio\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

假設我的項目路徑在

C:\Users\用戶名\Desktop\AIS\vits-main\


Vits配置安裝:

使用anaconda prompt

conda create -n 名字 想要安裝的包(=指定版本)?

首先使用conda創(chuàng)建一個3.9的python環(huán)境

示例:

conda create -n vits python=3.9?

激活python環(huán)境

conda activate 你的環(huán)境名字

基礎環(huán)境base

示例:

conda activate vits

激活的vits環(huán)境

cd 你的項目文件夾路徑(之后操作只有安裝依賴文件會改變路徑到monotonic_align下)

示例:

cd C:\Users\用戶名\Desktop\AIS\vits-main\


pip install 下好的torch,torchaudio,torchvision文件路徑

示例:

pip install C:/torch.whl

由于我們安裝好了pytorch,就不使用它自帶的老版本了容易出錯,所以我們需要修改安裝依賴文件

requirement.txt文件內容修改為:

Cython==0.29.21

librosa==0.8.0

matplotlib==3.3.1

numpy==1.18.5

phonemizer==2.2.1

scipy>=1.5.2(可能是python版本問題導致無法安裝1.5.2只能安裝大于1.5.2的版本)

tensorboard==2.3.0

Unidecode==1.1.1

anaconda prompt在項目文件夾路徑下輸入

pip install -r requirement.txt


修改項目文件(極度重要【中文訓練】),盡量避免之后的報錯:

都是項目文件夾下

train.py

52行【原版需要修改】:

os.environ['MASTER_PORT'] = '8000'

67行【windows修改,nccl在windows用不了】:

dist.init_process_group(backend='gloo', init_method='env://', world_size=n_gpus, rank=rank)

104行【問題在下面】:

net_g = DDP(net_g, device_ids=[rank],find_unused_parameters=True)

105行【同104】:

net_d = DDP(net_d, device_ids=[rank],find_unused_parameters=True)



preprocess.py

這個文件中可以不用設置,但在使用預處理命令時需要加上參數(shù)

9行【設置為你制作好的數(shù)據(jù)集文件,_val文件是校驗集】:

parser.add_argument("--filelists", nargs="+", default=["filelists/list.txt", "filelists/list_val.txt"])

10行【中文版設置,原版訓練英文的不用管】:

parser.add_argument("--text_cleaners", nargs="+", default=["chinese_cleaners"])


mel_processing.py

pytorch包太新了導致的

66行,67行【onesided=True后增加,return_complex=False】

spec = torch.stft(y, n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[wnsize_dtype_device],center=center, pad_mode='reflect', normalized=False, onesided=True,return_complex=False)

104行,105行【onesided=True后增加,return_complex=False】

spec = torch.stft(y, n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[wnsize_dtype_device], center=center, pad_mode='reflect', normalized=False, onesided=True,return_complex=False)


utils.py

146行,147行【default中為訓練時的config.json文件位置,可以不設置,訓練的時候可以使用-c參數(shù)配置】

parser.add_argument('-c', '--config', type=str, default="./configs/base.json",help='JSON file for configuration')

146行,147行【help中為訓練設置的模型名,可以不設置,訓練的時候可以使用-m參數(shù)配置】

? parser.add_argument('-m', '--model', type=str, required=True,help='Model name')

152行【訓練設置的模型名是個文件夾,在這個文件夾下,實際用到的是G_*.pth這個文件】

model_dir = os.path.join("../drive/MyDrive", args.model)


datautils.py

323行【不設置一定報錯】

for i in range(len(buckets) - 1, -1, -1):


訓練材料(煉丹材料)和list.txt放置方式以及config配置:

基于https://www.bilibili.com/read/cv21153903

訓練集制作【最好沒有背景雜音】

下載視頻,然后使用Shotcut導出為wav,一定要是單聲道不然訓練容易報錯

點擊輸出

參數(shù)為:采樣22050Hz,16bit(16位),單聲道

然后打開audio-slicer:


然后彈出界面,配置參數(shù):

左上點擊選擇文件

參數(shù):

Threshold(dB):低于這個分貝就會切割

Minimum Length(ms):最小的切割長度

Minimum Interval(ms):最小的切割間隔

Hop Size(ms):粗略理解為精確度(10-20就行了)

Maximum Silence Length(ms):最大沉默(無聲)時間

最后這個是輸出目錄

進度條到100%就去文件夾里看看

【假設我導出的文件夾在C:\Users\用戶名\Desktop\AIS\Vedios】


然后使用buzz(沒有批量導出,批量導出還是自己想辦法或者用python自己寫,有人需要的話評論區(qū)留言,下一期我就寫whisper的配置以及在python中的使用)

點擊+號導入文件,可以按住shift批量選,

Tiny改選medium(模型,這個軟件用的是CPU)

Language:選中文(其他語言也可以)

點擊run就行


這樣就是完成

雙擊這條數(shù)據(jù),然后右下角選TXT導出到文件夾中,作為訓練音頻的文本數(shù)據(jù)

【假設我導出的文件夾在C:\Users\用戶名\Desktop\AIS\Txt】



然后制作兩個文件,文件名隨意,但一個是訓練集一個是驗證集,而且是txt文件(無BOM頭),不然訓練時會報錯,文件中的格式參考官方【兩個文件格式一樣】

【官方為多人多訓練數(shù)據(jù)格式】

黃色:audio-slicer切割好的wav音頻文件路徑(絕對路徑最好,相對路徑會計算也可以)

綠色:說話人數(shù)大于一個人時設置,第一個說話的為0,第二個為1以此類推(只有一個人時不寫)

天藍色(湖藍色):文字語言類型(可以不寫)

橙色:音頻文本(涉及訓練質量)

紫色:文字語言類型(可以不寫)

【單個人說話的基本格式】(|:分割符)

音頻文件路徑|音頻文本

示例:

C:\Users\用戶名\Desktop\AIS\Vedios\test.wav|示例文本

(默認說話人為0)

【假設我導出的文件夾在C:\Users\用戶名\Desktop\AIS\vits-main\filelist】

文件名為【list.txt,list_val.txt】

文件路徑為:

【C:\Users\用戶名\Desktop\AIS\vits-main\filelist\list.txt】

【C:\Users\用戶名\Desktop\AIS\vits-main\filelist\list_val.txt】



訓練參數(shù)文件:

以下操作全在

【C:\Users\用戶名\Desktop\AIS\vits-main\】文件夾下(假設的項目文件夾)


config下創(chuàng)建文件(原版基于ljs_base.json,中文版基于chinese_base.json)

【可以復制粘貼然后直接改名】,文件名自定義:

【假設文件名:chinese_config.json】

重要訓練參數(shù):

查看中文版官方給的chinese_base.json為例


eval_interval【保存間隔】:

默認的1000即可以滿足保存的需求,設置過小會訓練過程會耗費大量時間在保存上,設置過大出現(xiàn)問題無法及時保存最近的模型。

epochs【迭代次數(shù)】:

比較好的數(shù)據(jù)集訓練1500次就能出現(xiàn)效果,2000已經(jīng)勉強可以使用,這里建議一萬到兩萬效果最佳,但是那是顯卡好的情況,差的話可能要訓練好幾天,甚至一個月。

batch_size【使用顯存,4:6GB,6:10GB】

(除非富哥或者租卡的,不然不設置就等著一直爆顯存了):

請按照你的顯存酌情修改,否則開始訓練就爆顯存。

fp16_run【半精度訓練】:

默認開啟即可,配置足夠優(yōu)秀可以嘗試關閉。

data部分:

training_files:訓練數(shù)據(jù)文本文件preprocess(預處理)后文件路徑

示例:

C:\Users\用戶名\Desktop\AIS\vits-main\filelist\list.txt.cleaned

validation_files:訓練數(shù)據(jù)驗證文件preprocess(預處理)后文件路徑

示例:

C:\Users\用戶名\Desktop\AIS\vits-main\filelist\list_val.txt.cleaned

text_cleaners【text文件夾下cleaner.py中的def方法,就是這里的名稱】

n_speakers【說話人數(shù)】:

單人改為0

cleaned_text【保持默認的true即可】

【假設配置文件路徑:C:\Users\用戶名\Desktop\AIS\vits-main\config\chinese_config.json】

開始訓練:

回到anaconda prompt:


通用方式(中英文版都行)


按照官方給的方式使用:

安裝訓練依賴:

切換到項目下的monotonic_align文件夾

cd?monotonic_align?

python setup.py build_ext --inplace

小坑:

monotonic_align下還要建立一個文件夾叫monotonic_align,不然報錯


回到項目文件夾:

cd ..


預處理:

python preprocess.py --text_index 1 --filelists 兩個list.txt文件的位置,中間用空格分開

示例:

python preprocess.py --text_index 1 --filelists?C:\Users\用戶名\Desktop\AIS\vits-main\filelist\list.txt C:\Users\用戶名\Desktop\AIS\vits-main\filelist\list_val.txt


訓練

python?train.py -c 自定義config.json文件路徑?-m 輸出后的model名稱

#?LJ Speech(常用)

python train.py -c configs/ljs_base.json -m ljs_base

示例:

python train.py -c C:\Users\用戶名\Desktop\AIS\vits-main\config\chinese_config.json -m TestModel【之前文件設置過的話直接python train.py就行了】


#?VCTK

python train_ms.py -c configs/vctk_base.json -m vctk_base

示例:

python train_ms.py -c?C:\Users\用戶名\Desktop\AIS\vits-main\config\chinese_config.json?-m TestModel【之前文件設置過的話直接python train_ms.py就行了】



訓練模型使用

====> Epoch:1【顯示這個就是開始訓練了】

?訓練模型存放位置默認為項目文件的上一級文件夾的drive文件夾中

打開MoeGoe

打開文件是他自己的.exe

打開模型選擇【G_數(shù)字.pth】

示例:G_81000.pth

打開配置選擇【config.json】

config.json是在訓練后的模型這個文件夾中的,不要選項目文件夾中的那個,雖然文件格式一樣,但就怕出bug

然后說話人選之前文本中設置過的,單人為0

點擊保存,保存后的文件為wav文件



問題總覽:

包問題【No module named】(一律使用pip解決)

No module named 'numpy.random.bit_generator'

pip install numpy==1.19.3

TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

pip install protobuf==3.20.0


問題:

ValueError: port must have value from 0 to 65535 but was 80000.

解決方法:

修改train.py或train_ms.py文件

? os.environ['MASTER_PORT'] = '80000'

改為沒被占用的端口號(80,3306,22,21,20,443等常用端口不要去設置,比如:網(wǎng)頁常用端口,后端和數(shù)據(jù)庫常用端口,應用服務已占用端口如微信、MC服務器等,服務占用的端口,數(shù)據(jù)庫常用端口,文件傳輸常用端口,各種協(xié)議如郵件傳輸協(xié)議的常用端口等端口,一定需要避免設置這些端口,且范圍控制在0~65535中)

例子:os.environ['MASTER_PORT'] =?'5321'


問題:

導致vits在windows上無法一次啟動的原因:

RuntimeError("Distributed package doesn't have NCCL " "built in")

RuntimeError: Distributed package doesn't have NCCL built in

解決方法:

(Linux)

https://developer.nvidia.com/nccl

https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html

(windows)

修改train.py或者train_ms.py文件

init_process_group(backend="gloo", init_method="env://")


問題:

opencc的包導入問題

解決方法:

注釋所有text文件夾中使用opencc的地方,因為很難裝,有成功裝好的希望給出解決方式在評論區(qū)


問題:

NotImplementedError: Only 2D, 3D, 4D, 5D padding with non-constant padding are supported for now?

解決方法:

重新制作數(shù)據(jù)集,數(shù)據(jù)集需要是22050Hz,16bit,單聲道(重要?。。。?/span>


問題:

stft will soon require the return_complex parameter be given for real inputs, and will further require that return_complex=True

解決方法

修改mel_processing.py文件

spec = torch.stft(y, n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[str(y.device)], center=center, pad_mode='reflect', normalized=False, onesided=True,return_complex=False)

在出現(xiàn)STFT處增加False消除警告


問題

RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has parameters that were not used in producing loss

解決方法

修改train.py或者train_ms.py文件

將104和105行模型的參數(shù)后加上find_unused_parameters=True

注:但是find_unused_parameters=True的設置會帶來額外的運行時開銷(而且還不小)。


其他問題解決方案:

https://www.bilibili.com/read/cv22206231/(多錯誤集合)

https://www.bilibili.com/read/cv21153903(很有用)

https://github.com/jaywalnut310/vits/issues(github評論區(qū))










vits聲音合成-本地部署(windows)-自己組合ai的第二步的評論 (共 條)

分享到微博請遵守國家法律
宁阳县| 石楼县| 临武县| 延庆县| 从江县| 迁西县| 河池市| 开封市| 满城县| 宁南县| 莱西市| 楚雄市| 乌拉特后旗| 湘阴县| 阿勒泰市| 邓州市| 张家川| 常德市| 乡宁县| 托克逊县| 安国市| 巴东县| 石渠县| 霍林郭勒市| 安丘市| 连南| 孟连| 海宁市| 井冈山市| 眉山市| 蛟河市| 尤溪县| 绥芬河市| 承德市| 南开区| 衡水市| 茂名市| 甘肃省| 海丰县| 色达县| 精河县|