fix(backend): #1897 声音克隆preview接口支持情绪语速参数 #1907
Reference in New Issue
Block a user
Delete Branch "fix/1897-voice-clone-preview-emotion-speed-backend"
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?
背景
Issue #1897:声音克隆页增加情绪/语速设置。前端加控件后会传 emotion 和 speed 到 preview 接口,后端需接收并透传。
参考已有 TTS preview 接口(POST /tts/preview)的实现:apps/api/app/api/routes/tts.py 已正确接收 speed/emotion 并透传到 cosyvoice.synthesize_speech。CosyVoice 服务层 synthesize_speech 已原生支持 speed/emotion 参数,无需修改。
改动
apps/api/app/api/routes/voice_clones.py:GET /voice-clones/{clone_id}/preview 新增两个 query 参数speed: float = 1.0,ge=0.5, le=2.0(FastAPI 自动校验越界返回 422)emotion: str = "",白名单校验 natural/excited/calm/friendly/空字符串,非法返回 400cosyvoice.synthesize_speech(text=..., voice_id=..., format="mp3", speed=speed, emotion=emotion)except ValueError返回 400(与 TTS preview 一致,speed 越界等参数错误 cosyvoice 抛 ValueError)测试
Refs: #1897
- apps/api/app/api/routes/voice_clones.py: GET /voice-clones/{clone_id}/preview 新增 speed(float, 0.5-2.0, 默认1.0) 和 emotion(str, 默认空, 枚举 natural/excited/calm/friendly) query 参数 - 参数透传到 cosyvoice.synthesize_speech(speed=..., emotion=...),CosyVoice 服务层已原生支持无需改动 - emotion 白名单校验:不在 natural/excited/calm/friendly/空 范围返回 400 - 缓存仅在默认参数(默认试听文本+speed=1.0+emotion空)时生效,自定义 speed/emotion 不缓存 - 新增 ValueError 异常处理(speed 越界等参数问题 cosyvoice 抛 ValueError),返回 400(与 TTS preview 接口一致) - 参考 TTS preview 接口(apps/api/app/api/routes/tts.py)的参数接收与透传方式 - 单测:4 个新用例覆盖 speed/emotion 透传、非法 emotion 400、非默认参数不缓存、ValueError→400,293个voice clone/cosyvoice相关测试全通过🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1907 已关闭或合并,对应的预览环境已被清理。