从剧本到成片:用开源工具搭一条 AI 短剧流水线

admin AI 视频 2026-11-04 6 0

做一条 5 秒视频是创作,做一集 3 分钟短剧是工程。两者的差别不在模型,在一致性:第 12 个镜头里的主角,得和第 1 个镜头是同一个人,背景得是同一个房间,光线得着同一个时辰。模型不会替你想这些,流程才会。

一、流水线全景

剧本/文案 ──► 分镜表 ──► 关键帧图像 ──► 图生视频 ──► 配音
   (LLM)      (结构化)     (图像模型)      (视频模型)     (TTS)
                                                          │
   成片 ◄── 剪辑合成 ◄── 字幕对齐 ◄── 对口型修正 ◄──────────┘
            (FFmpeg)      (ASR)        (唇形模型)

七道工序,每一道都要留下可复现的中间产物:分镜表、参考图、每段视频的参数与种子、配音的分段音频、字幕的 SRT。做短剧最怕的是「第三集要改第一集的一个设定」——没有中间产物,你只能从头再拍一遍。

二、剧本与分镜:先把它变成结构化数据

不要让模型直接「写个剧本然后生成视频」,中间必须有一步是把自然语言压成结构化表格。本地跑一个 7B–32B 的模型就够用,具体部署看 Ollama 那篇。

{
  "episode": 3,
  "scenes": [
    {"shot": 1, "duration": 5, "camera": "中景推近",
     "desc": "女主在厨房切菜,窗外下雨",
     "characters": ["女主"], "props": ["菜刀","砧板"],
     "dialogue": ""},
    {"shot": 2, "duration": 4, "camera": "特写",
     "desc": "女主抬头看向窗外,表情变化",
     "characters": ["女主"], "props": [],
     "dialogue": "又下雨了。"}
  ]
}

几个关键字段别省:机位(决定提示词里的景别)、时长(决定帧数,5 秒 = 121 帧)、人物与道具(决定参考图要带哪些资产)。这份 JSON 就是整条流水线的主键,后面每一步都从它派生。

三、角色一致性:三样东西缺一不可

跨镜头一致是 AI 短剧真正的技术门槛。有效的手段只有三个,而且必须叠加:

  • 资产库:每个角色固定 3–5 张正面/侧面/半身参考图,统一光线和背景,编号存好。生成时按编号引用,不靠文字描述。
  • 角色微调:用那几张图训一个低秩适配器,十几次迭代就够。它锁的是「脸和气质」,不是具体姿势。
  • 固定种子策略:同一场景内的镜头用同一组种子区间,跨场景换种子。这条最容易被忽略,但对连贯性的贡献比前两条加起来还大。

另外,图生视频时首帧的约束强度要调到 0.7–0.85。调到 1.0,画面几乎不动的死图;调到 0.5,人物脸开始漂。这个区间是靠试出来的,不是一个固定值。

四、图生视频:衔接靠尾帧,不靠后期

把每段 5 秒接起来,最容易出的问题是「跳」:镜头 A 的结尾和镜头 B 的开头,光不一样、人物站位不一样,观众一眼出戏。

解法是把上一段的最后一帧当成下一段的第一帧。这样至少在像素层面是连续的,模型会顺着这个状态往下推。配合「同场景同种子」,跳变能压到很小。

运动幅度用 shift(或等价参数)控制:数值小,画面安静适合对话戏;数值大,适合动作戏但容易崩形体。一集里不要全程用一个值。

五、配音:先把音频层做对

配音决定了「AI 感」的一半。四个硬要求:

  1. 参考音干净:10–30 秒、单人、无底噪无混响。带背景音乐的参考音会把人声和音乐一起克隆进去。
  2. 分段合成:按标点切 1–2 句一次,句间留 120–200 ms。整段一次合成,句尾必变调。
  3. 统一响度:成片 -16 LUFS。TTS 输出音量和真人素材差很多,不统一就会出现「一会儿响一会儿轻」。
  4. 固定音色:一集里只用一份参考音频。换参考 = 换人,观众立刻听出来。

六、对口型:只改嘴,还是整头重做

方案效果适用代价
只重绘嘴部唇形准确,画面其余不动给已有素材换配音要求原片头部运动不大
整头音频驱动表情、眨眼、头动都对单图生成口播慢,且长镜头需要分块

短剧里我建议只做前者。因为视频段的时长只有 4–5 秒,头部运动幅度有限,只重绘嘴部就够;整头重做会把已经做好的构图和光影全部改掉,等于前面的工作白费。

顺序也要注意:先做响度归一再喂唇形模型。音频忽大忽小,唇形会跟着抖,这个问题九成的案例都是音频没预处理。

七、字幕:时间轴必须重新对齐

TTS 返回的时长是估算值,合成后的实际音频会有几十毫秒的偏差,短句看不出来,长句就明显对不上。正确做法是拿成品音频跑一次强制对齐(语音识别 + 时间戳),生成 SRT,而不是用 TTS 的时间戳。

断句也要按语义切,不要按字数切。中文 12–18 字一行,两行一屏,是最耐看的节奏。

八、批量调度:别用鼠标生产

一集 40 个镜头,每个镜头试 3 次才有一次可用,就是 120 次生成任务。手点是不可能的。

ComfyUI 提供 HTTP 接口,把工作流导出成接口格式的 JSON,用脚本改提示词和种子后提交,轮询完成状态,拉回结果。再加一层队列(Redis 或简单的文件队列都行),失败自动重试一次,再失败进死信队列人工看。

编排这一层可以交给 n8n:它负责定时触发、调用接口、把结果写进表格、出错发通知,具体玩法看 n8n 自建自动化工作流。这样你只需要在一张表里填剧本,剩下的交给机器过夜跑。

九、产能与成本模型

环节单集耗时(24G 卡)说明
分镜与提示词20 分钟本地 LLM,可批量
关键帧图像(40 张)30 分钟含挑图重生成
图生视频(40 段 × 3 次)8–12 小时最大的瓶颈,过夜跑
配音 + 对齐15 分钟CPU 也能跑
对口型1–2 小时只处理有台词的镜头
字幕与合成20 分钟FFmpeg 批处理

也就是说:一台 24 GB 的机器,一晚上能出一集 3 分钟的成片,可用率大概三成(每 10 段视频挑 3 段)。要提高可用率,把力气花在分镜和参考图上,而不是反复换模型。

十、五个最常见的失败模式

  • 角色变了:没做资产库,靠文字描述长相。文字描述跨镜头必崩。
  • 镜头跳:没用尾帧续接,靠后期硬切。观众会明显感觉「换了个片场」。
  • 嘴不对:音频没归一就直接喂唇形模型,或者拿 TTS 时间戳当字幕轴。
  • 越跑越慢:显存碎片累积,跑到第 60 段效率只剩一半。每 30 段重启一次进程。
  • 改不动:没留中间产物,客户说「第 3 集女主头发换个颜色」,只能重拍整集。

相关阅读