OpenAI

用 GPT-4 和 DALL-E3 搭营销号视频流水线:长文分镜与角色一致性怎么解

编辑部阅读约 8 分钟

从一段文案自动生成营销号风格短视频,流程大致是切片、TTS、结构化分镜、逐镜出图、合成视频。本文拆解每一步的工程细节,并重点讨论两个真正难的问题:多镜头之间主角和画风如何保持一致,以及长文本如何塞进上下文;同时给出可操作的缓解方案与检查清单。

一个「文案进、视频出」的自动化想法

短视频平台上有一类内容高度模板化:一段文案配 AI 配音,几张风格相近的图片轮播,字幕在底部滚动。既然文案、配音、画面都可以由模型生成,就有人把这条制作流程做成自动化流水线,接进自己的 AI 应用:粘贴一篇文章,选个音色,点一下,等几分钟拿到成片。视频生成模型尚未开放时,动态素材先用文生图顶替,等模型可用了再替换掉其中一步。

这类项目的价值并不在于「没人做过」——按关键词抓图配 TTS 的流水线早就出现过,剪辑软件也自带图文成片。真正有讨论价值的是把长文本、分镜、配音、合成串成一站式无人值守流程,以及由此暴露的两个关键问题:多镜头之间主角与画风的一致性,以及长文本如何塞进模型上下文。

流水线的六个阶段

一条完整的链路大致是这样的,每一步的产物都保存到文件,方便单步重跑。

阶段 输入 输出 关键点
文案准备 原始文章 清洗后的纯文本 去掉多余空行、markdown 符号、参考链接
切片分段 纯文本 段落列表 + 索引 按句边界切,避免断在引号或数字中间
TTS 合成 段落列表 音频分片 + 合轨 + 每段时长 参数统一,拼接后做响度归一化
分镜生成 段落 + 时长 JSON 分镜表 用结构化输出,字段固定
出图 分镜表 图片序列 统一尺寸与风格前缀
合成 图片 + 音轨 视频文件 以实际音频时长为准

切片:按语义而不是字数

不要把文本按固定字数切成片段,因为那样很容易切在句子中间,导致配音听起来一顿一顿,分镜也难对应。合理的做法是先按句号、问号、感叹号、分号和换行切成最小单元,再把过短的句子合并到长度上限附近,同时保留原文索引,便于回溯和校对。字幕、配音片段、分镜三者应当共用同一套片段编号,这是全流程对齐的基础。

TTS:先分片,再拼成一条音轨

分片合成有一个容易被忽略的好处:可以直接拿到每一段的真实时长,用来决定每张图的停留时间,音画同步问题自然就解决了。拼接时注意三点:

  • 所有分片使用同一音色、同一语速、同一采样率,否则接缝处会有明显顿挫;
  • 拼接完成后统一做一次响度归一化,避免音量忽大忽小;
  • 把每段时长写入中间文件,供分镜阶段使用。

分镜:让模型输出结构化 JSON

分镜阶段的输入是「段落文本 + 该段音频时长」,输出是一张表。用 JSON 模式或结构化输出,字段固定,缺字段时给默认值:

{
  "scenes": [
    {
      "id": 1,
      "text_ref": [1, 2],
      "duration_sec": 4.2,
      "visual_prompt": "雨夜的便利店门口,暖色灯光,平面插画风格",
      "camera": "slow zoom in",
      "caption": "字幕文本"
    }
  ]
}

提示词里明确约束:一个分镜对应一到两个段落,画面描述只写可视元素,不要写抽象情绪词,不要在图里生成文字(字幕后期加更可控)。模型给出的时长只是估计,最终以音频真实时长为准。

出图:把风格写进固定前缀

每次调用生图接口时,在画面描述前拼上同一段风格前缀,包括画风、色调、构图倾向和负面约束。这样即使内容各不相同,整条视频的画面也像出自同一套设计。图片尺寸要统一,后期用缓慢缩放或平移制造动态感,可以显著降低「PPT 感」。

合成:concat + 音轨

用 ffmpeg 的 concat 分离器按每张图的时长拼出无声视频,再叠加音轨:

file 'img/0001.png'
duration 4.20
file 'img/0002.png'
duration 3.10
file 'img/0002.png'

最后一行需要重复一次最后一张图,这是 concat 的已知行为。

ffmpeg -y -f concat -safe 0 -i scenes.txt -i voice.wav \
  -vf "scale=1280:720,format=yuv420p" \
  -c:v libx264 -r 30 -c:a aac -b:a 192k -shortest out.mp4

分歧一:全自动流水线是不是重复建设

常见的反对意见是「这类东西早有了」:文案由大模型生成,配音用 TTS,画面按关键词抓取,再加个过渡动画。消费级剪辑软件的图文成片功能也能做类似的事。

