tts_voice_plugin 是一个基于 GPT-SoVITS 的文本转语音 (TTS) 插件。它允许机器人通过语音与用户交流,支持多种语音风格、智能文本处理、多语种自动识别以及空间音效增强。
核心特性:
- 🎙️ GPT-SoVITS 集成 - 支持高质量的语音克隆与合成。
- 🎭 多风格切换 - 支持在配置文件中定义多个参考音频(风格),并可动态切换。
- 🧠 智能文本清洗 - 自动移除不适合合成的符号(如表情、动作描述),优化口语表达。
- 🌐 多语种支持 - 支持中、日、英、粤等多种语言模式及自动识别。
- 🔊 空间音效 - 内置混响 (Reverb) 和卷积混响 (Convolution) 效果,让声音更具空间感。
- 🤖 双重触发 - 支持用户手动命令触发和机器人规划器 (Planner) 自动触发。
用户可以通过命令手动让机器人说话:
- 格式:
/tts <文本内容> [风格名称] - 别名:
/语音合成、/说 - 示例:
/tts 你好呀,今天天气真不错 default
机器人规划器在认为适合发送语音时(如撒娇、讲故事、安慰用户等),会自动调用 tts_voice_action。
- 智能激活:包含随机激活、关键词匹配(如“想听你声音”)以及 LLM 场景判断。
- 口语优化:强制要求 LLM 提供纯净的口语文本,严禁包含特殊符号。
支持多种语言模式:
zh: 中英混合 (默认)ja: 日英混合yue: 粤英混合auto: 自动识别语种auto_yue: 自动识别(包含粤语检测)
配置文件位于:config/plugins/tts_voice_plugin/config.toml
[tts]
server = "http://127.0.0.1:9880" # GPT-SoVITS API 地址
timeout = 180 # 请求超时时间
max_text_length = 1000 # 最大文本长度你可以定义多个风格,每个风格对应不同的参考音频和模型权重:
[[tts_styles]]
style_name = "default" # 风格标识符(必须有一个名为 default)
name = "默认" # 显示名称
refer_wav_path = "C:/path/to/ref.wav" # 参考音频路径
prompt_text = "参考音频的文字内容"
prompt_language = "zh" # 参考音频语言
gpt_weights = "..." # GPT 模型路径
sovits_weights = "..." # SoVITS 模型路径
speed_factor = 1.0 # 语速 (0.6 - 2.0)让机器人的声音听起来像在房间里:
[spatial_effects]
enabled = false # 是否启用音效
reverb_enabled = true # 启用标准混响
room_size = 0.2 # 房间大小 (0.0-1.0)
wet_level = 0.3 # 效果声比例
convolution_enabled = false # 启用卷积混响(需要 IR 文件)为了保证合成效果,插件会对文本进行以下处理:
- 移除括号内容:如
(笑)、[歪头]等动作描述。 - 符号简化:将连续的
www、hhh替换为“哈哈”,移除无法发音的特殊符号。 - 智能截断:超过长度限制时,在最近的标点符号处截断,保证句子完整。
- 末尾补全:确保每个句子都以标点符号结尾,避免合成音戛然而止。
基于 pedalboard 库实现:
- Reverb:模拟物理空间的声波反射。
- Convolution:通过冲激响应 (Impulse Response) 文件模拟特定环境(如小房间、大厅)的精确音场。
Q: 为什么机器人发出的语音没有声音?
A: 请检查 GPT-SoVITS 后端服务是否正常运行,且 server 地址配置正确。
Q: 为什么合成速度很慢?
A: 语音合成受限于服务器性能。如果文本过长,建议调大 timeout 或检查后端是否开启了 GPU 加速。
Q: 如何添加新的语音风格?
A: 在配置文件中增加一个新的 [[tts_styles]] 块,并重启插件或机器人。
- 版本:3.1.2
- 作者:言柒 & 靚仔