本地訓練,開箱可用,Bert-VITS2 V2.0.2版本本地基于現有數據集訓練(原神刻晴)

在這里插入圖片描述

按照固有思維方式,深度學習的訓練環節應該在云端,畢竟本地硬件條件有限。但事實上,在語音識別和自然語言處理層面,即使相對較少的數據量也可以訓練出高性能的模型,對于預算有限的同學們來說,也沒必要花冤枉錢上“云端”了,本次我們來演示如何在本地訓練Bert-VITS2 V2.0.2模型。

Bert-VITS2 V2.0.2基于現有數據集

目前Bert-VITS2 V2.0.2大體上有兩種訓練方式,第一種是基于現有數據集,即原神各角色已經標注好的語音數據,這部分內容是公開的,但是不能商用,可以在這里下載:

https://pan.ai-hobbyist.org/Genshin%20Datasets/%E4%B8%AD%E6%96%87%20-%20Chinese/%E5%88%86%E8%A7%92%E8%89%B2%20-%20Single/%E8%A7%92%E8%89%B2%E8%AF%AD%E9%9F%B3%20-%20Character

我們只需要選擇喜歡的角色進行下載即可:

第二種是沒有現有的數據集,即假設我們想克隆地球人隨便任意一個人的聲音,這種情況下我們需要收集這個人的語音素材,然后自己制作數據集。

本次我們只演示第一種訓練方式,即訓練現有數據集的原神角色,第二種暫且按下不表。

Bert-VITS2 V2.0.2配置模型

首先克隆項目:

git clone https://github.com/v3ucn/Bert-VITS2_V202_Train.git

隨后下載新版的bert模型:

鏈接:https://pan.baidu.com/s/11vLNEVDeP_8YhYIJUjcUeg?pwd=v3uc

下載成功后,解壓放入項目的bert目錄,目錄結構如下所示:

E:\work\Bert-VITS2-v202\bert>tree /f  
Folder PATH listing for volume myssd  
Volume serial number is 7CE3-15AE  
E:.  
│   bert_models.json  
│  
├───bert-base-japanese-v3  
│       config.json  
│       README.md  
│       tokenizer_config.json  
│       vocab.txt  
│  
├───bert-large-japanese-v2  
│       config.json  
│       README.md  
│       tokenizer_config.json  
│       vocab.txt  
│  
├───chinese-roberta-wwm-ext-large  
│       added_tokens.json  
│       config.json  
│       pytorch_model.bin  
│       README.md  
│       special_tokens_map.json  
│       tokenizer.json  
│       tokenizer_config.json  
│       vocab.txt  
│  
├───deberta-v2-large-japanese  
│       config.json  
│       pytorch_model.bin  
│       README.md  
│       special_tokens_map.json  
│       tokenizer.json  
│       tokenizer_config.json  
│  
└───deberta-v3-large  config.json  generator_config.json  pytorch_model.bin  README.md  spm.model  tokenizer_config.json

隨后下載預訓練模型:

https://openi.pcl.ac.cn/Stardust_minus/Bert-VITS2/modelmanage/model_readme_tmpl?name=Bert-VITS2%E4%B8%AD%E6%97%A5%E8%8B%B1%E5%BA%95%E6%A8%A1-fix

放入項目的pretrained_models目錄,如下所示:

E:\work\Bert-VITS2-v202\pretrained_models>tree /f  
Folder PATH listing for volume myssd  
Volume serial number is 7CE3-15AE  
E:.  DUR_0.pth  D_0.pth  G_0.pth

接著把上文提到的刻晴數據集放入項目的Data目錄中的raw目錄:

E:\work\Bert-VITS2-v202\Data\keqing\raw\keqing>tree /f  
Folder PATH listing for volume myssd  
Volume serial number is 7CE3-15AE  
E:.  
vo_card_keqing_endOfGame_fail_01.lab  
vo_card_keqing_endOfGame_fail_01.wav

如果想定制化目錄結構,可以修改config.yml文件:

bert_gen:  config_path: config.json  device: cuda  num_processes: 2  use_multi_device: false  
dataset_path: Data\keqing  
mirror: ''  
openi_token: ''  
preprocess_text:  clean: true  cleaned_path: filelists/cleaned.list  config_path: config.json  max_val_total: 8  train_path: filelists/train.list  transcription_path: filelists/short_character_anno.list  val_path: filelists/val.list  val_per_spk: 5  
resample:  in_dir: raw  out_dir: raw  sampling_rate: 44100

至此,模型和數據集就配置好了。

Bert-VITS2 V2.0.2數據預處理

標注好的原始數據集并不能夠直接進行訓練,需要預處理一下,首先需要將原始數據文件轉寫成為標準的標注文件:

