又欲又撩人,基於新版Bert-vits2V2.0.2音色模型雷電將軍八重神子一鍵推理整合包分享

劉悅的技術部落格發表於2023-11-20

Bert-vits2專案近期炸裂更新,放出了v2.0.2版本的程式碼,修正了存在於2.0先前版本的重大bug,並且重煉了底模,本次更新是即1.1.1版本後最重大的更新,支援了三語言訓練及混合合成,並且做到向下相容,可以推理老版本的模型,本次我們基於新版V2.0.2來本地推理原神小姐姐們的音色模型。

具體的更新日誌請參見官網:

https://github.com/fishaudio/Bert-VITS2/releases

模型配置

首先克隆官方最近的v2.0.2程式碼:

git clone https://github.com/fishaudio/Bert-VITS2.git

隨後在專案的根目錄建立Data目錄

cd Bert-VITS2
mkdir Data

該目錄用來存放音色模型檔案。

隨後下載雷電將軍和八重神子的音色模型:

連結:https://pan.baidu.com/s/1e9gKidfvYKLU2IzjoW3sVw?pwd=v3uc 

這兩個模型都是基於老版本進行訓練的,囿於篇幅,訓練流程先按下不表。

需要注意的是,模型檔案所在的目錄不支援中文,最好改成英文,目錄結構如下所示:

E:\work\Bert-VITS2-v202_launch_yingAndBachong\Data>tree/F  
Folder PATH listing for volume myssd  
Volume serial number is 7CE3-15AE  
E:.  
├───bachong  
│   │   config.json  
│   │  
│   └───models  
│           G_47700.pth  
│  
└───ying  
    │   config.json  
    │   config.yml  
    │  
    ├───custom_character_voice  
    ├───filelists  
    └───models  
            G_4600.pth

這裡.pth檔案就是模型本體,config.json是模型配置檔案。

當然,除了筆者分享的模型,也可以載入之前老版本自己訓練的模型,但需要注意的是,必須指定模型訓練的版本,也就是當時訓練操作過程中Bert-VITS2的版本,比如筆者的模型訓練時是基於v1.1.1,那麼就必須在config中進行指定:

{  
  "train": {  
    "log_interval": 100,  
    "eval_interval": 100,  
    "seed": 52,  
    "epochs": 200,  
    "learning_rate": 0.0001,  
    "betas": [  
      0.8,  
      0.99  
    ],  
    "eps": 1e-09,  
    "batch_size": 4,  
    "fp16_run": false,  
    "lr_decay": 0.999875,  
    "segment_size": 16384,  
    "init_lr_ratio": 1,  
    "warmup_epochs": 0,  
    "c_mel": 45,  
    "c_kl": 1.0,  
    "skip_optimizer": true  
  },  
  "data": {  
    "training_files": "filelists/train.list",  
    "validation_files": "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": 2,  
    "cleaned_text": true,  
    "spk2id": {  
      "bachong": 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": "1.1.1"  
}

最後的version引數用來指定模型,如果不指定模型,系統預設是v2.0版本,假設模型和版本不匹配,會造成本地推理的音色異常。

修改好版本之後,可以透過pip安裝依賴:

pip install -r requirements.txt

至此,模型就配置好了。

本地推理

依賴安裝好之後,在根目錄執行命令:

python3 server_fastapi.py

程式返回:

E:\work\Bert-VITS2-v202_launch_yingAndBachong>python server_fastapi.py  
E:\work\Bert-VITS2-v202_launch_yingAndBachong\venv\lib\site-packages\torch\nn\utils\weight_norm.py:30: UserWarning: torch.nn.utils.weight_norm is deprecated in favor of torch.nn.utils.parametrizations.weight_norm.  
  warnings.warn("torch.nn.utils.weight_norm is deprecated in favor of torch.nn.utils.parametrizations.weight_norm.")  
11-20 11:08:46 SUCCESS  | server_fastapi.py:101 | 新增模型E:\work\Bert-VITS2-v202_launch_yingAndBachong\Data\ying\models\G_4600.pth,使用配置檔案E:\work\Bert-VITS2-v202_launch_yingAndBachong\Data\ying\config.json  
11-20 11:08:46 SUCCESS  | server_fastapi.py:107 | 模型已存在,新增模型引用。  
11-20 11:08:46 WARNING  | server_fastapi.py:626 | 本地服務,請勿將服務埠暴露於外網  
11-20 11:08:46 INFO     | server_fastapi.py:627 | api文件地址 http://127.0.0.1:7860/docs

說明服務已經啟動,沒錯,Bert-vits2的推理api是基於Fast-api的。關於Fast-api框架,請移步:

2020年是時候更新你的技術武器庫了:Asgi vs Wsgi(FastAPI vs Flask)

隨後訪問http://127.0.0.1:7860/:

這裡可以將兩個模型一起載入進來。

右側引數為推理裝置和語言,預設是使用cuda和中文。

如果是沒有N卡的同學,也可以選擇用cpu進行本地推理。

隨後將推理文字寫入文字框:

這裡值得一提的是,Bert-vits2解決了長文字報錯的問題,如果是長文字,只需要開啟自動切分的選項即可,系統會根據文字中的標點進行切割,減少每次推理的token數量,從而避免報錯。

最後新版本支援多模型同時推理:

只需要選擇對應的模型選項,然後下載音訊即可。

結語

筆者已經採用:一鍵整合,萬用萬靈,Python3.10專案嵌入式一鍵整合包的製作(Embed)的方式將專案做成了一鍵整合包,解壓後執行launch.bat檔案,開箱可用,一鍵推理:

連結:https://pan.baidu.com/s/12pinwHb5mmYvskYTZtLKvg?pwd=v3uc

歡迎諸公下載品鑑。

相關文章