fix: /tts/preview 解析克隆音色 UUID 为 CosyVoice voice_id #1497
Reference in New Issue
Block a user
Delete Branch "fix/tts-preview-voice-clone-id"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
前端对克隆音色传的是 VoiceCloneProfile 的 id(UUID),但 CosyVoice API 需要的是 profile.voice_id(CosyVoice 返回的实际音色标识)。当前 /tts/preview 代码直接把 UUID 传给 CosyVoice,导致 418 错误。
修复
在 preview_tts 函数调用 cosyvoice_service.synthesize_speech() 之前,增加 voice_id 解析逻辑:
测试
新增 3 个单元测试,全部 11 个测试通过。
🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[apps/api/app/api/routes/tts.py: 384] 缺少类型提示
voice_clone_repo参数添加类型注解(例如VoiceCloneProfileRepository),以增强代码可读性并获得更好的 IDE 静态检查支持。[tests/unit/test_tts_preview.py] 减少测试代码重复
test_preview_tts_success,test_preview_tts_cosyvoice_error等)中重复了相同的mock_clone_repo设置代码块。建议将其提取到setUp方法或使用 pytest fixture 来统一管理,以减少样板代码,提高测试代码的可维护性。✅ 良好实践
user_id),有效防止了越权访问(IDOR漏洞)。voice_id为空)的情况进行了单独处理,返回了明确的 400 错误提示。🤖 由 AI 代码审查机器人自动生成 | 2026-08-25 08:06:59 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1497 已关闭或合并,对应的预览环境已被清理。