python3 transcribe_genshin.py

生成好的文件:

Data\keqing\raw/keqing/vo_card_keqing_endOfGame_fail_01.wav|keqing|ZH|我會勤加練習,拿下下一次的勝利。  
Data\keqing\raw/keqing/vo_card_keqing_endOfGame_win_01.wav|keqing|ZH|勝負本是常事,不必太過掛懷。  
Data\keqing\raw/keqing/vo_card_keqing_freetalk_01.wav|keqing|ZH|這「七圣召喚」雖說是游戲,但對局之中也隱隱有策算謀略之理。

這里ZH代表中文,新版的Bert-VITS2 V2.0.2也支持日文和英文,代碼分別為JP和EN。

隨后對文本進行預處理以及生成bert模型可讀文件:

python3 preprocess_text.py  python3 bert_gen.py

執行后會產生訓練集和驗證集文件:

E:\work\Bert-VITS2-v202\Data\keqing\filelists>tree /f  
Folder PATH listing for volume myssd  
Volume serial number is 7CE3-15AE  
E:.  cleaned.list  short_character_anno.list  train.list  val.list

檢查無誤后,數據預處理就完成了。

Bert-VITS2 V2.0.2本地訓練

萬事俱備,只差訓練。先不要著急,打開Data/keqing/config.json配置文件:

{  "train": {  "log_interval": 50,  "eval_interval": 50,  "seed": 42,  "epochs": 200,  "learning_rate": 0.0001,  "betas": [  0.8,  0.99  ],  "eps": 1e-09,  "batch_size": 8,  "fp16_run": false,  "lr_decay": 0.99995,  "segment_size": 16384,  "init_lr_ratio": 1,  "warmup_epochs": 0,  "c_mel": 45,  "c_kl": 1.0,  "skip_optimizer": false  },  "data": {  "training_files": "Data/keqing/filelists/train.list",  "validation_files": "Data/keqing/filelists/val.list",  "max_wav_value": 32768.0,  "sampling_rate": 44100,  "filter_length": 2048,  "hop_length": 512,  "win_length": 2048,  "n_mel_channels": 128,  "mel_fmin": 0.0,  "mel_fmax": null,  "add_blank": true,  "n_speakers": 1,  "cleaned_text": true,  "spk2id": {  "keqing": 0  }  },  "model": {  "use_spk_conditioned_encoder": true,  "use_noise_scaled_mas": true,  "use_mel_posterior_encoder": false,  "use_duration_discriminator": true,  "inter_channels": 192,  "hidden_channels": 192,  "filter_channels": 768,  "n_heads": 2,  "n_layers": 6,  "kernel_size": 3,  "p_dropout": 0.1,  "resblock": "1",  "resblock_kernel_sizes": [  3,  7,  11  ],  "resblock_dilation_sizes": [  [  1,  3,  5  ],  [  1,  3,  5  ],  [  1,  3,  5  ]  ],  "upsample_rates": [  8,  8,  2,  2,  2  ],  "upsample_initial_channel": 512,  "upsample_kernel_sizes": [  16,  16,  8,  2,  2  ],  "n_layers_q": 3,  "use_spectral_norm": false,  "gin_channels": 256  },  "version": "2.0"  
}

這里需要調整的參數是batch_size,如果顯存不夠,需要往下調整,否則會出現“爆顯存”的問題,假設顯存為8G,那么該數值最好不要超過8。

與此同時,首次訓練建議把log_interval和eval_interval參數調小一點,即訓練的保存間隔,方便訓練過程中隨時進行推理驗證。

隨后輸入命令,開始訓練:

python3 train_ms.py

程序返回:

11-22 13:20:28 INFO     | data_utils.py:61 | Init dataset...  
100%|█████████████████████████████████████████████████████████████████████████████| 581/581 [00:00<00:00, 48414.40it/s]  
11-22 13:20:28 INFO     | data_utils.py:76 | skipped: 31, total: 581  
11-22 13:20:28 INFO     | data_utils.py:61 | Init dataset...  
100%|████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<?, ?it/s]  
11-22 13:20:28 INFO     | data_utils.py:76 | skipped: 0, total: 5  
Using noise scaled MAS for VITS2  
Using duration discriminator for VITS2  
INFO:models:Loaded checkpoint 'Data\keqing\models\DUR_0.pth' (iteration 7)  
INFO:models:Loaded checkpoint 'Data\keqing\models\G_0.pth' (iteration 7)  
INFO:models:Loaded checkpoint 'Data\keqing\models\D_0.pth' (iteration 7)

說明訓練已經開始了。

訓練過程中,可以通過命令:

python3 -m tensorboard.main --logdir=Data/keqing/models

來查看loss損失率,訪問:

http://localhost:6006/#scalars

一般情況下,訓練損失率低于50%,并且損失函數在訓練集和驗證集上都趨于穩定,則可以認為模型已經收斂。收斂的模型就可以為我們所用了,如何使用訓練好的模型,請移步:又欲又撩人,基于新版Bert-vits2V2.0.2音色模型雷電將軍八重神子一鍵推理整合包分享,囿于篇幅,這里不再贅述。

訓練好的模型存放在Data/keqing/models目錄:

E:\work\Bert-VITS2-v202\Data\keqing\models>tree /f  
Folder PATH listing for volume myssd  
Volume serial number is 7CE3-15AE  
E:.  
│   DUR_0.pth  
│   DUR_550.pth  
│   DUR_600.pth  
│   DUR_650.pth  
│   D_0.pth  
│   D_600.pth  
│   D_650.pth  
│   events.out.tfevents.1700625154.ly.24008.0  
│   events.out.tfevents.1700630428.ly.20380.0  
│   G_0.pth  
│   G_450.pth  
│   G_500.pth  
│   G_550.pth  
│   G_600.pth  
│   G_650.pth  
│   train.log  
│  
└───eval  events.out.tfevents.1700625154.ly.24008.1  events.out.tfevents.1700630428.ly.20380.1

需要注意的是,首次訓練需要將預訓練模型拷貝到models目錄。

結語

除了中文,Bert-VITS2 V2.0.2也支持日語和英語,同時提供中英日混合的Mix推理模式,欲知后事如何,且聽下回分解。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161537.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161537.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161537.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云 ACK 新升級,打造智算時代的現代化應用平臺

云布道師 今天&#xff0c;能想到的或是想不到的領域&#xff0c;對容器和 Kubernetes 的需求都居高不減&#xff0c;使這項技術正在真正走向無處不在。 在 2023 云棲大會上&#xff0c;阿里云云原生產品線容器服務負責人易立關于容器服務 ACK 在本屆亞運會上應用的介紹&#…

[crash] cxa_pure_virtual 崩潰分析與原理

摘要&#xff1a;工作過程中處理線上的崩潰時發現了一例cxa_pure_virtual相關的crash&#xff0c;直接看堆棧基本山很容易確認是有異步調用導致出發了ABI的異常。但是對于為什么會觸發cxa_pure_virtual雖然有大致的猜測但是沒有直接的證據&#xff0c;因此本文主要描述觸發該類…

C/C++未定義行為的例子匯總

一、什么是未定義行為&#xff1f; 未定義行為&#xff08;Undefined Behavior&#xff09;是指C語言標準未做規定的行為。同時&#xff0c;標準也從沒要求編譯器判斷未定義行為&#xff0c;所以這些行為有編譯器自行處理&#xff0c;在不同的編譯器可能會產生不同的結果&#…

ElasticSearch之cat aliases API

執行aliases命令&#xff0c;如下&#xff1a; curl -X GET "https://localhost:9200/_cat/aliases?pretty&vtrue" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下&#xff1a; alias index …

在 VSCode 中使用 GDB 進行 C/C++ 程序調試(圖文版)

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言&#xff0c;數據結構&#xff0c;Linux基礎&#xff0c;ARM開發板&#xff0c;網絡編程等領域UP&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff0…

webpack loader

