📖 网页端 TTS (GAL 引擎版) v1.2 使用指南
一个功能强大的网页端 TTS(文本转语音)Tampermonkey 油猴脚本。它专为网页小说、GALGAME 网页版及在线对话场景设计,集成了 GAL 流式引擎,支持多角色自动识别、情感标签提取以及双引擎后端(OpenAI/GPT-SoVITS)对接。
致谢:本项目的 GAL 模式与多角色情感设计思路参考自 类脑社区 的 cnfh1746_06138 与 kikukiku0662,特此感谢提供的灵感与创意。
✨ 核心功能 (v1.2 Update)
- 🎭 多角色与情感识别:自动解析网页文本中的【角色名】与〈情绪标签〉。
- v1.2 新特性:支持将提取的元数据转换为自然语言指令(Prompt)注入 OpenAI 格式模型。
- 🚀 GAL 流式引擎:专为对话场景优化。支持预加载机制(Preload),在播放当前句时自动后台生成后续语音,实现像玩游戏一样的无缝衔接体验。
- 🧠 双引擎智能支持:
- OpenAI 模式:适配 GPT-4o-Audio、CosyVoice 等支持 OpenAI 格式的模型。
- GPT-SoVITS 模式:适配 VITS、GPT-SoVITS 等标准推理后端。
- 💉 智能引用注入 (Smart Injection):
- 支持上传参考音频(Ref Audio)进行克隆。
- 根据配置自动判断发送 Base64 还是 FormData,无需手动切换代码逻辑。
- 📱 双端适配 UI:现代化的悬浮面板设计,支持 PC 端拖拽与移动端触控,且具备“边缘隐藏”功能,不遮挡阅读视线。
- 🛡️ 隐私与网络管理:
- 敏感信息脱敏:API 地址/Token 默认显示为掩码(如
********a1b2),防止截图泄露。
- 内置心跳检测、超时重试、请求熔断机制及详细的日志系统。
🛠️ 安装与使用
1. 环境准备
- 安装浏览器扩展 Tampermonkey。
- 拥有一个可用的 TTS 后端接口(推荐本地部署 GPT-SoVITS 或兼容 OpenAI 格式的云端 API)。
2. 快速开始
- 安装本脚本。
- 打开任意网页,你会看到右侧悬浮的 TTS 面板。
- 点击 ⚙️ 设置 图标,配置你的
TTS API 地址 和 JSON 参数。
- 点击 ▶ 播放 按钮,脚本将自动解析当前页面的对话并开始朗读。
⚙️ 详细配置说明 (核心)
🔌 API 连接设置
在设置面板中,你需要配置以下参数:
📝 JSON 请求体配置 (v1.2)
⚠️ 重要:脚本通过 api_type 字段自动识别后端类型,请根据你的后端选择对应的模板。建议将 api_type 放在 JSON 的第一行。
🟢 模式 A:OpenAI 兼容格式
适用于 OpenAI 官方接口、GPT-4o-Audio 或兼容该格式的第三方后端。
{
"api_type": "openai",
"model": "gpt-4o-audio-preview",
"voice": "alloy",
"response_format": "wav",
"references": [
{
"audio": "savedRefAudioBase64",
"text": "promptText"
}
]
}
- 智能注入:
savedRefAudioBase64 和 promptText 是特殊占位符。当 JSON 中包含此结构时,脚本会自动读取 UI 上传的文件和文本进行替换。
- 无需克隆:如果不需要克隆功能,请直接删除整个
references 数组。
- Prompt 注入:在此模式下,提取到的
[情绪:开心] [角色:爱丽丝] 会被自动转化为 Prompt 前缀注入给模型。
🔵 模式 B:GPT-SoVITS 格式
适用于标准的 GPT-SoVITS 推理后端。
{
"api_type": "gpt-sovits",
"speed_facter": 1.0,
"volume": 1.0,
"top_k": 10,
"top_p": 1.0,
"temperature": 1.0,
"emotion": "default"
}
- 克隆/合音:在此模式下,不要在 JSON 中写
refer_wav 或 prompt_text 字段。
- 操作方式:如需开启克隆,直接在脚本 UI 面板上勾选 「开启合音模式」 并上传文件,脚本会自动切换为 FormData 发送音频数据。
⏯️ 播放模式
- 基础流式播放: 逐句生成,逐句播放,适合普通长文本。
- GAL 流式播放: 核心功能。脚本会一次性提取页面所有对话,并建立播放队列。播放第 N 句时,后台会自动预加载第 N+1, N+2 句,极大减少等待时间。
📝 文本识别与正则要求
本脚本的核心在于能够识别文本格式。在设置中选择 “识别模式” 可切换不同的正则匹配逻辑。
1. 【角色】〈情绪〉「对话」 (默认推荐)
最精确的模式,适合标准的剧本或 GAL 文本格式。
- 正则逻辑: 寻找
【角色名】 + 可选的 〈情绪〉 + 「对话内容」。
- 示例:
text
【爱丽丝】〈开心〉「今天天气真好呀!」
【魔王】「哼,无聊的一天。」
2. 〈情绪〉「对话」
适用于单人独白或未标注角色名但有情绪标注的场景。
3. 旁白与对话
混合模式,既识别对话,也朗读引号外的旁白文本(旁白使用默认音色)。
4. 引号样式支持
请在设置中选择网页对应的样式:
- 日式:
「 ... 」
- 中文:
“ ... ”
- 西式:
" ... "
注意: 如果点击播放后没有声音,请先点击控制面板上的 🔍 (检测) 按钮,查看脚本是否成功识别到了文本。
🎨 角色管理系统
- 自动捕获: 识别到新的
【角色名】 时,自动添加到角色池。
- 独立配置: 点击角色旁的 ⚙️ 按钮,可单独设置 语速 (Speed)。
- 分组管理: 支持创建自定义分组(如“主角团”、“反派”)并分配颜色,便于日志调试。
❓ 常见问题 (FAQ)
Q: 输入框里的 API 地址/Key 变成了星号?
A: 这是 v1.2 的隐私保护功能。未修改时显示为掩码(如 ********a1b2),只有点击修改时才会显示原始内容,防止直播或截图时泄露。
Q: 为什么点击播放后没有反应?
A: 请排查:
- 网络诊断: 在设置中测试 API 是否连通。
- 格式检测: 点击 🔍 检测 按钮,确认页面文本符合正则设置。
- 日志: 查看 📋 日志 是否有红色报错。
Q: 网页不在白名单中?
A: 出于安全和性能考虑,脚本默认不会在所有网站运行。初次在某网站使用时,请在设置中点击 🌐 白名单 -> 添加当前网站。
Q: 移动端怎么隐藏面板?
A: 点击面板上的 👁 图标,面板会收起到屏幕右侧边缘,只留一个小角标。点击角标即可恢复。
Copyright Notice & User Guidelines
版权声明(中文原文)
- 本脚本(含代码、逻辑架构、功能设计)的完整版权归 JChSh(Bilibili UID:511242) 所有,受《中华人民共和国著作权法》及《伯尔尼保护文学和艺术作品公约》等相关国际公约保护。
- 未经版权人事先书面许可,任何组织或个人不得将本脚本用于商业化用途(包括但不限于售卖、出租、植入广告、关联商业服务等以盈利为目的的行为)。任何未经授权的商业使用均需承担法律责任,由此产生的一切收益归版权人所有,侵权方需独立承担全部法律责任。
- 非商业化二创需满足以下条件:
- ① 提前通过合法渠道联系版权人 JChSh 并获得书面许可;
- ② 在二创作品显著位置完整标注版权信息及答谢对象,标注文本为:“本作品基于 JChSh(Bilibili UID:511242)的脚本创作,GAL模式与多角色情感思路特别致谢 类脑社区 cnfh1746_06138 & kikukiku0662”;
- ③ 不得修改或删除原版权声明及答谢信息。
- 严禁利用本脚本从事违法犯罪、侵害他人合法权益等违反法律法规及公序良俗的行为,否则使用者需自行承担全部法律责任。
用户须知(中文原文)
- 您仅获得本脚本的非商业性使用权限,无权转让、授权他人使用或进行任何形式的商业化利用。
- 如需进行非商业化二创,必须提前联系版权人 JChSh 并取得书面许可,未获许可的二创行为视为侵权。
- 二创作品需严格遵守版权声明中的标注要求,确保答谢信息完整、清晰可见,不得擅自篡改或遗漏。
- 您应自行承担使用本脚本过程中的相关风险,版权人不对脚本的兼容性、稳定性及使用效果作出任何明示或暗示的担保。
- 对于任何违反本版权声明及用户须知的行为,版权人保留追究其法律责任的权利,包括但不限于要求停止侵权、赔偿损失、公开道歉等。
其他附注
- 本协议受中华人民共和国法律及相关国际版权法管辖,争议解决优先通过协商方式;协商不成的,由版权人住所地有管辖权的人民法院管辖。