/nonebot-plugin-gpt-sovits

✨ NoneBot2 Plugin for GPT-SoVITS ✨

Primary LanguagePythonMIT LicenseMIT

NoneBot-Plugin-GPT-SoVITS

介绍

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_commandemotion 参数取决于配置文件中的设置

安装方法

通过 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}

GPT_SOVITS_EMOTION_MAP 示例配置:

[
  {
    "name": "平静",
    "sentences": [
      {"text": "示例文本1", "language": "zh", "path": "路径1"},
      {"text": "示例文本2", "language": "zh", "path": "路径2"}
    ]
  },
  {
    "name": "激动",
    "sentences": [
      {"text": "示例文本3", "language": "zh", "path": "路径3"}
    ]
  }
]

GPT_SOVITS_ARGS 配置说明

一般不需要配置此项,但如果你需要传递额外参数给 GPT-SoVITS,可以展开阅读如何配置。

点击展开
  • 对于使用 api.py(将 GPT_SOVITS_API_V2 设置为 False)的用户,可配置以下参数:

    • cut_puncstr 类型):用于切分句子的标点符号,默认值为 ",。"
    • top_kint 类型):生成文本的 Top-K,默认值为 10
    • top_pfloat 类型):生成文本的 Top-P,默认值为 1.0
    • temperaturefloat 类型):生成文本的温度,默认值为 1.0
    • speedfloat 类型):生成音频的播放速度,默认值为 1.0
  • 对于使用 api_v2.api(将 GPT_SOVITS_API_V2 设置为 True)的用户,可配置以下参数:

    • aux_ref_audio_pathslist 类型):用于生成文本的参考音频路径,默认值为 []
    • top_kint 类型):生成文本的 Top-K,默认值为 5
    • top_pfloat 类型):生成文本的 Top-P,默认值为 1.0
    • temperaturefloat 类型):生成文本的温度,默认值为 1.0
    • text_split_methodstr 类型):切分文本的方法,默认值为 cut3(按中文句号切),可选值:
      • cut0:不切分
      • cut1:四句一切
      • cut2:50字一切
      • cut3:按中文句号切
      • cut4:按英文句号切
      • cut5:按标点符号切
    • batch_sizeint 类型):生成文本的 Batch 大小,默认值为 1
    • batch_thresholdfloat 类型):生成文本的 Batch 阈值,默认值为 0.75
    • split_bucketbool 类型):是否分割 Batch,默认值为 True
    • speed_factorfloat 类型):生成音频的速度因子,默认值为 1.0
    • fragment_intervalfloat 类型):片段间隔,默认值为 0.3
    • streaming_modebool 类型):是否流式返回,默认值为 False
    • seedint 类型):随机种子,-1 为随机,默认值为 -1
    • parallel_inferbool 类型):是否使用并行推理,默认值为 True
    • repetition_penaltyfloat 类型):重复惩罚,默认值为 1.35

额外配置

若启用 GPT_SOVITS_CONVERT_TO_SILK,请进行以下额外配置:

  1. ffmpeg 添加到环境变量
  2. 下载 silk_cli 并放置于 Bot 根目录,重命名为 cli.exe(Windows)或 cli(Linux)
  3. 完成配置