在0.3.0版本中,增加了对中文模型的支持,为了兼容之前版本,正常使用翻译,在模型配置文件中需要加上language
项,并且需要关注text_cleaners
这一项内容,具体可以看模型配置文件的要求
-
生成语音功能。[name]说|发送[text]
当
name
前有若干个空格时,同样也会触发text
的长度至少为1当配置项
tts_gal_is_at
为true
时,使用该功能需要@机器人当配置项
tts_gal_prefix
不为空时,使用该功能需要加上前缀,如tts_gal_prefix = "tts"
,使用时tts 宁宁说早上好。
-
翻译的调用
-
优先级:配置项的翻译项排列顺序决定了优先级,如
["baidu","tencent","youdao"]
,将会优先调用百度翻译,当翻译失败会自行调用腾讯翻译,失败后顺次往下 -
自动禁用翻译项:当翻译api返回余额不足、欠费等相关错误码时,会自动将该翻译项禁用,之后的翻译也不会调用,直到下个月第一天的00:05:00自动解禁
(注:请自行注意使用api的使用量,及时处理)
-
手动禁用:可以使用
禁用 xxx
来禁用某一翻译项,禁用后,不会再调用该翻译项,月初也不会自动解禁,只能通过手动启用翻译 xxx
来进行解禁 -
默认为调用
youdao
,且该翻译项不允许禁用
-
机器人配置文件为.env.*
,其中*
为.env
中ENVIRONMENT
配置项的值
这里至少需要配置tts_gal
tts_gal
该配置项采用python的字典
,其中键
为元组
,值为列表
键
代表的角色语音的触发角色名,采用元组
形式,如("宁宁","绫地宁宁”)
,那么触发该角色语音名name
为宁宁
或者绫地宁宁
值
代表该角色对应的模型相关信息,采用列表
,元素个数至少为1,如["YuzuSoft",0]
,YuzuSoft
为该角色对应模型及配置名(即模型名为YuzuSoft.pth
,配置名为YuzuSoft.json
),0
为多人模型所特有的,用以确认该角色序号,具体可以通过模型作者的提供信息获知(如果使用的为单人模型,那么可以不填或填0
)
那么将以上内容结合,得到("宁宁", "绫地宁宁"): ["YuzuSoft",0]
那么在配置文件中的形式为
tts_gal = '{
("宁宁", "绫地宁宁"): ["YuzuSoft",0],
}'
其他配置项按需要根据README.md选填
模型配置文件至少需要保持下面格式
{
"train": {
......
"segment_size": 8192,
......
},
"data": {
......
"text_cleaners":["japanese_cleaners"],
"sampling_rate": 22050,
"filter_length": 1024,
"hop_length": 256,
"add_blank": true,
"n_speakers": 0,
......
},
"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": [8,8,2,2],
"upsample_initial_channel": 512,
"upsample_kernel_sizes": [16,16,4,4],
"n_layers_q": 3,
"use_spectral_norm": false
},
"language": "ja"
}
目前暂时只支持
- japanese_cleaners
- japanese_cleaners2
- japanese_tokenization_cleaners
- chinese_cleaners2
在导入配置文件时请注意该项的值,按需选择
该配置项主要用于确认文本翻译目标,以下为各类语言对应的值
中文: zh-CHS 英语: en 日语: ja 韩语: ko 法语: fr 德语: de 俄语: ru 西班牙语: es 葡萄牙语: pt 意大利语: it 越南语: vi 印尼语: id 阿拉伯语: ar 荷兰语: nl 泰语: th
这里推荐在 json 文件里自行添加,因为各自训练的symbols
可能会有些许差异,具体symbols
可以查看模型作者提供的信息。
如果未设置symbols
值,会根据language
配置项选择默认的symbols
如果symbols
难以添加,可以自行在代码目录下的text/symbols.py
文件内添加symbols
,如symbols
的变量名为sym
,那么可以在 json 配置文件的symbols
项填写字符串 "sym",而不是填列表
(目前默认只支持 ja 和 zh-CHS,原因为 zh-CHS 的symbols
通过 json 难以手动导入)
对于该方面的内容,除了以往的两个模型外,支持添加其他的与之类似的模型
这里就以下面模型为例进行解释
以下是柚子社多人模型的下载链接
模型 | 配置文件 |
---|---|
YuzuSoft_365_epochs.pth | config.json |
下载好后,将model文件.pth
放入data/nonebot_plugin_tts_gal/model
文件目录中
将配置文件放入data/nonebot_plugin_tts_gal/config
文件目录中
将相对应的模型文件和配置文件命名为同一个文件名
如:下载好的柚子社多人模型,模型名初始为365_epochs.pth
,配置文件名为config.json
,这里可以将其分别命名为YuzuSoft.pth
和YuzuSoft.json
打开YuzuSoft.json
文件,由于该模型为日语模型,那么设置"language": "ja"
,配置文件中的text_cleaners
和symbols
均满足上述要求,可以不改
找到机器人的使用配置文件.env.*
根据模型作者提供的信息,在文件中添入以下内容
tts_gal = '{
("宁宁", "绫地宁宁"): ["YuzuSoft",0],
("因幡爱瑠", "爱瑠"): ["YuzuSoft",1],
("朝武芳乃", "芳乃"): ["YuzuSoft",2],
("常陸茉子", "茉子"): ["YuzuSoft",3],
("丛雨", "幼刀"): ["YuzuSoft",4],
("鞍馬小春", "鞍马小春", "小春"): ["YuzuSoft",5],
("在原七海", "七海"): ["YuzuSoft",6],
}'
在添加其他的VITS模型时,请注意模型分享者的模型类别,多人模型还是单人模型,并根据提供的信息以上面的格式在其基础上更改机器人配置项
请一定要保持该格式,否则可能会出现错误