1、分類 2、執行順序 配置類型 執行順序是 loader1>loader2>loader3 3、使用方式 自己的第一個loader 同步loader /*** loader 就是一個函數* 當webpack 解釋資源時&#xff0c; 會調用相應的loader去處理* loader 接收到文件內容作為參數&#xff0c;返回文件內容* p…

Nginx 開源版安裝

下載 tar.gz安裝包&#xff0c;上傳。 解壓 [rootlocalhost ~]# tar zxvf nginx-1.21.6.tar.gz nginx-1.21.6/ nginx-1.21.6/auto/ nginx-1.21.6/conf/ nginx-1.21.6/contrib/ nginx-1.21.6/src/ ... ...安裝gcc [rootlocalhost nginx-1.21.6]# yum install -y gcc 已加載插件…

ios qt開發要點

目前關于ios qt的開發資料比較少&#xff0c;這里整理了幾個比較重要的開發要點&#xff0c;基于MacOS14 Xcode15 Qt15.5 cmake iphone真機。 cmake報錯&#xff0c;報錯信息如下 CMake Error at /Users/user/Qt/5.15.5/ios/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:91 (m…

C#Wpf關于日志的相關功能擴展

目錄 一、日志Sink(接收器) 二、Trace追蹤實現日志 三、日志滾動 一、日志Sink(接收器) 安裝NuGet包&#xff1a;Serilog Sink有很多種&#xff0c;這里介紹兩種&#xff1a; Console接收器&#xff08;安裝Serilog.Sinks.Console&#xff09;; File接收器&#xff08;安裝…

CSM32RV003:國產高精度16位ADC低功耗RISC-V內核MCU

目錄 高精度ADC工業應用工業數據采集應用CSM32RV003簡介主要特性 高精度ADC工業應用 高精度ADC即高精度模數轉換器&#xff0c;是一種能夠將輸入模擬信號轉換為數字信號的芯片&#xff0c;在多種消費電子、工業、醫療和科研領域都有廣泛應用。高精度ADC的主要特點是能夠提供高…

深度學習圖像修復算法 - opencv python 機器視覺 計算機競賽

文章目錄 0 前言2 什么是圖像內容填充修復3 原理分析3.1 第一步&#xff1a;將圖像理解為一個概率分布的樣本3.2 補全圖像 3.3 快速生成假圖像3.4 生成對抗網絡(Generative Adversarial Net, GAN) 的架構3.5 使用G(z)生成偽圖像 4 在Tensorflow上構建DCGANs最后 0 前言 &#…

前端 HTML 的 DOM 事件相關知識有哪些?

HTML 的 DOM 事件是指在網頁上發生的各種事件&#xff0c;如點擊、鼠標移動、鍵盤輸入等。 通過 JavaScript 腳本可以對這些事件進行監聽和處理&#xff0c;以實現交互效果。以下是一些常見的 DOM 事件及其相關知識點&#xff1a; 1、click&#xff1a;點擊事件&#xff0c;在…

vue3引入vuex基礎

一&#xff1a;前言 使用 vuex 可以方便我們對數據的統一化管理&#xff0c;便于各組件間數據的傳遞&#xff0c;定義一個全局對象&#xff0c;在多組件之間進行維護更新。因此&#xff0c;vuex 是在項目開發中很重要的一個部分。接下來讓我們一起來看看如何使用 vuex 吧&#…

linux文件I/O:文件鎖的概念、函數以及代碼實現

文件鎖是一種用來保證多個進程對同一個文件的安全訪問的機制。文件鎖可以分為兩種類型&#xff1a;建議性鎖和強制性鎖。建議性鎖是一種協作式的鎖&#xff0c;它只有在所有參與的進程都遵守鎖的規則時才有效。強制性鎖是一種強制式的鎖&#xff0c;它由內核或文件系統來強制執…

使用Pytorch從零開始構建RNN

在這篇文章中&#xff0c;我們將了解 RNN&#xff08;即循環神經網絡&#xff09;&#xff0c;并嘗試通過 PyTorch 從頭開始??實現其中的部分內容。是的&#xff0c;這并不完全是從頭開始&#xff0c;因為我們仍然依賴 PyTorch autograd 來計算梯度并實現反向傳播&#xff0c…

Apache訪問控制

服務器相關的訪問控制 Options指令 Options指令是Apache服務器配置文件中的一個重要指令,它可以用于控制特定目錄啟用哪些服務器特性。Options指令可以在Apache服務器的核心配置、虛擬主機配置、特定目錄配置以及.htaccess文件中使用。 以下是一些常用的服務器特性選項: N…

Django(九、cookie與session)

文章目錄 一、cookie與session的介紹HTTP四大特性 cookiesession Django操作cookie三板斧基于cookie的登錄功能 一、cookie與session的介紹 在講之前我們先來回憶一下HTTP的四大特性 HTTP四大特性 1.基于請求響應 2.基于TIC、IP作用于應用層上的協議 3.無狀態 保存…

二叉查找(排序)樹你需要了解一下

簡介 二叉排序樹&#xff08;Binary Sort Tree&#xff09;&#xff0c;又稱二叉查找樹&#xff08;Binary Search Tree&#xff09;&#xff0c;亦稱二叉搜索樹&#xff0c;是一種重要的數據結構。 它有以下特性&#xff1a; 若左子樹不空&#xff0c;則左子樹上所有結點的…

目標檢測YOLO系列從入門到精通技術詳解100篇-【圖像處理】目標檢測

目錄 幾個高頻面試題目 如何在超大分辨率的圖片中檢測目標? 1當超大分辨率圖像邂逅目標檢測任務 2You Only Look Twice

邊緣計算多角色智能計量插座 x 資產顯示標簽:實現資產追蹤與能耗管理的無縫結合

越來越多智慧園區、智慧工廠、智慧醫院、智慧商業、智慧倉儲物流等企業商家對精細化、多元化智能生態應用場景的提升&#xff0c;順應國家節能減排、環保的時代潮流&#xff0c;設計一款基于融合以太網/WiFi/藍牙智能控制的智能多角色插座應運而生&#xff0c;賦予智能插座以遙…