首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)

近日,Bert-vits2-v2.2如约更新,该新版本v2.2主要把Emotion 模型换用CLAP多模态模型,推理支持输入text prompt提示词和audio prompt提示语音来进行引导风格化合成,让推理音色更具情感特色,并且推出了新的预处理webuI,操作上更加亲民和接地气。

https://github.com/fishaudio/Bert-VITS2/releases/tag/v2.2

与此同时,基于FastApi的推理web界面项目也同步适配了Bert-vits2-v2.2版本,官网如下:

https://github.com/jiangyuxiaoxiao/Bert-VITS2-UI

本次我们基于此两个项目来克隆原神角色八重神子的英文语音模型miko。

Bert-vits2-v2.2新的底模和情感模型

首先克隆Bert-vits2-v2.2官方项目:

git?clone?https://github.com/fishaudio/Bert-VITS2/tree/v2.2

安装依赖:

pip3?install?-r?requirements.txt

这里注意是v2.2的tag分支,因为官方随时都在更新,主分支可能会存在bug。

进入项目的目录:

cd?/Bert-VITS2

随后下载新的底模和情感模型,下载地址:

https://openi.pcl.ac.cn/Stardust_minus/Bert-VITS2/modelmanage/show_model

将新的情感模型clap-hatsat-fused放入到项目的emotional目录,结构如下:

E:\work\Bert-VITS2-v22\emotional>tree?/f

Folder?PATH?listing?for?volume?myssd

Volume?serial?number?is?7CE3-15AE

E:.

├───clap-htsat-fused

│???????.gitattributes

│???????config.json

│???????merges.txt

│???????preprocessor_config.json

│???????pytorch_model.bin

│???????README.md

│???????special_tokens_map.json

│???????tokenizer.json

│???????tokenizer_config.json

│???????vocab.json

└───wav2vec2-large-robust-12-ft-emotion-msp-dim

.gitattributes

config.json

LICENSE

preprocessor_config.json

pytorch_model.bin

README.md

vocab.json

注意,wav2vec2-large-robust-12-ft-emotion-msp-dim是Bert-vits2-v2.1的情感模型,也需要保留,具体请移步:义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10), 这里不再赘述。

至此,新模型就配置好了。

Bert-vits2-v2.2模型训练

首先下载训练集,以原神角色八重神子的英文配音为例子,数据集下载地址:

https://github.com/AI-Hobbyist/Genshin_Datasets

随后新建miko角色目录

mkdir?miko

将语音标注文件以esd.list命名,放入miko目录。

同时将分片语音素材放入raw目录。

最后新建miko/configs/config.json配置文件:

{

"train":?{

"log_interval":?50,

"eval_interval":?50,

"seed":?42,

"epochs":?1000,

"learning_rate":?0.0002,

"betas":?[

0.8,

0.99

],

"eps":?1e-09,

"batch_size":?6,

"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,

"freeze_ZH_bert":?false,

"freeze_JP_bert":?false,

"freeze_EN_bert":?false

},

"data":?{

"training_files":?"data/miko/train.list",

"validation_files":?"data/miko/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":?{

"miko":?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.2"

}

这里注意"version": "2.2",即版本号为最新的v2.2。

其他参数根据当前的设备环境酌情调整即可。

随后启动预处理页面:

python3?webui_preprocess.py

按照页面的步骤进行操作即可,简单且方便。

操作完之后,运行训练命令:

python3?train_ms.py

训练好的模型放在data/miko/models目录,结构如下:

E:\work\Bert-VITS2-v22\Data\miko\models>tree?/f

Folder?PATH?listing?for?volume?myssd

Volume?serial?number?is?7CE3-15AE

E:.

│???DUR_0.pth

│???DUR_100.pth

│???DUR_150.pth

│???DUR_50.pth

│???D_0.pth

│???D_100.pth

│???D_150.pth

│???D_50.pth

│???events.out.tfevents.1702457087.ly.13044.0

│???events.out.tfevents.1702458207.ly.12416.0

│???githash

│???G_0.pth

│???G_100.pth

│???G_150.pth

│???G_50.pth

│???train.log

└───eval

events.out.tfevents.1702457087.ly.13044.1

events.out.tfevents.1702458207.ly.12416.1

至此,训练环节结束。

Bert-vits2-v2.2模型推理

推理我们使用Bert-vits2-UI项目的页面,克隆web项目:

git?clone?https://github.com/jiangyuxiaoxiao/Bert-VITS2-UI

将Web项目放入Bert-vits2-v2.2的根目录中,目录结构如下:

E:\work\Bert-VITS2-v22_lilith\Web>tree?/f

Folder?PATH?listing?for?volume?myssd

Volume?serial?number?is?7CE3-15AE

E:.

│???index.html

├───assets

│???????index-21bc6a28.css

│???????index-402c0217.js

└───img

helps1.png

helps2.png

Hiyori.ico

这里包含主页面、样式文件以及JS文件,基于Hiyori。

随后启动推理页面:

python3?server_fastapi.py

加载模型进行推理即可。

此外,还可以基于FastAPI的接口进行推理,换句话说,发送http请求即可获取推理音频,接口参数如下:

{

"openapi":?"3.1.0",

"info":?{

"title":?"FastAPI",

"version":?"0.1.0"

},

"paths":?{

"/":?{

"get":?{

"summary":?"Index",

"operationId":?"index__get",

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

}

}

}

},

"/voice":?{

"post":?{

"summary":?"Voice",

"description":?"语音接口,若需要上传参考音频请仅使用post请求",

"operationId":?"voice_voice_post",

"parameters":?[

{

"name":?"model_id",

"in":?"query",

"required":?true,

"schema":?{

"type":?"integer",

"description":?"模型ID",

"title":?"Model?Id"

},

"description":?"模型ID"

},

{

"name":?"speaker_name",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"说话人名",

"title":?"Speaker?Name"

},

"description":?"说话人名"

},

{

"name":?"speaker_id",

"in":?"query",

"required":?false,

"schema":?{

"type":?"integer",

"description":?"说话人id,与speaker_name二选一",

"title":?"Speaker?Id"

},

"description":?"说话人id,与speaker_name二选一"

},

{

"name":?"sdp_ratio",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"SDP/DP混合比",

"default":?0.2,

"title":?"Sdp?Ratio"

},

"description":?"SDP/DP混合比"

},

{

"name":?"noise",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"感情",

"default":?0.2,

"title":?"Noise"

},

"description":?"感情"

},

{

"name":?"noisew",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"音素长度",

"default":?0.9,

"title":?"Noisew"

},

"description":?"音素长度"

},

{

"name":?"length",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"语速",

"default":?1,

"title":?"Length"

},

"description":?"语速"

},

{

"name":?"language",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"语言",

"title":?"Language"

},

"description":?"语言"

},

{

"name":?"auto_translate",

"in":?"query",

"required":?false,

"schema":?{

"type":?"boolean",

"description":?"自动翻译",

"default":?false,

"title":?"Auto?Translate"

},

"description":?"自动翻译"

},

{

"name":?"auto_split",

"in":?"query",

"required":?false,

"schema":?{

"type":?"boolean",

"description":?"自动切分",

"default":?false,

"title":?"Auto?Split"

},

"description":?"自动切分"

},

{

"name":?"emotion",

"in":?"query",

"required":?false,

"schema":?{

"anyOf":?[

{

"type":?"integer"

},

{

"type":?"string"

},

{

"type":?"null"

}

],

"description":?"emo",

"title":?"Emotion"

},

"description":?"emo"

}

],

"requestBody":?{

"required":?true,

"content":?{

"multipart/form-data":?{

"schema":?{

"$ref":?"#/components/schemas/Body_voice_voice_post"

}

}

}

},

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

},

