来提交你的插件吧!
有疑问?来看看呗!

插件详情

astrbot_plugin_tts_llm

将LLM的文本回复自动翻译成日语并合成为语音。支持使用自己训练的声音模型和通过指令动态注册、删除和切换不同的声音情感。

TTS
版本v1.3.3
作者clown145
Star6
更新2025/12/31

插件说明

astrbot_plugin_tts_llm

✨ AstrBot LLM 回复语音合成插件 ✨

License
Python 3.9+
AstrBot
GitHub

📖 功能简介

本插件是为 AstrBot 设计的一款高级语音合成工具。它能将 LLM 的文本回复无缝转换为带有多样情感的语音消息,赋予您的机器人更加生动和个性化的表达能力。

  • 两种语音化模式:
    1. 固定情感模式:使用预设的默认或切换后的情感进行语音合成。
    2. 自动情感识别模式:调用LLM分析文本情感,并自动匹配最合适的声音进行合成。
  • 长文本加速 (v1.2.0 新增):独有的句子切分与并行合成技术,能将长篇回复拆分,并发请求至多个TTS服务器,最后无缝拼接,大幅缩短长语音的等待时间。
  • 动态情感管理:通过指令自由注册、删除、查看不同的声音情感。
  • 高度可配置:支持自定义翻译API (OpenAI/Gemini)、TTS服务器地址和默认角色。
  • 手动合成:提供指令,可绕过 LLM 直接将指定文本合成为语音,方便测试。
  • 故障转移:支持配置多个TTS服务器,一个失效时自动尝试下一个。
  • 注意:该服务默认合成日语,但支持通过配置或注册指令合成其他语言(需模型支持)。

⬆️ 更新日志

v1.3.3

[!IMPORTANT]
Hugging Face Space 需要重新部署:本版本修复了后端 genie-tts 的兼容性问题。请使用最新的 Dockerfile 和 app.py 重新复制/部署您的 Space,否则中文 TTS 可能无法正常工作。

  • 【修复】后端模型加载:修复了 genie-tts 2.0.2 与 HuggingFace 模型仓库的兼容问题,中文合成现已正常工作。
  • 【新增】翻译开关:新增 启用翻译功能 配置项。如果您使用的是中文模型,可关闭此选项直接使用原文,无需翻译。
  • 【新增】超时配置:新增 TTS 超时时间 配置项(默认 120 秒),支持自定义单次 TTS 请求的超时时间。
  • 【优化】配置界面:重新组织配置页面,使用 emoji 分类,更加清晰美观。
  • 【优化】Worker 优化:并行合成时,Worker 数量现在取 min(服务器数, 文本块数),避免创建多余的空闲 Worker。

v1.3.2

  • 【修复】后端兼容性:修复了因新版 API 变更导致插件无法访问后端的问题(缺少 language 参数)。
  • 【新增】多语言支持:新增 tts_default_language 配置项,允许设置 TTS 默认语言(默认为 jp),支持 jp, zh, en。
  • 【新增】语言注册:/注册感情 指令现在支持可选的语言参数,允许为特定的感情单独指定语言(如 zh, en),未指定则使用默认配置。
历史更新日志

