zhaomaoniu / nonebot-plugin-gpt-sovits

✨ NoneBot2 Plugin for GPT-SoVITS ✨
MIT License
7 stars 1 forks source link

NoneBot-Plugin-GPT-SoVITS

介绍

NoneBot-Plugin-GPT-SoVITS 是一个 NoneBot2 插件,用于对接 GPT-SoVITS,并依赖 nonebot-plugin-alconna 支持了多平台适配。该插件实现了 TTS(文本到语音)的功能,并能将语音消息发送到多个平台。

功能

使用方法

指令说明:

示例:

可选语言:中文、英文、日文、中英混合、日英混合、多语种混合

gpt_sovits_commandemotion 参数取决于配置文件中的设置

安装方法

通过 nb-cli 安装 在 NoneBot2 项目的根目录下打开命令行,输入以下指令安装插件: ```sh nb plugin install nonebot-plugin-gpt-sovits ```
通过包管理器安装 在 NoneBot2 项目的插件目录下,打开命令行,根据你使用的包管理器,输入相应的安装命令:
pip ```sh pip install nonebot-plugin-gpt-sovits ```
pdm ```sh pdm add nonebot-plugin-gpt-sovits ```
poetry ```sh poetry add nonebot-plugin-gpt-sovits ```
conda ```sh conda install nonebot-plugin-gpt-sovits ```
然后,打开 NoneBot2 项目根目录下的 `pyproject.toml` 文件,在 `[tool.nonebot]` 部分追加: ```toml 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_punc`(`str` 类型):用于切分句子的标点符号,默认值为 ",。" - `top_k`(`int` 类型):生成文本的 Top-K,默认值为 10 - `top_p`(`float` 类型):生成文本的 Top-P,默认值为 1.0 - `temperature`(`float` 类型):生成文本的温度,默认值为 1.0 - `speed`(`float` 类型):生成音频的播放速度,默认值为 1.0 - 对于使用 `api_v2.api`(将 `GPT_SOVITS_API_V2` 设置为 `True`)的用户,可配置以下参数: - `aux_ref_audio_paths`(`list` 类型):用于生成文本的参考音频路径,默认值为 [] - `top_k`(`int` 类型):生成文本的 Top-K,默认值为 5 - `top_p`(`float` 类型):生成文本的 Top-P,默认值为 1.0 - `temperature`(`float` 类型):生成文本的温度,默认值为 1.0 - `text_split_method`(`str` 类型):切分文本的方法,默认值为 `cut3`(按中文句号切),可选值: - `cut0`:不切分 - `cut1`:四句一切 - `cut2`:50字一切 - `cut3`:按中文句号切 - `cut4`:按英文句号切 - `cut5`:按标点符号切 - `batch_size`(`int` 类型):生成文本的 Batch 大小,默认值为 1 - `batch_threshold`(`float` 类型):生成文本的 Batch 阈值,默认值为 0.75 - `split_bucket`(`bool` 类型):是否分割 Batch,默认值为 True - `speed_factor`(`float` 类型):生成音频的速度因子,默认值为 1.0 - `fragment_interval`(`float` 类型):片段间隔,默认值为 0.3 - `streaming_mode`(`bool` 类型):是否流式返回,默认值为 False - `seed`(`int` 类型):随机种子,-1 为随机,默认值为 -1 - `parallel_infer`(`bool` 类型):是否使用并行推理,默认值为 True - `repetition_penalty`(`float` 类型):重复惩罚,默认值为 1.35

额外配置

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

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