但两者面向的场景不同。剪辑软件适合人工精修,长文本需要自己分段、自己对齐,遇到几十分钟的稿子会很吃力;自建流水线的优势是无人值守、可批量、可复用同一套模板,适合需要持续产出同风格内容的场景。需要清醒的是,单纯「全自动」并不构成优势;真正能形成差异的是画面准确度、可编辑性以及出错后能否只重跑其中一步。如果打算对外提供服务,还要额外考虑素材版权和平台对批量生成内容的规范要求。

分歧二:主角不一致与长文上下文

这是整个流程里最棘手的问题。每次出图都是独立调用,同一篇文案里反复出现的主角,形象必然漂移。有人认为短期内无解,除非模型本身支持角色级别的定制。但实践中可以通过以下几种方式缓解,代价各不相同。

方案 A:把生图模型作为工具调用

不直接批量调用生图接口,而是把生图能力注册成模型可调用的工具,在同一个会话里逐镜生成。这样模型会继承前面已经写过的角色描述,画面连续性明显更好。

代价是 token 消耗成倍增长,长文本很快就会触及上下文窗口。可行的补救是滚动摘要:把已经确定的角色设定和已出分镜压缩成一段固定前缀,每次只保留最近几镜的细节。这套工程比较重,适合对一致性要求高的场景。

方案 B:角色卡 + 固定前缀(推荐作为基线)

先人工或半自动抽出一份「角色卡」:年龄、发型、服装、配色、体态、画风关键词,每条分镜的提示词都拼上同一段内容。成本最低、结果最可控,缺点是角色卡需要人来定,角色一多维护成本上升。

方案 C:首图锚定 + 图生图

先生成一张主角定妆图,后续镜头以它为参考图做图生图或风格迁移。效果取决于模型对参考图的支持程度,接口能力变化较快,使用前请以官方文档为准。

方案 D:在剪辑层统一

统一色调、统一滤镜、统一字幕模板,用后期掩盖素材之间的差异。这听起来像妥协,但对营销号风格的内容来说完全够用;观众对配图跳跃的容忍度本来就很高,真正影响观感的是字幕节奏和声音。

方案 一致性 成本 适用场景
工具调用 / 会话内继承 较好 高,token 成倍 角色反复出现、要求连贯
角色卡 + 固定前缀 中等 低 大多数批量场景
首图锚定 + 图生图 较好 中 模型支持参考图时
后期统一 一般 很低 画面要求不高的口播类

工程检查清单

  • 每步产物保存到文件:切片结果、音频分片、分镜 JSON、图片全部写入磁盘,失败时只重跑出错的那一步。
  • 幂等:用内容哈希做文件名,重复执行不会产生重复文件。
  • 限流与重试:生图接口通常有速率限制,加指数退避,并把失败的分镜单独列出来重试。
  • 先跑样片:先生成 30 秒到 1 分钟的短片,估算图片数量与 token 消耗,再决定整篇怎么跑。
  • 音画同步:一切时间轴以真实音频时长为准,不要用模型估计的时长直接排图。
  • 字幕处理:中文字体、换行位置、单行字数上限都要提前设定,标点结尾的句子不要拆成两行。
  • 临时文件清理:图片和音频累积很快,任务结束后按目录清理。
  • 日志留全:保存每步的提示词和返回原文,否则出了问题无从复现。
  • 账号体系:自建部署时注意登录流程,部分实例会限制邮箱后缀,注册成功后需手动登录而不是自动跳转。

长任务与运行环境

这条流水线是典型的长时间批量任务:TTS 分片、逐张出图、按镜头合成,一条几分钟的成片可能要跑十几分钟甚至更久。跑在本地笔记本上,休眠、断网、CPU 被占满都会让任务中断,前面已经付费生成的图片也就浪费了;调用境外模型接口时,网络抖动同样会导致批量任务中途失败。

如果只是偶尔生成一两条,本地跑完全够用。如果打算长期批量跑,把任务放到一台长期在线的机器上更稳妥——例如整机托管在境外机房的远程 Mac,按月租用、远程连接使用,本地只负责审核和上传;它的网络环境相对稳定,也能持续挂住 Claude Code 一类的长任务。这属于可选方案,不是必需品。

合规与风险提醒

自动化批量生产内容时,有几条底线需要提前想清楚:平台普遍要求对 AI 生成内容作出标识,部分平台对批量发布有明确限制,不要尝试用多账号或技术手段规避;配音音色需要有合法授权,不要克隆他人声音;按关键词抓取网络图片存在版权风险,用模型生成或使用有授权的素材更安全。以上规则更新较快,具体以各平台和模型服务方的最新说明为准。

小结

这条流水线的技术难度并不在每一步本身,而在把六个步骤稳定地串联起来,并且让失败可以局部重跑。切片和 TTS 决定听感,分镜结构决定可维护性,角色卡和后期统一决定画面观感。至于一致性,短期内的务实做法是「固定前缀 + 后期统一」,把工具调用和参考图留给真正需要连贯叙事的场景。

TTS自动化流水线营销号视频分镜生成DALL-E3