v1.3.1

  • 【优化】提示词增强:默认注入的提示词增加了 Markdown 标题 (##),提升了 LLM 遵循指令的稳定性。
  • 【优化】容错性提升:增强了对全角符号 ($) 的兼容性,并增加了对 LLM 幻觉报错的自动清理机制。

v1.3.0

  • 【新增】群组语音模式:新增 /ttg 指令,可开启群组级语音合成,对群内所有成员生效。
  • 【新增】LLM 情感注入:支持让主 LLM 直接生成情感标签(格式 [emotion=xxx]),比旧版插件单独分析更精准。
  • 【新增】LLM 直接翻译:支持让主 LLM 直接生成日语翻译(格式 $xxx$),省去额外翻译 API 调用。
  • 【新增】框架模型翻译:支持直接调用 AstrBot 框架内配置的模型进行翻译,无需在插件中重复配置 Key。
  • 【优化】配置升级:新增“LLM 注入与高级翻译设置”配置区,支持自定义注入提示词。

v1.2.2

  • 【优化】保活机制:现在支持同时对所有配置的 TTS 服务器进行保活,并可额外配置独立的保活地址。
  • 【优化】缓存自动清理:新增自动清理任务,每小时清理一次超过 30 分钟的临时音频文件,防止磁盘占用过大。
  • 【优化】健壮性提升:优化了保活任务的异常处理,防止任务意外终止。

v1.2.0

  • 【新增】长文本快速合成模式:在配置中增加“句子切分”开关。开启后,插件会将长回复切分成短句,并行发送给多个TTS服务器合成,最后拼接成一条语音,显著提高长文本的响应速度。
  • 【优化】代码结构重构:将插件代码按功能模块化拆分为多个文件,提升了代码的可读性和可维护性。

v1.1.0

  • 【新增】自动情感识别模式:加入 /tts-w 指令,可调用 LLM 分析文本情感,并自动匹配最合适的已注册声音进行合成。
  • 【新增】配套指令:加入 /sw-w 用于在自动模式下切换角色,以及 /tts-w-q 用于单独关闭自动模式。
  • 【优化】配置体验:将 WebUI 中的“TTS 服务器地址列表”从手动输入 JSON 字符串改为更方便的列表形式,可轻松增删地址。
  • 【优化】提示词可配置:将自动情感识别模式的提示词移入配置文件,方便用户自定义。
  • 【调整】指令逻辑:/tts-q 现在会关闭所有语音合成模式。

⚠️ 重要前置:部署语音服务

本插件自身不进行语音合成,它依赖一个后端的 Genie TTS 服务。您必须先拥有一个可访问的该服务,插件才能正常工作。

Genie TTS 是一个强大的语音合成项目,您需要将其部署为一个Web服务。

  • 官方仓库: https://github.com/High-Logic/Genie

方案一:使用 Hugging Face 一键部署

算力免费而且无需本地机器配置,但是合成速度比较慢。

  1. 复制我的 Space:

    • 服务仓库: https://huggingface.co/spaces/clown145/genie-tts-t/tree/main
    • 点击页面右上角的 "Duplicate this Space" 即可一键复制,拥有一个完全属于您自己的、免费的TTS服务。
  2. 使用自定义模型:

    • 默认服务会从我的模型仓库 clown145/my-genie-tts-models 下载模型。该模型仓库已包含多个预置角色,例如: kisaki (月社妃), hiy (和泉妃爱), may (椎名真由理), aoi (葵) 等,您可以直接使用。现在默认注册三个角色是kisaki,aoi,oka。您可以去app.py按照说明修改。
    • 若要使用您自己的模型,请将您训练和转换好的模型上传到您自己的 Hugging Face 模型仓库,然后在 Space 的 app.py 文件中修改 REPO_ID 和 CHARACTERS 字典。
    • 【关键步骤】 在您的空间中,您必须创建一个名为 reference_audio 的文件夹,并将所有用于注册情感的参考音频文件(如 .wav, .ogg)放入其中。
    • 注意: Genie 服务目前有加载3个模型的上限,请确保 CHARACTERS 字典中启用的角色不超过3个。
  3. 开启自动保活(可选):Hugging Face Space 超过 24 小时无人访问会休眠。插件新增了“自动保活空间”的开关,开启后会定时访问空间主页防止休眠。配置项:

    • 启用:在插件配置中打开“是否自动定期访问 Hugging Face Space 以防止休眠”。
    • 保活地址:默认使用 TTS 服务器列表的第一个地址,若您想单独设置,请填写“保活请求的目标地址”。
    • 间隔:可通过“两次保活之间的间隔分钟数”调整访问频率,建议 15-30 分钟。

方案二:本地或 Windows 部署

  • 如果您想在本地运行,请参照 Genie 官方仓库的文档进行部署。
  • 作者还提供了 Windows 一键整合包,极大简化了部署流程,详情请访问其 GitHub。

部署完成后,请记下您的服务 URL (例如 https://your-name-your-space.hf.space),后续配置插件时需要用到。


📦 插件安装

  • 方式一 (推荐): 在 AstrBot 的插件市场搜索 astrbot_plugin_tts_llm,点击安装,等待完成即可。

  • 方式二 (手动): 若安装失败,可尝试克隆源码。

    # 进入 AstrBot 插件目录
    cd /path/to/your/AstrBot/data/plugins
    
    # 克隆仓库
    git clone https://github.com/clown145/astrbot_plugin_tts_llm.git
    
    # 重启 AstrBot
    

⚙️ 插件配置

安装后,在 AstrBot 的 WebUI 找到本插件并进入配置页面。

基础配置

配置项 说明 示例
TTS 服务器地址列表 【核心】 填入您部署好的Genie TTS服务URL。可点击"+"添加多个。 https://your-name.hf.space
是否附带原文 发送语音时,是否同时发送 LLM 生成的原始文本。 true / false
默认角色名 自动语音模式下使用的默认角色。必须是已注册过的。 kisaki
默认情感名 固定情感模式下使用的默认情感。 开心
TTS默认语言 默认使用的语言代码,支持 jp/zh/en。 jp
启用翻译功能 是否启用翻译(中→日)。使用中文模型时请关闭。 true (默认)
TTS 超时时间 单次 TTS 请求的超时秒数。 120 (默认)

翻译API配置

配置项 说明 示例
翻译API配置 用于将中文LLM回复翻译成日语。支持 openai 和 gemini 格式。
├ base_url API 的基础地址。 https://api.openai.com/v1
├ api_key 您的 API 密钥。 sk-xxxxxx
├ model 用于翻译的模型。 gpt-4o-mini
├ w_mode_prompt 自动情感识别模式的提示词模板。 (见插件配置页默认值)

LLM 注入与高级翻译设置 (v1.3.0 新增)

配置项 说明 示例
让主LLM直接生成情感标签 开启后,插件会向LLM注入提示词,要求其直接生成 [emotion=xxx] 标签。 true / false
让主LLM直接生成日语翻译 开启后,插件会向LLM注入提示词,要求其直接生成 $xxx$ 翻译。 true / false
情感注入提示词模板 自定义情感注入的 Prompt。{emotions} 占位符会被替换为可用情感列表。 (见默认值)
翻译注入提示词模板 自定义翻译注入的 Prompt。 (见默认值)
使用 AstrBot 框架内的模型进行翻译 如果未开启主LLM生成翻译,可开启此项使用框架内配置的其他 Provider 进行翻译。 true / false
选择用于翻译的模型提供商 选择具体的 Provider ID。 openai_provider

性能配置 (v1.2.0 新增)

配置项 说明 示例
启用句子切分功能 是否开启长文本并行合成。可显著加速。 false (默认)
每个语音分段的句子数 数字越小,并行度越高,请求越频繁。请根据您的TTS服务器数量调整。 2 (默认)
用于切分句子的正则 (高级) 用于识别句子边界的正则表达式。默认已兼容中英文标点。 ([。、,!?,.!?])

⌨️ 使用说明

命令表

感情管理

命令格式 说明
/注册感情 <角色名> <情感名> <参考音频路径> <音频对应文本> [语言] 注册一个新的情感,用于语音合成。
[语言]为可选参数(默认jp),可选: jp,zh,en。
注意:<参考音频路径> 必须是您上传到模型仓库 reference_audio/ 文件夹下的相对路径,例如:reference_audio/Kisaki_happy.wav。
/删除感情 <角色名> <情感名> 删除一个已注册的情感。
/查看感情 列出所有已注册的角色及其拥有的情感。

核心功能

命令 (别名) 说明
自动情感识别模式 (推荐)
/tts-w (/开启自动情感识别) 为当前对话开启“自动情感识别”语音合成模式。
/sw-w <角色名> 在“自动情感识别”模式下,为当前对话切换使用的角色。
/tts-w-q (/关闭自动情感识别) 单独关闭“自动情感识别”模式。
固定情感模式
/tts-llm (/开启语音合成) 为当前对话开启“固定情感”语音合成模式。
/sw <角色名> <情感名> 在“固定情感”模式下,为当前对话临时切换使用的情感。
群组指令 (v1.3.0 新增)
/ttg (/开启群语音) 开启当前群组的语音合成 (对所有人生效)。
若开启了LLM情感注入,则为自动情感模式;否则为固定情感模式。
/ttg-q (/关闭群语音) 关闭当前群组的语音合成。
通用指令
/tts-q (/关闭语音合成) 关闭当前对话的所有语音合成功能。
/合成 <角色名> <情感名> <文本> 手动合成语音。若文本含空格,建议用英文双引号 " 括起来。

💡 典型使用流程

  1. 部署服务与配置:按照前述步骤部署Genie TTS服务,并在AstrBot WebUI中正确填写 TTS 服务器地址列表 和 翻译API 信息。
  2. 注册情感:使用 /注册感情 指令添加至少一个您想用的情感。对于一个角色,注册的情感越丰富,自动情感识别的效果就越好。

    示例: /注册感情 kisaki 开心 reference_audio/Kisaki_happy.ogg ほら、ホタルもとても喜んでいます。
  3. 设置默认值:回到 WebUI 配置,将“默认角色名”和“默认情感名”设为您刚刚注册的,并保存。
  4. 选择模式并开启:
    • 自动情感模式 (推荐):发送 /tts-w。现在,机器人的LLM回复将自动分析情感并使用最匹配的语音!如果想换个角色,使用 /sw-w <新角色名>。
    • 固定情感模式:发送 /tts-llm。回复将使用默认或通过 /sw 指定的固定情感。
  5. 开始对话:享受带声音的机器人对话吧!
  6. 关闭模式:发送 /tts-q 即可恢复发送纯文本。

💡 进阶技巧

如果感觉机器人回复长文本时语音等待时间较长,可以尝试在插件配置的 “性能配置” 中开启 “启用句子切分功能”。这会显著提升长语音的合成速度,尤其是在您配置了多个TTS服务器时。理论上添加的tts服务器越多,合成长文本越快,虽然tts服务本身似乎也有切分功能,但受限于抱脸免费空间的性能,合成长文本速度还是较慢。

感情配置

如果你希望使用我的模型,可以把emotions.json文件复制到AstrBot\data\plugin_data\astrbot_plugin_tts_llm文件夹下面,里面有设置好的一些感情。

📝 开发说明

本插件的开发过程得到了 AI 的大量协助,并在 v1.2.0 版本中对代码结构进行了重构,以提升可维护性。如果代码或功能中存在任何不妥之处,敬请谅解并通过 Issue 提出,感谢您的支持!

🤝 致谢

  • 本插件的语音合成功能由 Genie TTS 库提供核心支持,由衷感谢原作者的杰出工作。
AstrBot LogoAstrBot 插件市场社区

AstrBot 插件市场 是一个开放的插件分享平台,欢迎开发者们贡献优质插件。本站致力于为 AstrBot 用户提供高质量扩展,帮助您快速找到喜欢的插件,并鼓励社区伙伴分享使用心得、提出改进建议。

相关链接

官方项目主站 官方插件市场 官方项目仓库 侧边展示主站

开发相关

插件开发文档 快速提交插件 官方项目文档

© 2026 AstrBot 插件市场 Made with by Community