"get":?{

"summary":?"Voice",

"description":?"语音接口",

"operationId":?"voice_voice_get",

"parameters":?[

{

"name":?"text",

"in":?"query",

"required":?true,

"schema":?{

"type":?"string",

"description":?"输入文字",

"title":?"Text"

},

"description":?"输入文字"

},

{

"name":?"model_id",

"in":?"query",

"required":?true,

"schema":?{

"type":?"integer",

"description":?"模型ID",

"title":?"Model?Id"

},

"description":?"模型ID"

},

{

"name":?"speaker_name",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"说话人名",

"title":?"Speaker?Name"

},

"description":?"说话人名"

},

{

"name":?"speaker_id",

"in":?"query",

"required":?false,

"schema":?{

"type":?"integer",

"description":?"说话人id,与speaker_name二选一",

"title":?"Speaker?Id"

},

"description":?"说话人id,与speaker_name二选一"

},

{

"name":?"sdp_ratio",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"SDP/DP混合比",

"default":?0.2,

"title":?"Sdp?Ratio"

},

"description":?"SDP/DP混合比"

},

{

"name":?"noise",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"感情",

"default":?0.2,

"title":?"Noise"

},

"description":?"感情"

},

{

"name":?"noisew",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"音素长度",

"default":?0.9,

"title":?"Noisew"

},

"description":?"音素长度"

},

{

"name":?"length",

"in":?"query",

"required":?false,

"schema":?{

"type":?"number",

"description":?"语速",

"default":?1,

"title":?"Length"

},

"description":?"语速"

},

{

"name":?"language",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"语言",

"title":?"Language"

},

"description":?"语言"

},

{

"name":?"auto_translate",

"in":?"query",

"required":?false,

"schema":?{

"type":?"boolean",

"description":?"自动翻译",

"default":?false,

"title":?"Auto?Translate"

},

"description":?"自动翻译"

},

{

"name":?"auto_split",

"in":?"query",

"required":?false,

"schema":?{

"type":?"boolean",

"description":?"自动切分",

"default":?false,

"title":?"Auto?Split"

},

"description":?"自动切分"

},

{

"name":?"emotion",

"in":?"query",

"required":?false,

"schema":?{

"anyOf":?[

{

"type":?"integer"

},

{

"type":?"string"

},

{

"type":?"null"

}

],

"description":?"emo",

"title":?"Emotion"

},

"description":?"emo"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/models/info":?{

"get":?{

"summary":?"Get?Loaded?Models?Info",

"description":?"获取已加载模型信息",

"operationId":?"get_loaded_models_info_models_info_get",

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

}

}

}

},

