name: skill-director
定位:不是生成工具,是导演。我不亲手画每一帧,我决定拍什么、怎么拍、用什么拍、拍废了怎么办。
这是最容易搞错、代价最大的一课。
| 模型 | 本质是什么 | 强在哪 | 死穴 |
|---|---|---|---|
| Veo 3.1 | 镜头宝石打磨机 | 单帧电影级 PBR、次表面散射、胶片质感、环境音氛围 | 英文音素空间,中文台词会读成英文;参考输入上限 3 张;单段 8s |
| Seedance 2.5 | 连续叙事引擎 | 原生支持外部音频作为生成条件;大量参考图;单段最长 30s;片段续接 | 单帧质感略弱于 Veo |
| Kling 3.0 | 表演与物理引擎 | 中文音素口型最成熟;肢体、布料物理稳;4K | 电影氛围感不如 Veo |
| Image 2.5 | 分镜审美师 | 电影语言、布光、氛围理解极强 | 没有原生角色资产锁,跨图会漂 |
| Seedream 4.0 | 批量出图 | 便宜、快 | 一致性弱,不适合做主角资产 |
这是硬伤,不是技巧问题。
Veo 的原生音频是「文本驱动生成语音」,官方完整评测只覆盖英文。塞中文进去,它会:
而且 Veo 没有「上传外部 WAV 让它口型对齐」的正式输入路径,这是接口层的硬隔离。
Veo 的正确用法:只出静音画面。
prompt 里强制写:silent, no generated speech, only ambient subtle environment sound,
character performs the line, mouth moves naturally for Chinese speech
为什么错:音频是外部修正信号,只改嘴;表情、头动、手势是视频模型自己随机出的。两套系统不同源,必然打架。
你会看到「嘴对上了,但整个人很假,动作和说话没关系」。
正确做法:音频作为第一阶 conditioning。
音频(音素、prosody、情绪)进入 motion 潜空间,先驱动整套表演(面部 FACS、头动、视线、手势、躯干重心、呼吸),再把表演 latent 喂进视频扩散渲染。
口型只是全身表演的一个子集,不是独立任务。
if shot.tag == "dialogue": # 对白、长台词、情绪表演
route = "seedance_2.5"
inputs = [char_refs, keyframe, tts_wav, prosody_tags]
elif shot.tag == "close_up_talk": # 特写对话,口型优先
route = "kling_3_omni"
inputs = [char_refs, keyframe, tts_wav]
elif shot.tag == "hero_shot": # 高光渲染、氛围、无台词
route = "veo_3.1_quality"
inputs = [char_refs, keyframe]
prompt += "silent, subtle ambient movement, cinematic PBR render"
elif shot.tag == "action": # 打斗、大量肢体
route = "kling_3.0"
❌ 剧本 → 提示词 → 视频 (角色每一镜都变)
✅ 剧本 → 分镜表 → 关键帧 → 视频 (可控)
这是所有专业团队的共识。
1. 剧本结构化(分镜表 JSON)
2. 角色资产建立(身份锚点图)
3. 每镜关键帧(Image 2.5)
4. 关键帧人眼验收(九宫格)
5. 送视频模型(按类型路由)
6. 音频生成(TTS 前置,不是后贴)
7. 剪辑成片
每一步都要过验收才能下一步。 关键帧没验就送视频,等于烧钱。
博主原话(这个反直觉但正确):
一张 1024 的图切九个格子,每格只剩三百多像素,再砍掉身体和背景,那张脸可能就剩几十个像素。
脸占不到画面两成,模型提取不到特征,它只能猜——猜出来的眼间距、眉形、下颌线,每一帧都不一样。
所以你越塞,它越崩。
| # | 标准 | 为什么 |
|---|---|---|
| 1 | 短边 ≥ 1024 | 脸要有足够像素 |
| 2 | 背景纯色中性,不要场景 | 场景会被一起读进去污染每个镜头 |
| 3 | 均匀柔光,所有参考图同一套光 | 一张侧光一张顶光会造出两个人 |
| 4 | 中性表情,别笑 | 大笑的肌肉形变会干扰结构 |
| 5 | 画面里只能有一张脸 | 多人同框时模型会平均出一个谁也不是的第三人 |
| 6 | 脸占画面 60% 以上 | 一条图只回答一个问题 |
| 档 | 内容 | 用在 |
|---|---|---|
| 单图 | 一张正面或 3/4 半身 | 次要角色、群众 |
| 三视图 | 前+侧+背,全身,纯背景 | 反复出场的主角(默认) |
| 四视图 | 三视图 + 一个 3/4 视角 | 频繁转身/走位 |
| 角色设定表 | 三视图 + 头部特写 + 道具标注 | 服化复杂的 hero |
| 表情板 | 一张脸 × 多种情绪 | 台词密集/情绪戏 |
| 动作板 | 同角色 × 几个关键姿势 | 打斗/舞蹈 |
数量:3-5 张最优,8 张上限,超过 10 张叫噪声不叫信息。
混在一起,模型会把临时状态误认为永久特征,角色就没法换衣服而不换脸。
一句自然语言描述的剧本,不同的人(甚至同一个人不同时间)会拆出完全不同的镜头序列。
没有稳定的中间表示,就不可能有稳定的产出。
{
"project": "id",
"episode": 1,
"scene_list": [{
"scene_id": "ep01_scene01",
"role": {"name": "男主", "reference_image": "assets/ref/male_lead.png"},
"shot_type": "中景",
"camera": "缓慢推进",
"lighting": "夜景冷色调",
"action": "推开仓库大门",
"dialogue": "三年了,我终于找到你了。",
"duration_seconds": 5
}]
}
这份 JSON 有三重身份:提示词来源、批量参数模板、出问题时定位的最小单元。
| 收益 | 说明 |
|---|---|
| 可 diff | 改剧本能直接看出动了哪几个镜头,不用整剧重生成 |
| 失败可重跑 | 某条失败只重跑那一条 |
| 可复用 | 参考图、运镜模板、光影预设跨集复用,第 20 集成本远低于第 1 集 |
for scene in scene_list:
if not force_ids or scene["scene_id"] not in force_ids:
cached = load_output(scene["scene_id"])
if cached:
continue # ★ 跳过,不重复烧钱
generate_one(scene)
批量跑到第 30 条崩了,重跑时不希望前 29 条再烧一遍额度。
| 类型 | 用法 |
|---|---|
| 首帧(最常用) | 视频从当前画面往后生成 |
| 尾帧 | 场景切换到主体时,保证主体一致 |
| 中间帧 | 从场景过渡到主体后再生成后续 |
| 首尾帧都有 | 状态转换场景,运动过程自动补全 |
首尾帧控制特别适合:转场、镜头推近、人物走向镜头。
人物对话场景建议控制在 5 秒左右。 太长的片段生成容易崩坏,后期拼接反而更麻烦。
1. TTS 生成(Index TTS / 微软 Azure TTS)
↓ 不只拿 wav,还要抽:
- 中文音素时间轴(汉语 viseme,不是英文)
- F0、能量、停顿、重音
- 逐句情绪标签(克制/嘲讽/紧张/温柔/迟疑/换气/视线转移)
2. 音频作为生成条件送入 Seedance/Kling
↓
3. 模型内部把音频翻译成表演信号,再渲染画面
这样表情、头动、手势、口型是同源采样,不是两层拼接。
视频模型自带的 TTS 语气呆板。你要精细控制情绪、停顿、复刻声线,只能用专业 TTS。
凡是模型支持「外部音频驱动」,就一定要把语音生成前置。
project/
├── bible/ # 剧集圣经
│ ├── world.md # 世界观、规则、禁忌
│ ├── style.md # 视觉基准(色彩、光影、镜头语言)
│ └── timeline.md # 时间线、事件表
├── characters/
│ └── [name]/
│ ├── bible.md # 人设:欲望、恐惧、掌握的信息、关系
│ ├── identity/ # 身份参考图(不变)
│ ├── state/ # 状态参考图(按场次版本化)
│ └── voice/ # 声线样本、情绪样本
├── scenes/
│ └── [scene_id]/
│ ├── keyframes/ # 首帧、尾帧、峰值帧
│ ├── shots/ # 生成的片段
│ └── meta.json # 参数、模型、seed、验收状态
└── episodes/
└── ep001/
├── storyboard.json # 分镜表
├── audio/ # TTS 音频 + prosody 标注
└── final.mp4
「侦探外套 v2」只用于雨夜章节;「左眉伤口 v1」从仓库冲突后生效。
每项素材记录版本和适用范围,这是跨镜头一致性的基础。
第一层:九宫格分镜(便宜) 把一个镜头的九个关键帧画在同一张画布上,同一个人天然保持同一副样子。九格里的人还是同一个吗?不是就回上游修,别烧那张贵得多的视频。
第二层:人眼验收 关键帧通过才送视频。
| 层 | 核心问题 |
|---|---|
| 身份 | 不看服装还能认出角色吗 |
| 造型 | 发型、配饰、服装版本正确吗 |
| 连续性 | 伤口、道具、时间、空间接得上吗 |
| 表演 | 动作与情绪一致吗 |
| 声音 | 音色、语速、称谓符合设定吗 |
| 行为 | 角色掌握的信息和选择符合当前状态吗 |
| 风格 | 画面是否属于同一视觉世界 |
| 类型 | 特点 | 关键策略 |
|---|---|---|
| 小说漫剧 | 几十上百集、角色长期一致、大量对话 | Seedance 为主 + 表情板 + 资产版本化 |
| 企业宣传片 | 短、质感优先、台词少 | Veo 主战场(无台词优势) |
| MV | 节奏驱动、画面抽象、无对话 | Veo + 剪辑节奏 |
| APP 配图/架构图 | 不需要视频,要精准 | Image 2.5 + 强约束提示词 |
| 产品爆炸图 | 结构准确优先 | Image 2.5 + 工程图式描述 |
| 错误 | 后果 | 正确做法 |
|---|---|---|
| 文生视频直出 | 每镜角色都变 | 先关键帧 |
| 九宫格三视图 | 脸太小,模型只能猜 | 按档选参考图 |
| 中文台词喂 Veo | 读成英文、口型错 | Veo 只出静音 |
| 后贴 lip-sync | 嘴对上但人很假 | 音频前置做条件 |
| 全丢一个模型 | 各场景都不最优 | 按镜头类型路由 |
| 关键帧不验收就送视频 | 烧钱 | 九宫格人眼门 |
| 重跑全部 | 重复烧额度 | 幂等跳过已完成的 |
| 提示词写得很长 | 不如参考资产管用 | 一致性靠资产不靠形容词 |
一致性在第二步锁死,而不是在每个镜头里反复叮嘱。
先定身份 → 锁参考 → 扇出镜头。
看起来浑然一体,是因为音频是表演的生成源,而不是事后补丁;口型是表演的一部分,不是独立任务。
所有好的 AI 漫剧都不是「一个全能模型一键出」,而是「正确分工 + 资产编排」。