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

歡迎光臨散文網 會員登陸 & 注冊

SO-VITS-SVC詳細安裝、訓練、推理使用步驟

2023-02-18 20:45 作者:Sucial丶  | 我要投稿

# SO-VITS-SVC詳細安裝、訓練、推理使用步驟

由于B站不支持Markdown語言,大家可以去下面網站看

https://github.com/SUC-DriverOld/so-vits-svc-Chinese-Detaild-Documents

-----

本幫助文檔為項目 [so-vits-svc](https://github.com/innnky/so-vits-svc) 的詳細中文安裝、調試、推理教程,您也可以直接選擇官方[README](https://github.com/innnky/so-vits-svc#readme)文檔

撰寫:Sucial [點擊跳轉B站主頁](https://space.bilibili.com/445022409)


----


## 1. 環(huán)境依賴


> - **本項目需要的環(huán)境:**

> NVIDIA-CUDA

> Python <= 3.10

> Pytorch

> FFmpeg


### - Cuda


- 在cmd控制臺里輸入```nvidia-smi.exe```以查看顯卡驅動版本和對應的cuda版本


- 前往 [NVIDIA-Developer](https://developer.nvidia.com/) 官網下載與系統(tǒng)**對應**的Cuda版本

以```Cuda-11.7```版本為例(**注:本文下述所有配置均在```Cuda-11.7```下演示**)[Cuda11.7下載地址](https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local) 根據自己的系統(tǒng)和需求選擇安裝(一般本地Windows用戶請依次選擇```Windows```, ```x86_64```, ```系統(tǒng)版本```, ```exe(local)```)

- 安裝成功之后在cmd控制臺中輸入```nvcc -V```, 出現類似以下內容則安裝成功:


```shell

? ? nvcc: NVIDIA (R) Cuda compiler driver

? ? Copyright (c) 2005-2022 NVIDIA Corporation

? ? Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022

? ? Cuda compilation tools, release 11.7, V11.7.64

? ? Build cuda_11.7.r11.7/compiler.31294372_0

```


#### **特別注意!**


- 目前為止pytorch最高支持到```cuda11.7```

- 如果您在上述第一步中查看到自己的Cuda版本>11.7,請依然選擇11.7進行下載安裝(Cuda有版本兼容性)并且安裝完成后再次在cmd輸入```nvidia-smi.exe```并不會出現cuda版本變化,即任然顯示的是>11,7的版本

- **Cuda的卸載方法:**打開控制面板-程序-卸載程序,將帶有```NVIDIA CUDA```的程序全部卸載即可(一共5個)


### - Python


- 前往 [Python官網](https://www.python.org/) 下載Python,版本需要低于3.10(詳細安裝方法以及添加Path此處省略,網上隨便一查都有)

- 安裝完成后在cmd控制臺中輸入```python```出現類似以下內容則安裝成功:


```shell

? ? Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32

? ? Type "help", "copyright", "credits" or "license" for more information.

? ? >>>

```


- 配置python下載鏡像源(有國外網絡條件可跳過)

在cmd控制臺依次執(zhí)行


```shell

? ? # 設置清華大學下載鏡像

? ? pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple

? ? pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn

```


#### 安裝依賴庫


- 在任意位置新建名為```requirements.txt```的文本文件,輸入以下內容保存


```shell

? ? Flask==2.1.2

? ? Flask_Cors==3.0.10

? ? gradio==3.4.1

? ? numpy==1.23.5

? ? playsound==1.3.0

? ? PyAudio==0.2.12

? ? pydub==0.25.1

? ? pyworld==0.3.2

? ? requests==2.28.1

? ? scipy==1.10.0

? ? sounddevice==0.4.5

? ? SoundFile==0.10.3.post1

? ? starlette==0.19.1

? ? tqdm==4.63.0

? ? scikit-maad

? ? praat-parselmouth

? ? tensorboard

? ? librosa

```


- 在該文本文件所處文件夾內右擊空白處選擇 **在終端中打開** 并執(zhí)行下面命令以安裝庫(若出現報錯請嘗試用```pip install [庫名稱]```重新單獨安裝直至成功)


```shell

? ? pip install -r requirements.txt

```


- 接下來我們需要**單獨安裝**```torch```, ```torchaudio```, ```torchvision```這三個庫,下面提供兩種方法


#### 方法1(便捷但不建議,因為我在測試這種方法過程中發(fā)現有問題,對后續(xù)配置AI有影響


> 直接前往 [Pytorch官網](https://pytorch.org/get-started/locally/) 選擇所需版本然后復制Run this Command欄顯示的命令至cmd安裝(不建議)


#### 方法2(較慢但穩(wěn)定,建議)


- 前往該地址使用```Ctrl+F```搜索直接下載whl包 [點擊前往](https://download.pytorch.org/whl/)

>

> - 這個項目需要的是

> ```torch==1.10.0+cu113```

> ```torchaudio==0.10.0+cu113```

> 1.10.0 和0.10.0表示是pytorch版本,cu113表示cuda版本11.3

> 以此類推,請選擇**適合自己的版本**安裝


- **下面我將以```Cuda11.7```版本為例**

***--示例開始--***

>

> - 我們需要安裝以下三個庫

>

> 1. ```torch-1.13.0+cu117``` 點擊下載:[torch-1.13.0+cu117-cp310-cp310-win_amd64.whl](https://download.pytorch.org/whl/cu117/torch-1.13.0%2Bcu117-cp310-cp310-win_amd64.whl)

其中cp310指```python3.10```, ```win-amd64```表示windows 64位操作系統(tǒng)

> 2. ```torchaudio-0.13.0+cu117```點擊下載:[torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl](https://download.pytorch.org/whl/cu117/torchaudio-0.13.0%2Bcu117-cp310-cp310-win_amd64.whl)

> 3. ```torchvision-0.14.0+cu117```點擊下載:[torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl](https://download.pytorch.org/whl/cu117/torchvision-0.14.0%2Bcu117-cp310-cp310-win_amd64.whl)


- 下載完成后進入進入下載的whl文件的目錄,在所處文件夾內右擊空白處選擇 **在終端中打開** 并執(zhí)行下面命令以安裝庫


```shell

? ? pip install .\torch-1.13.0+cu117-cp310-cp310-win_amd64.whl

? ? # 回車運行(安裝時間較長)

? ? pip install .\torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl

? ? # 回車運行

? ? pip install .\torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl

? ? # 回車運行

```


- 務必在出現```Successfully installed ...```之后再執(zhí)行下一條命令,第一個torch包安裝時間較長

***--示例結束--***


安裝完```torch```, ```torchaudio```, ```torchvision```這三個庫之后,在cmd控制臺運用以下命令檢測cuda與torch版本是否匹配


```shell

? ? python

? ? # 回車運行

? ? import torch

? ? # 回車運行

? ? print(torch.__version__)

? ? # 回車運行

? ? print(torch.cuda.is_available())

? ? # 回車運行

```


- 最后一行出現```True```則成功,出現```False```則失敗,需要重新安裝


### - FFmpeg


- 前往 [FFmpeg官網](https://ffmpeg.org/) 下載。解壓至任意位置并在高級系統(tǒng)設置-環(huán)境變量中添加Path定位至```.\ffmpeg\bin```(詳細安裝方法以及添加Path此處省略,網上隨便一查都有)

- 安裝完成后在cmd控制臺中輸入```ffmpeg -version```出現類似以下內容則安裝成功


```shell

ffmpeg version git-2020-08-12-bb59bdb Copyright (c) 2000-2020 the FFmpeg developers

built with gcc 10.2.1 (GCC) 20200805

configuration: [此處省略一大堆內容]

libavutil ? ? ?56. 58.100 / 56. 58.100

libavcodec ? ? 58.100.100 / 58.100.100

...

```


## 2. 預訓練AI


### - 下載項目源碼


- 前往 [so-vits-svc](https://github.com/innnky/so-vits-svc) 選擇```32k```分支(本教程針對```32k```)下載源代碼。安裝了git的可直接git以下地址


```shell

? ? git@github.com:innnky/so-vits-svc.git

```


- 解壓到任意文件夾


### - 下載預訓練模型


- 這部分官方文檔寫得很詳細,我這邊直接引用


> **hubert**

> <https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt>

> **G與D預訓練模型**

> <https://huggingface.co/innnky/sovits_pretrained/resolve/main/G_0.pth>

> <https://huggingface.co/innnky/sovits_pretrained/resolve/main/D_0.pth>


- ```hubert-soft-0d54a1f4.pt```放入```.\hubert```文件夾

- ```D_0.pth和G_0.pth```文件放入```.\logs\32k```文件夾


### - 準備訓練樣本

>

> 準備的訓練數據,建議60-100條語音(**格式務必為wav,不同的說話人建立不同的文件夾**),每條語音控制在**4-8秒!**(確保語音不要有噪音或盡量降低噪音,一個文件夾內語音必須是一個人說的),可以訓練出效果不錯的模型


- 將語音連帶文件夾(有多個人就多個文件夾)一起放入```.\dataset_raw```文件夾里,文件結構類似如下:


```shell

dataset_raw

├───speaker0

│ ? ├───xxx1-xxx1.wav

│ ? ├───...

│ ? └───Lxx-0xx8.wav

└───speaker1

? ? ├───xx2-0xxx2.wav

? ? ├───...

? ? └───xxx7-xxx007.wav

```


- 此外還需要在```.\dataset_raw```文件夾內新建并編輯```config.json```,代碼如下:


```shell

"n_speakers": 10 ? ?//修改數字為說話人的人數

"spk":{

? ? "speaker0": 0, ?//修改speaker0為第一個說話人的名字,需要和文件夾名字一樣,后面的: 0, 不需要改

? ? "speaker1": 1, ?//以此類推

? ? "speaker2": 2,

? ? //以此類推

}

```


### - 樣本預處理


#### 下面的所有步驟若出現報錯請多次嘗試,若一直報錯就是第一部分環(huán)境依賴沒有裝到位,可以根據報錯內容重新安裝對應的庫。(一般如果正確安裝了的話出現報錯請多次嘗試或者關機重啟,肯定可以解決報錯的。)


#### 1. 重采樣


- 在```so-vits-svc```文件夾內運行終端,直接執(zhí)行:


```shell

? ? python resample.py

```


**注意:如果遇到如下報錯:**


```shell

...

E:\vs\so-vits-svc-32k\resample.py:17: FutureWarning: Pass sr=None as keyword args. From version 0.10 passing these as positional arguments will result in an error

? wav, sr = librosa.load(wav_path, None)

E:\vs\so-vits-svc-32k\resample.py:17: FutureWarning: Pass sr=None as keyword args. From version 0.10 passing these as positional arguments will result in an error

? wav, sr = librosa.load(wav_path, None)

...

```


請打開```resample.py```,修改第```17```行內容


```shell

# 第17行修改前如下

wav, sr = librosa.load(wav_path, None)

# 第17行修改后如下

wav, sr = librosa.load(wav_path, sr = None)

```


保存,重新執(zhí)行```python resample.py```命令


- 成功運行后,在```.\dataset\32k```文件夾中會有說話人的wav語音,之后```dataset_raw```文件夾就可以刪除了


#### 2. 自動劃分訓練集,驗證集,測試集,自動生成配置文件


- 在```so-vits-svc```文件夾內運行終端,直接執(zhí)行:


```shell

? ? python preprocess_flist_config.py

```


- 出現類似以下內容則處理成功:


```shell

PS E:\vs\so-vits-svc-32k> python preprocess_flist_config.py

100%|██████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1993.49it/s]

Writing ./filelists/train.txt

100%|██████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:00<?, ?it/s]

Writing ./filelists/val.txt

100%|████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<?, ?it/s]

Writing ./filelists/test.txt

100%|████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<?, ?it/s]

Writing configs/config.json

```


#### 3. 生成hubert和f0


- 在```so-vits-svc```文件夾內運行終端,直接執(zhí)行:


```shell

? ? python preprocess_hubert_f0.py

```


- 出現類似以下內容則處理成功:(我這里演示時只用了20條音頻)


```shell

PS E:\vs\so-vits-svc-32k> python preprocess_hubert_f0.py

Loading hubert for content...

Loaded hubert.

? 0%| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 0/20 [00:00<?, ?it/s]dataset/32k\speaker\1_01.wav

? 5%|████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 1/20 [00:03<01:00, ?3.20s/it]dataset/32k\speaker\1_02.wav

?10%|████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 2/20 [00:03<00:25, ?1.40s/it]dataset/32k\speaker\1_03.wav

?15%|████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 3/20 [00:03<00:14, ?1.19it/s]dataset/32k\speaker\1_04.wav

?20%|████████████████▌ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 4/20 [00:03<00:09, ?1.69it/s]dataset/32k\speaker\1_05.wav

?25%|████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 5/20 [00:03<00:06, ?2.39it/s]dataset/32k\speaker\1_06.wav

?30%|████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 6/20 [00:04<00:04, ?2.98it/s]dataset/32k\speaker\1_07.wav

?35%|█████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 7/20 [00:04<00:03, ?3.48it/s]dataset/32k\speaker\1_08.wav

?40%|█████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 8/20 [00:04<00:03, ?3.78it/s]dataset/32k\speaker\1_09.wav

?45%|█████████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 9/20 [00:04<00:02, ?4.13it/s]dataset/32k\speaker\1_10.wav

?50%|█████████████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 10/20 [00:04<00:02, ?4.41it/s]dataset/32k\speaker\1_11.wav

?55%|█████████████████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 11/20 [00:04<00:01, ?4.71it/s]dataset/32k\speaker\1_12.wav

?60%|█████████████████████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 12/20 [00:05<00:01, ?4.93it/s]dataset/32k\speaker\1_13.wav

?65%|█████████████████████████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 13/20 [00:05<00:01, ?5.25it/s]dataset/32k\speaker\1_14.wav

?70%|█████████████████████████████████████████████████████████ ? ? ? ? ? ? ? ? ? ? ? ? | 14/20 [00:05<00:01, ?5.46it/s]dataset/32k\speaker\1_15.wav

?75%|█████████████████████████████████████████████████████████████▌ ? ? ? ? ? ? ? ? ? ?| 15/20 [00:05<00:00, ?6.19it/s]dataset/32k\speaker\1_16.wav

?80%|█████████████████████████████████████████████████████████████████▌ ? ? ? ? ? ? ? ?| 16/20 [00:05<00:00, ?5.84it/s]dataset/32k\speaker\1_17.wav

?85%|█████████████████████████████████████████████████████████████████████ ? ? ? ? ? ? | 17/20 [00:06<00:00, ?5.43it/s]dataset/32k\speaker\1_18.wav

?90%|█████████████████████████████████████████████████████████████████████████ ? ? ? ? | 18/20 [00:06<00:00, ?5.27it/s]dataset/32k\speaker\1_19.wav

?95%|█████████████████████████████████████████████████████████████████████████████ ? ? | 19/20 [00:06<00:00, ?5.26it/s]dataset/32k\speaker\1_20.wav

100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:06<00:00, ?3.03it/s]

```


#### 4. 修改配置文件和部分源代碼


- 打開上面第二步過程中生成的配置文件```.\configs\config.json```修改第```13```行代碼```"batch_size"```的數值。這邊解釋一下```"batch_size": 12,```數值12要根據自己電腦的顯存(任務管理器-GPU-**專用**GPU內存)來調整

>

> - **修改建議**

> 6G顯存 建議修改成2或3

> 8G顯存 建議修改成4

>"batch_size"參數調小可以解決顯存不夠的問題

>

- 修改```train.py```


```Python shell

# 第60行將nccl改成gloo(如果后續(xù)開始訓練時gloo報錯就改回nccl,一般不會報錯)

# 修改前如下

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

# 修改后如下

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


# 第44行開始

# 修改前如下

? ? n_gpus = torch.cuda.device_count()

? ? os.environ['MASTER_ADDR'] = 'localhost'

? ? os.environ['MASTER_PORT'] = hps.train.port

#修改后增加代碼后如下

? ? n_gpus = torch.cuda.device_count()

? ? os.environ['MASTER_ADDR'] = 'localhost'

? ? os.environ['MASTER_PORT'] = hps.train.port

? ? os.environ["CUDA_VISIBLE_DEVICES"] = "0" ? ?# 這里的0代表GPU0是用來訓練的顯卡,不知道是0還是1的可以在任務管理器查看,如果是雙顯卡的話一定要選擇適合的顯卡

? ? os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:32" ?# 這里的32如果懂的話也可以修改,不懂別改

```


## 3. 開始訓練


- 在```so-vits-svc```文件夾內運行終端,直接執(zhí)行下面命令開始訓練

**注意:開始訓練前建議重啟一下電腦清理內存和顯存,并且關閉后臺游戲,動態(tài)壁紙等等軟件,最好只留一個cmd窗口**


```shell

? ? python train.py -c configs/config.json -m 32k

```


- 出現以下報錯就是顯存不夠了


```shell

torch.cuda.OutOfMemoryError: CUDA out of menory. Tried to allocate 16.80 MiB (GPU 0; 8.0 GiB total capacity; 7.11 Gi8 already allocated; 0 bytes free; 7.30 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_cUDA_ALLOC_CONF

# 注意:一定是 0 bytes free < Tried to allocate 16.80 MiB 才是顯存不足,不然就是別的問題

```


- **這邊報錯可能會比較多,如果出現報錯先嘗試重新執(zhí)行```python train.py -c configs/config.json -m 32k```,多重試幾遍,或者關機重啟,一般是會成功的。如果報錯一直是同一個報錯,那就是對應的那里出問題了(要靠報錯找問題所在)**

- 成功執(zhí)行以后應該是類似如下內容:


```shell

2023-02-08 18:07:42,439 32k INFO {'train': {'log_interval': 200, 'eval_interval': 1000, 'seed': 1234, 'epochs': 10000, 'learning_rate': 0.0001, 'betas': [0.8, 0.99], 'eps': 1e-09, 'batch_size': 2, 'fp16_run': False, 'lr_decay': 0.999875, 'segment_size': 17920, 'init_lr_ratio': 1, 'warmup_epochs': 0, 'c_mel': 45, 'c_kl': 1.0, 'use_sr': True, 'max_speclen': 384, 'port': '8001'}, 'data': {'training_files': 'filelists/train.txt', 'validation_files': 'filelists/val.txt', 'max_wav_value': 32768.0, 'sampling_rate': 32000, 'filter_length': 1280, 'hop_length': 320, 'win_length': 1280, 'n_mel_channels': 80, 'mel_fmin': 0.0, 'mel_fmax': None}, 'model': {'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': [10, 8, 2, 2], 'upsample_initial_channel': 512, 'upsample_kernel_sizes': [16, 16, 4, 4], 'n_layers_q': 3, 'use_spectral_norm': False, 'gin_channels': 256, 'ssl_dim': 256, 'n_speakers': 2}, 'spk': {'Sucial': 0}, 'model_dir': './logs\\32k'}

2023-02-08 18:07:42,440 32k WARNING E:\vs\so-vits-svc-32k is not a git repository, therefore hash value comparison will be ignored.

2023-02-08 18:07:45,451 32k INFO Loaded checkpoint './logs\32k\G_0.pth' (iteration 1)

2023-02-08 18:07:45,998 32k INFO Loaded checkpoint './logs\32k\D_0.pth' (iteration 1)

2023-02-08 18:07:55,722 32k INFO Train Epoch: 1 [0%]

2023-02-08 18:07:55,723 32k INFO [1.376741886138916, 3.908522129058838, 12.127800941467285, 35.539894104003906, 4.270486354827881, 0, 0.0001]

2023-02-08 18:08:01,381 32k INFO Saving model and optimizer state at iteration 1 to ./logs\32k\G_0.pth

2023-02-08 18:08:02,344 32k INFO Saving model and optimizer state at iteration 1 to ./logs\32k\D_0.pth

2023-02-08 18:08:19,482 32k INFO ====> Epoch: 1

2023-02-08 18:08:40,093 32k INFO ====> Epoch: 2

2023-02-08 18:09:01,010 32k INFO ====> Epoch: 3

2023-02-08 18:09:21,715 32k INFO ====> Epoch: 4

2023-02-08 18:09:42,242 32k INFO ====> Epoch: 5

2023-02-08 18:10:02,528 32k INFO ====> Epoch: 6

2023-02-08 18:10:22,965 32k INFO ====> Epoch: 7

2023-02-08 18:10:29,149 32k INFO Train Epoch: 8 [14%]

2023-02-08 18:10:29,150 32k INFO [2.378505229949951, 2.3670239448547363, 10.534687042236328, 19.235595703125, 1.8958038091659546, 200, 9.991253280566489e-05]

2023-02-08 18:10:43,388 32k INFO ====> Epoch: 8

2023-02-08 18:11:03,722 32k INFO ====> Epoch: 9

2023-02-08 18:11:23,859 32k INFO ====> Epoch: 10

...

```


- 出現類似以上的內容就說明是在開始訓練了(顯存會直接爆滿)。停止訓練有下面兩種方法:

>

> 1. 按```Ctrl+C```

> 2. 直接右上角叉掉

> 在控制臺中運行 ```python train.py -c config/config.json -m 32k```即可繼續(xù)訓練

>

### - 日志及訓練次數的查看


- 日志保存的位置:```.\logs\32k\train.log```

**閱讀舉例:**


```shell

# 示例3

2023-02-08 18:32:24,942 32k INFO [2.252035617828369, 2.5846095085144043, 8.220404624938965, 5 ? 17.75478744506836, 0.9781494140625, 2000, 9.911637167309565e-05]

2023-02-08 18:32:28,889 32k INFO Saving model and optimizer state at iteration 72 to ./logs\32k\G_2000.pth

2023-02-08 18:32:29,661 32k INFO Saving model and optimizer state at iteration 72 to ./logs\32k\D_2000.pth

# 示例1

2023-02-08 18:32:39,907 32k INFO ====> Epoch: 72

2023-02-08 18:33:00,099 32k INFO ====> Epoch: 73

2023-02-08 18:33:20,682 32k INFO ====> Epoch: 74

2023-02-08 18:33:40,887 32k INFO ====> Epoch: 75

2023-02-08 18:34:01,460 32k INFO ====> Epoch: 76

2023-02-08 18:34:21,798 32k INFO ====> Epoch: 77

2023-02-08 18:34:41,866 32k INFO ====> Epoch: 78

2023-02-08 18:34:54,712 32k INFO Train Epoch: 79 [57%]

# 示例2

2023-02-08 18:34:54,712 32k INFO [2.282658100128174, 2.5492446422576904, 10.027194023132324, 15.401838302612305, 1.598284363746643, 2200, 9.902967736366644e-05]

```


> **以下的解釋我引用了B站up主inifnite_loop的解釋,[相關視頻](https://www.bilibili.com/video/BV1Bd4y1W7BN) [相關專欄](https://www.bilibili.com/read/cv21425662)**

>

> - 需要關注兩個參數:Epoch和global_step

> Epoch表示迭代批次,每一批次可以看作一個迭代分組

> Global_step表示總體迭代次數

> - 兩者的關系是global_step = 最多語音說話人的語音數 / ?batch_size ?* epoch

> batch_size是配置文件中的參數

> - **示例1:** 每一次迭代輸出內 ```====> Epoch: 74``` 表示第74迭代批次完成

> - **示例2:** ```Global_step``` 每200次輸出一次 (配置文件中的參數```log_interval```)

> - **示例3:** ```Global_step``` 每1000次輸出一次(配置文件中的參數```eval_interval```),會保存模型到新的文件

>

#### 一般情況下訓練10000次(大約2小時)就能得到一個不錯的聲音模型了


### - 保存的訓練模型

>

> 以上,我們談論到了每1000次迭代才會保存一次模型樣本,那么,這些樣本保存在哪里呢?如何處理這些樣本呢?下面我將詳細講述。


- 訓練模型保存位置:```.\logs\32k```

- 訓練一定時間后打開這個路徑,你會發(fā)現有很多文件:


```shell

D_0.pth

D_1000.pth

D_2000.pth

D_3000.pth

D_4000.pth

...

G_0.pth

G_1000.pth

G_2000.pth

G_3000.pth

G_4000.pth

...

```


- 如果你的硬盤空間不足,那么只要留下最后一次的G和D就可以了,前面的都可以刪除(但是不要刪別的文件)


## 4. 推理使用

>

> 按上述方法訓練得到最后一次的G和D后,該如何使用這些模型呢?下面我將講述具體的使用操作方法

>

### - 準備干聲


- 準備一首歌的干聲,干聲可以靠軟件提取,我這邊推薦的是Ultimate Vocal Remover,該軟件開源并且可以在Github上下載到。[下載地址](https://github.com/Anjok07/ultimatevocalremovergui)

- 用音頻處理軟件(如Au,Studio One等)將這個干聲分成若干段**不超過40秒**的片段并且一一保存

- 將你處理好的干聲片段放入```.\raw```文件夾


### - 修改推理代碼


- 打開```inference_main.py```,修改第```17-27```行,具體修改內容如下:


```shell

model_path = "logs/32k/G_10000.pth" # 這里改成你最新訓練出來的G模型路徑

config_path = "configs/config.json"

svc_model = Svc(model_path, config_path)

infer_tool.mkdir(["raw", "results"])


# 支持多個wav文件,放在raw文件夾下

clean_names = ["vocals_01", "vocals_02","vocals_03"] # 這里修改成你要處理的干聲片段的文件名,支持多個文件

trans = [0] ?# 音高調整,支持正負(半音)

spk_list = ['Sucial'] ?# 這里是說話人的名字,之前準備訓練樣本的文件夾名字

slice_db = -40 ?# 默認-40,嘈雜的音頻可以-30,干聲保留呼吸可以-50

wav_format = 'wav' ?# 音頻輸出格式

```


### - 推理生成


- 修改完成后保存代碼,在```so-vits-svc```文件夾內運行終端,執(zhí)行下面命令開始推理生成


```shell

? ? python .\inference_main.py

```


- 待黑窗口自動關閉后,推理生成完成。生成的音頻文件在```.\results```文件夾下

- 如果聽上去效果不好,就多訓練模型,10000次不夠就訓練20000次


### - 后期處理


- 將生成的干音和歌曲伴奏(也可以通過Ultimate Vocal Remover提取)導入音頻處理軟件&宿主軟件(如Au,Studio One等)進行混音和母帶處理,最終得到成品。


## 5. 感謝名單

>

> - **以下是對本文檔的撰寫有幫助的感謝名單:**

> so-vits-svc [官方源代碼和幫助文檔](https://github.com/innnky/so-vits-svc)

> B站up主inifnite_loop [相關視頻](https://www.bilibili.com/video/BV1Bd4y1W7BN) [相關專欄](https://www.bilibili.com/read/cv21425662)

> 所有提供訓練音頻樣本的人員



SO-VITS-SVC詳細安裝、訓練、推理使用步驟的評論 (共 條)

分享到微博請遵守國家法律
牟定县| 庄浪县| 威海市| 四子王旗| 唐山市| 临沂市| 沁水县| 四子王旗| 晴隆县| 云南省| 中江县| 荔波县| 饶平县| 红河县| 醴陵市| 台江县| 紫金县| 九龙县| 广昌县| 西安市| 兰考县| 望城县| 昭觉县| 阿城市| 杭锦旗| 曲靖市| 内乡县| 天台县| 开鲁县| 黑龙江省| 登封市| 云和县| 乌兰浩特市| 芷江| 读书| 长沙县| 固始县| 平利县| 东丰县| 凤凰县| 兴安盟|