NoneBot-Plugin-GPT-SoVITS 是一个 NoneBot2 插件,用于对接 GPT-SoVITS,并依赖 nonebot-plugin-alconna 支持了多平台适配。该插件实现了 TTS(文本到语音)的功能,并能将语音消息发送到多个平台。
- 对接 GPT-SoVITS,生成 TTS 语音,并发送语音消息
{gpt_sovits_command} [text] [-e emotion] [-l language]
- 生成语音,支持可选情绪和语言gptsovits帮助
- 显示帮助信息
{gpt_sovits_command} 你好
- 生成语音{gpt_sovits_command} 你好 -e 1
- 使用情绪编号 1 生成语音{gpt_sovits_command} hello -e 1 -l en
- 以情绪编号 1 生成一段英文语音
可选语言:中文、英文、日文、中英混合、日英混合、多语种混合
gpt_sovits_command
和emotion
参数取决于配置文件中的设置
通过 nb-cli 安装
在 NoneBot2 项目的根目录下打开命令行,输入以下指令安装插件:
nb plugin install nonebot-plugin-gpt-sovits
通过包管理器安装
在 NoneBot2 项目的插件目录下,打开命令行,根据你使用的包管理器,输入相应的安装命令:
pip
pip install nonebot-plugin-gpt-sovits
pdm
pdm add nonebot-plugin-gpt-sovits
poetry
poetry add nonebot-plugin-gpt-sovits
conda
conda install nonebot-plugin-gpt-sovits
然后,打开 NoneBot2 项目根目录下的 pyproject.toml
文件,在 [tool.nonebot]
部分追加:
plugins = ["nonebot_plugin_gpt_sovits"]
在 .env
文件中添加以下配置:
配置项 | 默认值 | 说明 |
---|---|---|
GPT_SOVITS_API_BASE_URL | http://127.0.0.1:9880 | 可选。GPT-SoVITS API 的 URL |
GPT_SOVITS_API_V2 | True | 可选。是否使用 GPT-SoVITS API v2。注意:API 是否为 v2 不取决于你使用的 GPT-SoVITS 模型版本,而是由你运行的 API 脚本决定。api_v2.py 为 API v2,api.py 为 API v1 |
GPT_SOVITS_COMMAND | tts | 可选。触发 TTS 的命令,可自定义为 GPT-SoVITS 角色名 |
GPT_SOVITS_CONVERT_TO_SILK | False | 可选。是否将生成音频转换为 SILK 格式发送 |
GPT_SOVITS_EMOTION_MAP | 无默认值 | 必填。配置情感映射 |
GPT_SOVITS_ARGS | 无默认值 | 可选。传递给 GPT-SoVITS 的额外参数,如 {"temperature": 0.9} |
[
{
"name": "平静",
"sentences": [
{"text": "示例文本1", "language": "zh", "path": "路径1"},
{"text": "示例文本2", "language": "zh", "path": "路径2"}
]
},
{
"name": "激动",
"sentences": [
{"text": "示例文本3", "language": "zh", "path": "路径3"}
]
}
]
一般不需要配置此项,但如果你需要传递额外参数给 GPT-SoVITS,可以展开阅读如何配置。
点击展开
-
对于使用
api.py
(将GPT_SOVITS_API_V2
设置为False
)的用户,可配置以下参数:cut_punc
(str
类型):用于切分句子的标点符号,默认值为 ",。"top_k
(int
类型):生成文本的 Top-K,默认值为 10top_p
(float
类型):生成文本的 Top-P,默认值为 1.0temperature
(float
类型):生成文本的温度,默认值为 1.0speed
(float
类型):生成音频的播放速度,默认值为 1.0
-
对于使用
api_v2.api
(将GPT_SOVITS_API_V2
设置为True
)的用户,可配置以下参数:aux_ref_audio_paths
(list
类型):用于生成文本的参考音频路径,默认值为 []top_k
(int
类型):生成文本的 Top-K,默认值为 5top_p
(float
类型):生成文本的 Top-P,默认值为 1.0temperature
(float
类型):生成文本的温度,默认值为 1.0text_split_method
(str
类型):切分文本的方法,默认值为cut3
(按中文句号切),可选值:cut0
:不切分cut1
:四句一切cut2
:50字一切cut3
:按中文句号切cut4
:按英文句号切cut5
:按标点符号切
batch_size
(int
类型):生成文本的 Batch 大小,默认值为 1batch_threshold
(float
类型):生成文本的 Batch 阈值,默认值为 0.75split_bucket
(bool
类型):是否分割 Batch,默认值为 Truespeed_factor
(float
类型):生成音频的速度因子,默认值为 1.0fragment_interval
(float
类型):片段间隔,默认值为 0.3streaming_mode
(bool
类型):是否流式返回,默认值为 Falseseed
(int
类型):随机种子,-1 为随机,默认值为 -1parallel_infer
(bool
类型):是否使用并行推理,默认值为 Truerepetition_penalty
(float
类型):重复惩罚,默认值为 1.35
若启用 GPT_SOVITS_CONVERT_TO_SILK
,请进行以下额外配置:
- 将
ffmpeg
添加到环境变量 - 下载 silk_cli 并放置于 Bot 根目录,重命名为
cli.exe
(Windows)或cli
(Linux) - 完成配置