xiaoxia
a27ed596b4
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m52s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 6m37s
feat(ai-avatar): TTS直生对口型 + 语速/情绪透传 + MediaKit智能封面 + 契约文档
- 对口型支持 TTS 直生模式:POST /lipsync/jobs 传 voice_id+script_text(+speed/emotion),
后端内部调 CosyVoice 合成音频→转存OSS→提交 MediaKit;保留 audio_url 直接音频模式
- cosyvoice_service: 新增 emotion 参数 + normalize_emotion(中文 自然/兴奋/沉稳/亲切
映射 natural/excited/calm/friendly),空值不透传
- TTS 链路 speed/emotion 全链路透传:schema→use_case(metadata)→workflow(单段/分段/重合成)
→submit_synthesize_task(rate/emotion);preview 即时试听同步
- lipsync refresh: 中间状态(running/processing)同步DB;completed 输出视频转存自家OSS防过期
- 修复 lipsync/ai-avatar 路由 current_user.id → current_user.user.id(AuthenticatedUser 无 .id)
- 新增 POST /ai-avatar/render/smart-cover 独立封面接口:复用 MediaKit extract_frames
+ cover_frame_scorer 评分选最佳帧(非 FFmpeg 首帧),渲染管线封面同样优先智能选帧
- 迁移 073: lipsync_jobs 增加 voice_id/script_text/speed/emotion 列,audio_url 改可空
- docs/ai-avatar-api-contract-1822.md: 前后端接口契约 + title_config 字段清单
- 新增 11 个单测(情绪归一化/payload透传/TTS直生/中间状态/智能封面),相关 82 测试全绿
Refs #1797 #1822
2026-09-09 19:13:03 +08:00
..
2026-06-23 15:22:26 +08:00
2026-06-19 10:54:20 +08:00
2026-07-13 16:27:17 +08:00
2026-08-05 09:51:01 +08:00
2026-09-09 19:13:03 +08:00
2026-06-15 16:17:09 +08:00
2026-06-15 16:17:09 +08:00
2026-06-15 16:17:09 +08:00
2026-06-15 16:24:51 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 16:14:23 +08:00
2026-06-17 08:17:16 +08:00
2026-06-21 11:29:33 +08:00
2026-06-29 10:53:32 +08:00
2026-06-15 16:20:11 +08:00
2026-06-17 08:41:11 +08:00
2026-06-15 18:22:10 +08:00
2026-06-22 15:14:44 +08:00
2026-06-19 08:39:33 +08:00
2026-06-28 08:33:48 +08:00
2026-07-13 15:47:29 +08:00
2026-06-21 11:29:33 +08:00
2026-07-23 22:34:56 +08:00
2026-06-21 11:20:55 +08:00
2026-06-21 10:11:18 +08:00
2026-06-24 10:44:33 +08:00
2026-06-21 11:29:33 +08:00
2026-06-27 00:09:46 +08:00
2026-06-25 00:15:59 +08:00
2026-06-21 11:29:33 +08:00
2026-06-17 08:38:13 +08:00
2026-06-30 22:17:39 +08:00
2026-06-30 22:17:39 +08:00
2026-06-18 15:51:27 +08:00
2026-06-22 18:36:56 +08:00
2026-06-17 08:42:56 +08:00
2026-06-15 15:17:40 +08:00
2026-06-27 17:20:17 +08:00
2026-06-17 08:49:26 +08:00
2026-06-17 08:36:11 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-17 13:21:38 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-17 09:32:37 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-17 17:41:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-22 13:19:45 +08:00
2026-06-22 13:19:45 +08:00
2026-07-24 21:29:32 +08:00
2026-06-21 11:29:33 +08:00
2026-06-22 19:28:43 +08:00
2026-06-23 08:27:04 +08:00
2026-06-23 10:04:56 +08:00
2026-06-27 17:05:48 +08:00
2026-06-19 08:39:33 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-23 07:52:19 +08:00
2026-06-19 10:02:12 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-15 15:17:40 +08:00
2026-06-24 10:44:33 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-21 11:10:45 +08:00
2026-09-08 08:43:31 +08:00
2026-06-17 09:04:23 +08:00
2026-06-15 15:17:40 +08:00
2026-06-30 22:17:39 +08:00
2026-06-15 16:20:11 +08:00
2026-06-15 15:17:40 +08:00
2026-07-20 12:49:54 +08:00
2026-06-25 01:43:51 +08:00
2026-07-25 12:25:14 +08:00
2026-07-25 12:25:14 +08:00
2026-06-30 22:17:39 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-28 14:18:41 +08:00
2026-06-27 17:05:48 +08:00
2026-06-28 08:33:48 +08:00
2026-06-27 17:05:48 +08:00
2026-06-28 08:33:48 +08:00
2026-06-28 08:33:48 +08:00