背景
当前 Sakura 使用 Genie TTS 时,服务启动、角色加载、参考音频设置、文本合成、语义 token 推理和音频输出等关键步骤缺少足够清晰的日志。排查问题时只能看到少量 HTTP 状态或第三方整合包输出,难以判断问题发生在模型加载、参考音频、G2P、语义预测还是音频生成阶段。
同时,现有 Genie TTS 整合包来源不够清晰。为了后续分发和维护,需要重新封装一份 Sakura 专用的 Genie TTS 包,明确资源来源、依赖范围和运行入口。
目标
重新封装 Genie TTS,使其成为 Sakura 可直接拉起的 TTS 整合包,并增强运行日志。
需要实现:
- 提供 Sakura 专用启动入口。
- 保留 Genie TTS 推理能力。
- 输出更详细的运行日志。
日志要求
服务运行时应输出以下信息:
- 服务启动状态。
- 服务监听地址。
- 当前协议版本。
- GenieData 资源目录。
- HTTP 请求路径和状态码。
- 角色模型加载开始、完成、失败原因。
- 参考音频设置开始、完成、失败原因。
- 收到 TTS 文本时记录文本长度。
- 合成开始。
- 语义 token 预测完成状态:
- EOS / MAX
- token 起止长度
- 推理速度 it/s
- 音频流开始输出。
- 合成完成:
- 异常时输出明确错误信息。
示例日志:
加载角色模型: N.A.V.I.
角色模型加载完成: N.A.V.I.
设置参考音频: N.A.V.I.
参考音频设置完成: N.A.V.I.
收到合成文本: 25 字
开始合成音频
语义 token 预测完成: EOS (150 -> 184, 56.56 it/s)
音频流开始输出
合成音频完成: 84480 bytes, 1334 ms
打包要求
整合包应包含:
server.py
convert.py
genie_tts/
deps/
GenieData/
manifest.json
SOURCE_MANIFEST.json
THIRD_PARTY_NOTICES.md
- 启动测试脚本
API 要求
服务需要兼容 Sakura 当前调用方式:
GET /openapi.json
POST /load_character
POST /set_reference_audio
POST /tts
POST /stop
同时可以保留 Sakura 专用别名:
POST /voice/load
POST /voice/reference
POST /cache/clear
默认 /tts 返回 audio/wav。
验收标准
- Sakura 可以拉起该 TTS 服务。
- 服务启动后
openapi.json 可访问。
- 可以加载 ONNX 角色模型。
- 可以设置参考音频。
- 可以完成一次 TTS 合成。
- Sakura 日志窗口能看到完整 TTS 阶段日志。
SOURCE_MANIFEST.json 能追溯 GenieData 来源。
注意事项
OpenJTalk / pyopenjtalk 的底层 warning 可能直接写入 stderr。Windows 下如果 Sakura 按 GBK/ANSI 解码日志,日文 warning 可能出现乱码。后续 Sakura 拉起子进程时应设置 UTF-8 环境变量,并按 UTF-8 读取 stdout/stderr。
背景
当前 Sakura 使用 Genie TTS 时,服务启动、角色加载、参考音频设置、文本合成、语义 token 推理和音频输出等关键步骤缺少足够清晰的日志。排查问题时只能看到少量 HTTP 状态或第三方整合包输出,难以判断问题发生在模型加载、参考音频、G2P、语义预测还是音频生成阶段。
同时,现有 Genie TTS 整合包来源不够清晰。为了后续分发和维护,需要重新封装一份 Sakura 专用的 Genie TTS 包,明确资源来源、依赖范围和运行入口。
目标
重新封装 Genie TTS,使其成为 Sakura 可直接拉起的 TTS 整合包,并增强运行日志。
需要实现:
日志要求
服务运行时应输出以下信息:
示例日志:
打包要求
整合包应包含:
server.pyconvert.pygenie_tts/deps/GenieData/manifest.jsonSOURCE_MANIFEST.jsonTHIRD_PARTY_NOTICES.mdAPI 要求
服务需要兼容 Sakura 当前调用方式:
GET /openapi.jsonPOST /load_characterPOST /set_reference_audioPOST /ttsPOST /stop同时可以保留 Sakura 专用别名:
POST /voice/loadPOST /voice/referencePOST /cache/clear默认
/tts返回audio/wav。验收标准
openapi.json可访问。SOURCE_MANIFEST.json能追溯GenieData来源。注意事项
OpenJTalk / pyopenjtalk 的底层 warning 可能直接写入 stderr。Windows 下如果 Sakura 按 GBK/ANSI 解码日志,日文 warning 可能出现乱码。后续 Sakura 拉起子进程时应设置 UTF-8 环境变量,并按 UTF-8 读取 stdout/stderr。