"/models/delete":?{

"get":?{

"summary":?"Delete?Model",

"description":?"删除指定模型",

"operationId":?"delete_model_models_delete_get",

"parameters":?[

{

"name":?"model_id",

"in":?"query",

"required":?true,

"schema":?{

"type":?"integer",

"description":?"删除模型id",

"title":?"Model?Id"

},

"description":?"删除模型id"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/models/add":?{

"get":?{

"summary":?"Add?Model",

"description":?"添加指定模型:允许重复添加相同路径模型,且不重复占用内存",

"operationId":?"add_model_models_add_get",

"parameters":?[

{

"name":?"model_path",

"in":?"query",

"required":?true,

"schema":?{

"type":?"string",

"description":?"添加模型路径",

"title":?"Model?Path"

},

"description":?"添加模型路径"

},

{

"name":?"config_path",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"添加模型配置文件路径,不填则使用./config.json或../config.json",

"title":?"Config?Path"

},

"description":?"添加模型配置文件路径,不填则使用./config.json或../config.json"

},

{

"name":?"device",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"推理使用设备",

"default":?"cuda",

"title":?"Device"

},

"description":?"推理使用设备"

},

{

"name":?"language",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"模型默认语言",

"default":?"ZH",

"title":?"Language"

},

"description":?"模型默认语言"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/models/get_unloaded":?{

"get":?{

"summary":?"Get?Unloaded?Models?Info",

"description":?"获取未加载模型",

"operationId":?"get_unloaded_models_info_models_get_unloaded_get",

"parameters":?[

{

"name":?"root_dir",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"搜索根目录",

"default":?"Data",

"title":?"Root?Dir"

},

"description":?"搜索根目录"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/models/get_local":?{

"get":?{

"summary":?"Get?Local?Models?Info",

"description":?"获取全部本地模型",

"operationId":?"get_local_models_info_models_get_local_get",

"parameters":?[

{

"name":?"root_dir",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"搜索根目录",

"default":?"Data",

"title":?"Root?Dir"

},

"description":?"搜索根目录"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/status":?{

"get":?{

"summary":?"Get?Status",

"description":?"获取电脑运行状态",

"operationId":?"get_status_status_get",

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

}

}

}

},

"/tools/translate":?{

"get":?{

"summary":?"Translate",

"description":?"翻译",

"operationId":?"translate_tools_translate_get",

"parameters":?[

{

"name":?"texts",

"in":?"query",

"required":?true,

"schema":?{

"type":?"string",

"description":?"待翻译文本",

"title":?"Texts"

},

"description":?"待翻译文本"

},

{

"name":?"to_language",

"in":?"query",

"required":?true,

"schema":?{

"type":?"string",

"description":?"翻译目标语言",

"title":?"To?Language"

},

"description":?"翻译目标语言"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/tools/random_example":?{

"get":?{

"summary":?"Random?Example",

"description":?"获取一个随机音频+文本,用于对比,音频会从本地目录随机选择。",

"operationId":?"random_example_tools_random_example_get",

"parameters":?[

{

"name":?"language",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"指定语言,未指定则随机返回",

"title":?"Language"

},

"description":?"指定语言,未指定则随机返回"

},

{

"name":?"root_dir",

"in":?"query",

"required":?false,

"schema":?{

"type":?"string",

"description":?"搜索根目录",

"default":?"Data",

"title":?"Root?Dir"

},

"description":?"搜索根目录"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

},

"/tools/get_audio":?{

"get":?{

"summary":?"Get?Audio",

"operationId":?"get_audio_tools_get_audio_get",

"parameters":?[

{

"name":?"path",

"in":?"query",

"required":?true,

"schema":?{

"type":?"string",

"description":?"本地音频路径",

"title":?"Path"

},

"description":?"本地音频路径"

}

],

"responses":?{

"200":?{

"description":?"Successful?Response",

"content":?{

"application/json":?{

"schema":?{}

}

}

},

"422":?{

"description":?"Validation?Error",

"content":?{

"application/json":?{

"schema":?{

"$ref":?"#/components/schemas/HTTPValidationError"

}

}

}

}

}

}

}

},

"components":?{

"schemas":?{

"Body_voice_voice_post":?{

"properties":?{

"text":?{

"type":?"string",

"title":?"Text"

},

"reference_audio":?{

"type":?"string",

"format":?"binary",

"title":?"Reference?Audio"

}

},

"type":?"object",

"required":?[

"text"

],

"title":?"Body_voice_voice_post"

},

"HTTPValidationError":?{

"properties":?{

"detail":?{

"items":?{

"$ref":?"#/components/schemas/ValidationError"

},

"type":?"array",

"title":?"Detail"

}

},

"type":?"object",

"title":?"HTTPValidationError"

},

"ValidationError":?{

"properties":?{

"loc":?{

"items":?{

"anyOf":?[

{

"type":?"string"

},

{

"type":?"integer"

}

]

},

"type":?"array",

"title":?"Location"

},

"msg":?{

"type":?"string",

"title":?"Message"

},

"type":?{

"type":?"string",

"title":?"Error?Type"

}

},

"type":?"object",

"required":?[

"loc",

"msg",

"type"

],

"title":?"ValidationError"

}

}

}

}

最后奉上Bert-vits2-v2.2本地训练推理整合包:

https://pan.baidu.com/s/1OVX9seRwZR6bZ-xsE_nRLg?pwd=v3uc

与众乡亲同飨。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OHFdOb2Yzu9vAqqmK4tr_cOw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com