519 lines
9.5 KiB
Markdown
Executable File
519 lines
9.5 KiB
Markdown
Executable File
# 09_AI生成流水线_Provider抽象设计
|
||
|
||
## 1. 文档目标
|
||
|
||
本文档定义系统 B 的 AI 核心流水线、Provider 抽象、任务输入输出、质量控制和模型可替换策略。
|
||
|
||
## 2. 核心原则
|
||
|
||
1. 不把任何模型写死到业务代码。
|
||
2. 所有 AI 能力通过 Provider 调用。
|
||
3. 高成本任务必须检查订单/额度。
|
||
4. 所有 AI 调用必须记录日志和成本。
|
||
5. 任务失败可重试,可切换备用 Provider。
|
||
6. 预览和正式生成分离。
|
||
|
||
## 3. Provider 类型
|
||
|
||
```text
|
||
TextProvider:文案、创作方案、Prompt 生成
|
||
ImageProvider:预览图、正式图、局部重绘
|
||
VideoProvider:图生视频、关键动态镜头
|
||
VoiceProvider:旁白、誓言、祝福语 TTS
|
||
ModerationProvider:文本/图片审核
|
||
FaceCheckProvider:人脸检测、角色归属、清晰度
|
||
QualityCheckProvider:图片质量、人像一致性、视频质检
|
||
```
|
||
|
||
V3 真人动态视频新增 Provider:
|
||
|
||
```text
|
||
FaceIdentityProvider:真人身份档案、身份特征摘要、身份锚点建议
|
||
FaceConsistencyProvider:本人相似度、人脸一致性、男女混脸检测
|
||
MotionPortraitProvider:动态写真,眨眼、微笑、头发衣服轻微动
|
||
LipSyncProvider:口型同步、誓言口播、祝福语口播
|
||
```
|
||
|
||
VideoProvider 在 V3 中不只用于“关键动态镜头”,还要支持:
|
||
|
||
```text
|
||
image_to_video:首帧图生视频
|
||
reference_to_video:多参考图保持人物一致性
|
||
start_end_to_video:首尾帧视频
|
||
speech_to_video / lipsync:带音频或口型的视频任务,可选
|
||
```
|
||
|
||
## 4. Provider 通用配置
|
||
|
||
字段:
|
||
|
||
```text
|
||
provider_type
|
||
provider_name
|
||
model_name
|
||
api_base
|
||
api_key_ref
|
||
priority
|
||
quality_level
|
||
rate_limit
|
||
cost_rule
|
||
fallback_provider_id
|
||
status
|
||
```
|
||
|
||
## 5. AI 流水线总览
|
||
|
||
```text
|
||
用户上传照片
|
||
→ 原图去 EXIF
|
||
→ 照片质检
|
||
→ 人物档案生成
|
||
→ 用户填写定制信息
|
||
→ 创作方案生成
|
||
→ 镜头计划生成
|
||
→ Prompt 分层组装
|
||
→ 预览图生成
|
||
→ 用户确认预览
|
||
→ 正式图生成
|
||
→ 图片质检
|
||
→ 旁白/字幕生成
|
||
→ 视频合成
|
||
→ 最终质检
|
||
→ 人工审核
|
||
→ 交付
|
||
```
|
||
|
||
## 5.1 V3 真人动态视频流水线
|
||
|
||
```text
|
||
用户上传照片
|
||
→ 授权确认
|
||
→ 原图去 EXIF / 私有存储
|
||
→ 照片质检
|
||
→ FaceIdentityProvider 生成人物身份档案
|
||
→ 身份锚点图生成
|
||
→ FaceConsistencyProvider 评分
|
||
→ 用户确认像不像
|
||
→ 创作方案 / 镜头计划
|
||
→ 关键帧生成
|
||
→ 成本预估和额度冻结
|
||
→ VideoProvider 生成真人动态片段
|
||
→ 视频片段质检
|
||
→ VoiceProvider 生成旁白 / 誓言
|
||
→ LipSyncProvider 口型同步,可选
|
||
→ FFmpeg 合成成片
|
||
→ 最终质检
|
||
→ 人工审核
|
||
→ 用户确认
|
||
→ 交付
|
||
```
|
||
|
||
关键规则:
|
||
|
||
- 未完成授权,不允许照片处理和生成。
|
||
- 未确认身份锚点,不允许正式动态视频生成。
|
||
- 真实视频 Provider 默认关闭,必须运营启用、用户确认和成本通过后才调用。
|
||
- 真实 Provider 失败不能回落 mock 假成功。
|
||
- 每个视频片段必须可单独预览、重试、替换、质检和计费。
|
||
|
||
## 6. 照片处理流程
|
||
|
||
### 6.1 输入
|
||
|
||
- 用户原始照片
|
||
- 人物角色:person_a/person_b/self/child/family_member
|
||
- 项目主题
|
||
|
||
### 6.2 处理
|
||
|
||
```text
|
||
保存原图
|
||
去除 EXIF
|
||
生成缩略图
|
||
检测人脸数量
|
||
检测清晰度
|
||
检测遮挡
|
||
检测角度
|
||
检测重复图片
|
||
检测是否多人混入
|
||
检测过度美颜风险
|
||
```
|
||
|
||
### 6.3 输出
|
||
|
||
```json
|
||
{
|
||
"asset_id": 1001,
|
||
"quality_status": "pass",
|
||
"quality_score": 86.5,
|
||
"face_count": 1,
|
||
"issues": []
|
||
}
|
||
```
|
||
|
||
## 7. 人物档案生成
|
||
|
||
### 7.1 目标
|
||
|
||
将多张参考照片整理成人物档案,供后续 Prompt 和一致性控制使用。
|
||
|
||
### 7.2 输出字段
|
||
|
||
```text
|
||
role
|
||
name
|
||
gender_label
|
||
age_group
|
||
appearance_summary
|
||
face_features
|
||
hair_features
|
||
temperament
|
||
reference_asset_ids
|
||
anchor_asset_id
|
||
avoid_changes
|
||
quality_score
|
||
```
|
||
|
||
### 7.3 示例
|
||
|
||
```text
|
||
person_a:30岁左右男性,短黑发,脸型偏长,五官清晰,气质沉稳。生成时保持发型、脸型和年龄感,不要变成欧美脸,不要明显年轻化或老化。
|
||
```
|
||
|
||
## 8. 创作方案生成
|
||
|
||
### 8.1 输入
|
||
|
||
```text
|
||
人生主题
|
||
套餐
|
||
视觉风格
|
||
世界观列表
|
||
场景列表
|
||
人物档案
|
||
用户定制信息
|
||
输出类型
|
||
```
|
||
|
||
### 8.2 输出
|
||
|
||
```text
|
||
作品标题
|
||
作品简介
|
||
世界顺序
|
||
场景顺序
|
||
镜头计划
|
||
旁白草稿
|
||
字幕草稿
|
||
片头文案
|
||
片尾文案
|
||
总时长
|
||
预计图片数
|
||
预计视频片段数
|
||
```
|
||
|
||
### 8.3 生成约束
|
||
|
||
- 不要生成用户未选择的世界。
|
||
- 不要改变人物关系。
|
||
- 文案不要过长。
|
||
- 如果是父母银婚金婚,语气要庄重温馨。
|
||
- 如果是情侣写真,可以更浪漫轻盈。
|
||
|
||
## 9. Prompt 分层组装
|
||
|
||
Prompt 由以下层组成:
|
||
|
||
```text
|
||
人物层
|
||
关系层
|
||
人生主题层
|
||
世界观层
|
||
场景层
|
||
镜头层
|
||
视觉风格层
|
||
质量层
|
||
限制层
|
||
```
|
||
|
||
### 9.1 人物层
|
||
|
||
来自 person_profile。
|
||
|
||
### 9.2 世界观层
|
||
|
||
来自 world_template。
|
||
|
||
### 9.3 场景层
|
||
|
||
来自 scene_template。
|
||
|
||
### 9.4 镜头层
|
||
|
||
来自 shot_template。
|
||
|
||
### 9.5 质量层
|
||
|
||
根据套餐决定:
|
||
|
||
- high quality
|
||
- commercial portrait quality
|
||
- detailed lighting
|
||
- clean composition
|
||
|
||
### 9.6 限制层
|
||
|
||
必须包含:
|
||
|
||
```text
|
||
不要多出无关人物
|
||
不要文字乱入
|
||
不要明显畸形手
|
||
不要改变人物年龄
|
||
不要男女混脸
|
||
不要改变人物核心五官
|
||
```
|
||
|
||
## 10. 预览图生成
|
||
|
||
### 10.1 目标
|
||
|
||
让用户低成本确认:
|
||
|
||
- 人物像不像
|
||
- 风格是否满意
|
||
- 世界方向是否正确
|
||
|
||
### 10.2 规则
|
||
|
||
- 数量少
|
||
- 加水印
|
||
- 低清或中清
|
||
- 只生成关键场景
|
||
- 预览重生次数受限
|
||
|
||
## 11. 正式图生成
|
||
|
||
### 11.1 输入
|
||
|
||
- 确认后的镜头计划
|
||
- 人物档案
|
||
- 场景模板
|
||
- 风格模板
|
||
- 预览锚点图,可选
|
||
|
||
### 11.2 规则
|
||
|
||
- 使用高质量 Provider 配置
|
||
- 每张图记录 Prompt
|
||
- 每张图记录 Provider
|
||
- 每张图记录版本
|
||
- 失败可重试
|
||
- 多次失败转人工
|
||
|
||
## 12. 图片质检
|
||
|
||
自动检查:
|
||
|
||
```text
|
||
人脸是否崩坏
|
||
人物是否不像本人
|
||
男女是否混脸
|
||
是否多出第三人
|
||
手部是否异常
|
||
服装是否跑偏
|
||
场景是否错误
|
||
是否有乱码文字
|
||
是否违规
|
||
```
|
||
|
||
输出:
|
||
|
||
```text
|
||
pass
|
||
warning
|
||
fail
|
||
```
|
||
|
||
处理:
|
||
|
||
- pass:进入视频合成
|
||
- warning:人工复核
|
||
- fail:自动重生
|
||
|
||
## 13. TTS 和字幕生成
|
||
|
||
### 13.1 文案来源
|
||
|
||
- 片头
|
||
- 旁白
|
||
- 誓言
|
||
- 祝福语
|
||
- 片尾
|
||
|
||
### 13.2 字幕规则
|
||
|
||
- 每屏字数控制
|
||
- 不遮挡人物脸部
|
||
- 字幕和旁白时间对齐
|
||
- 支持有字幕/无字幕版本
|
||
|
||
## 14. 视频合成
|
||
|
||
### 14.1 输入
|
||
|
||
```text
|
||
final_images
|
||
shot_plans
|
||
subtitle_srt
|
||
voice_audio
|
||
bgm_audio
|
||
video_template
|
||
```
|
||
|
||
### 14.2 FFmpeg 处理
|
||
|
||
- 图片转视频片段
|
||
- 推拉运镜
|
||
- 转场
|
||
- 字幕烧录
|
||
- 音频混合
|
||
- 片头片尾
|
||
- 封面生成
|
||
|
||
### 14.3 视频等级
|
||
|
||
```text
|
||
L1:静态图片 + 推拉运镜
|
||
L2:图片 + 简单光效/花瓣/粒子
|
||
L3:关键镜头图生视频
|
||
L4:高级动态视频
|
||
```
|
||
|
||
第一阶段建议:L1 + L2 为主。
|
||
|
||
## 15. 最终质检
|
||
|
||
检查:
|
||
|
||
- 视频可播放
|
||
- 音画同步
|
||
- 字幕不出框
|
||
- BGM 音量合适
|
||
- 旁白清晰
|
||
- 分辨率正确
|
||
- 文件大小合理
|
||
- 无违规内容
|
||
|
||
## 16. Provider 失败切换
|
||
|
||
策略:
|
||
|
||
```text
|
||
主 Provider 失败
|
||
→ 记录错误
|
||
→ 判断是否可重试
|
||
→ 重试 N 次
|
||
→ 切换 fallback Provider
|
||
→ 仍失败则 manual_required
|
||
```
|
||
|
||
## 17. 成本记录
|
||
|
||
每次 AI 调用记录:
|
||
|
||
```text
|
||
project_id
|
||
task_id
|
||
provider_id
|
||
model_name
|
||
input_size
|
||
output_size
|
||
estimated_cost
|
||
actual_cost
|
||
latency_ms
|
||
status
|
||
```
|
||
|
||
## 18. 需要人工介入的场景
|
||
|
||
- 人像连续不像
|
||
- 多次生成崩坏
|
||
- 视频合成失败
|
||
- 用户申请中改/大改
|
||
- 审核警告
|
||
- 高端定制项目
|
||
|
||
## 19. V3 VideoProvider 策略
|
||
|
||
系统 B V3 优先测试图生视频、参考图生视频和人物动作视频,不建议直接依赖文生视频。
|
||
|
||
推荐 Provider 预设:
|
||
|
||
| Provider | 适合用途 | 默认状态 |
|
||
|---|---|---|
|
||
| MiniMax Hailuo 2.3 Fast | 低成本快速小样、真人动效验证 | 禁用 |
|
||
| MiniMax Hailuo 2.3 | 质量更高的小样 / 正式片段 | 禁用 |
|
||
| Alibaba Wan2.6 I2V Flash | 快速对比稳定性和成本 | 禁用 |
|
||
| Alibaba Wan2.6 I2V | 标准质量图生视频 | 禁用 |
|
||
| Vidu Q3 Turbo Reference | 多参考图人物一致性、音画能力 | 禁用 |
|
||
| Vidu Q3 Pro | 高质量参考图生视频 | 禁用 |
|
||
| Jimeng / Seedance | 中文短剧感、真人镜头语言 | 禁用 |
|
||
| Kling / Runway | 备用对比和部分高质量场景 | 禁用 |
|
||
| MockVideoProvider | 流程演练和不扣费测试 | 启用 |
|
||
|
||
每个 Provider 配置至少包含:
|
||
|
||
```text
|
||
provider_name
|
||
model_name
|
||
mode: image2video / reference2video / start_end2video / lipsync
|
||
resolution
|
||
max_duration_per_clip
|
||
cost_per_second 或 cost_per_clip
|
||
supports_reference_image
|
||
supports_start_end_frame
|
||
supports_audio
|
||
supports_lipsync
|
||
supports_character_reference
|
||
retry_limit
|
||
priority
|
||
fallback_provider
|
||
status
|
||
```
|
||
|
||
## 20. V3 视频片段质检
|
||
|
||
每个真实视频片段必须检查:
|
||
|
||
- 是否像本人。
|
||
- 是否男女混脸。
|
||
- 是否年龄变化过大。
|
||
- 是否多出第三人。
|
||
- 动作是否自然。
|
||
- 表情是否怪异。
|
||
- 手部和身体是否畸形。
|
||
- 是否有不合适姿势。
|
||
- 是否有水印、乱码、logo。
|
||
- 是否适合公开案例。
|
||
|
||
质检结果:
|
||
|
||
```text
|
||
passed:可进入合成
|
||
needs_retry:建议重试
|
||
manual_review:转人工
|
||
rejected:不可用
|
||
```
|
||
|
||
## 21. V3 口型策略
|
||
|
||
口型属于高级能力,不作为基础交付强依赖。
|
||
|
||
规则:
|
||
|
||
- 只有高端真人纪念片或用户选择口型套餐时启用。
|
||
- 口型失败时允许回退为旁白字幕版本。
|
||
- 口型任务必须单独记录 Provider、成本、状态和错误。
|
||
- 涉及未成年人时,口型内容必须更严格审核。
|