最近有一类剧集在海外平台上热度涨得很快:画面里没有一个真人演员,角色是 AI 生成的虚拟形象,配音由语音合成完成,剧情也是由大模型批量产出。海外观众照样追得很投入,评论区经常能看到“怎么更新这么快”“这一集反转也太多了”之类的留言。
很多人把这个现象理解为“虚拟角色动画火了”,但如果只看到这一层,会错过真正重要的变化。这类内容之所以能持续输出,核心不是角色有多好看,而是背后那条 AIGC 内容流水线,把短剧的“爽点密度”和“产能”同时拉高了。传统短剧要按场次拍摄、按演员档期排期,AI 生成短剧则把物理拍摄的限制基本移除了,剩下的问题变成:剧本够不够刺激、画面能不能持续稳定、配音和剪辑能不能跟上。
这篇文章我会从技术视角拆解这套“没有真人演员的短剧”生产线。它本质上是一条由大语言模型、文生图、视频生成、语音合成和剪辑工具串起来的 AI 工作流。文章会先讲清楚为什么这类内容能在海外走红,然后给出一个最小可运行的实现方案,包含剧本生成、角色形象生成、配音生成、视频合成等完整步骤,最后补充常见问题和工程建议。如果你正在做 AI 内容工具、短视频出海、虚拟 IP,或者只是好奇 AIGC 是怎么把一集短剧做出来的,这篇内容会比较适合你。
1. 为什么“一个真人都没有”的剧反而能火
先看内容层面的原因。爽剧的核心,是短时间内的强情绪刺激:被打压、反转、打脸、再反转。真人短剧不是不想把反转密度做高,而是做不到。一场戏需要场景、灯光、群演、服化道,演员状态不行还得重拍。这些物理成本决定了传统拍摄的节奏上限。
AI 生成短剧把这些约束基本移除了。画面由模型生成,角色由模型绘制,配音由语音合成完成,场地、天气、服装切换几乎是零成本。剧本阶段就可以把“每隔几秒抛一个钩子”作为明确的生成策略,画面阶段再按剧本逐条渲染。结果就是:观众看到的内容密度很高,高到不像是传统剧组能低成本批量产出的东西。
再看生产层面。传统短剧从剧本到成片,以周为单位是正常的。AI 短剧流水线把剧本、分镜、配音、剪辑拆成几个相对独立的环节,每个环节都能用模型批量处理。只要把提示词模板和中间文件格式定好,一集 40 秒到 60 秒的短剧,可以在很短时间内完成初版。
海外平台对这类内容的接受度也起到了放大作用。短视频平台和流媒体平台都在大量消耗短内容,AI 生成短剧刚好补上了供给。观众不需要知道幕后是真人还是模型,只要剧情节奏足够刺激,就会持续观看。这个现象的本质,是内容生产方式的变化,而不是某个作品的偶然爆火。
2. AIGC 短剧的核心概念与适用场景
在拆解技术方案之前,先把几个概念说清楚。
AIGC 是“AI 生成内容”的统称,包括文字、图片、音频、视频。AI 短剧不是某一个模型独立完成的,而是多个模型分工协作:大语言模型负责剧本,文生图模型负责角色和分镜,语音合成模型负责配音,视频生成模型负责把分镜变成动态画面,最后再用剪辑工具合成。
大语言模型(LLM)大家已经不陌生了。它在这里承担的是编剧工作:根据题材、角色设定、单集时长,生成结构完整的分场剧本。这个环节的关键不是“让模型写得华丽”,而是用清晰的提示词约束输出格式,让后续环节可以直接消费结果。
文生图模型负责把剧本里的角色和场景变成视觉图像。要做到角色稳定,通常需要在提示词里固定角色描述,或者使用参考图、LoRA 等方式。如果每次生成的造型都不一样,观众就会觉得角色“飘了”,这是 AI 短剧最常见的问题之一。
语音合成(TTS)负责给角色配音。现在不少 TTS 工具已经能输出带情绪的语音,中文、英文等多语言也都有对应音色。对于出海内容来说,TTS 是多语言生产的关键环节。
视频生成模型负责把静态分镜变成短视频片段。目前视频生成模型的成本仍然高于图片生成,所以实际项目里常见做法是:先低成本生成分镜图确认画面,再对需要动态效果的镜头做视频生成。如果预算有限,也可以用“静态图 + 镜头推拉 + 转场”的方式先跑通流程。
下面用表格对比一下真实短剧和 AI 短剧在生产链路中的主要差异:
| 对比维度 | 传统真人短剧 | AI 生成短剧 |
|---|---|---|
| 演员 | 需要真人演员,受档期和状态影响 | 虚拟角色,由模型生成 |
| 场景 | 实景或搭景,成本高 | 由文生图/视频生成,切换灵活 |
| 拍摄周期 | 按天或周计算 | 按小时或天计算 |
| 反转密度 | 受拍摄成本限制 | 可在剧本阶段按目标设计 |
| 多语言能力 | 需要配音演员和翻译团队 | TTS 可快速批量生成 |
| 稳定形象 | 演员天然保持一致 | 需要提示词、参考图辅助保持 |
| 版权风险 | 涉及演员肖像、剧组版权 | 涉及模型使用条款和素材授权 |
适用场景方面,AI 短剧比较适合以下几类需求:网文或轻小说改编的快速试片、面向海外市场的多语言短剧、奇幻和科幻题材(实拍成本高)、小团队做内容验证、虚拟角色 IP 的日常内容更新。
不适合的场景也很清楚:需要真人表演细腻情绪的剧情、品牌广告要求的真实质感、需要严格版权归属的商业大片。AI 短剧更适合做一个“快速验证和批量产出”的工具,而不是取代传统影视制作。
新手最容易误解的一点是:以为 AI 短剧是“输入一句话,自动生成一整部剧”。实际工程化路径恰恰相反,它更像一条工厂流水线,每一步都有独立的输入、输出和校验环节。理解这一点,后面看代码才能知道每个文件在做什么。
3. AI 短剧流水线的整体架构
把“没有真人的短剧”拆开看,它是下面这条流水线的产物:
第一步:剧本生成。大语言模型根据题材、角色、目标时长输出分场剧本。这一步的产物建议是结构化文本,比如 JSON,里面包含场景序号、场景描述、角色、台词、动作说明。后续所有环节都依赖这个文件,所以结构一定不能乱。
第二步:角色设计与分镜图生成。根据剧本中的角色描述,用文生图模型生成角色立绘。然后给每个场景生成对应的分镜图。分镜图是后续视频生成的底图,质量直接影响最终画面效果。
第三步:视频片段生成。把关键分镜图输入视频生成模型,配合镜头运动的提示词,生成 3 到 8 秒的动态片段。这个环节成本最高,需要按镜头表逐条处理,而不是把整集一次性交给模型。
第四步:配音生成。从剧本中提取台词,交给 TTS 生成配音。为了减少音画不同步问题,最好按场景逐条生成,而不是生成一整个长音频再慢慢对齐。字幕文件也可以在这一步从剧本导出。
第五步:剪辑合成。用 ffmpeg 把视频片段和对应音频合在一起,再按场景顺序拼接,最后输出成片。如果需要字幕,可以用 ffmpeg 烧录字幕,也可以把字幕文件单独导出。
这几个环节的产物分别是:剧本 JSON、角色卡、分镜图、视频片段、音频文件、字幕文件、最终成片。工程上建议把中间产物统一存放在一个项目目录里,按集数建子目录,这样排查问题会容易很多。
这套架构的核心价值在于:每个环节都可以独立替换。今天你用的文生图模型效果不好,可以只换这一环;明天想改配音音色,也不用重做画面。理解了这条流水线,再去看各类 AI 视频工具的定位,会清楚很多。
4. 环境准备与前置条件
实操部分以 Python 为主,配合 ffmpeg 完成视频合成。以下是基础环境要求:
- 操作系统:Windows 10/11、macOS 或 Linux 均可。
- Python:建议 3.9 以上。示例基于 Python 3.10 编写,其他版本逻辑一致。
- ffmpeg:需要单独安装,用于音视频合成和拼接。
- API Key:至少准备一个支持大语言模型和文生图的服务商 Key;如果只用本地开源模型,则需要对应显卡和模型运行环境。
- 网络:需要能访问你使用的模型服务商接口。
先创建项目目录和虚拟环境:
mkdir ai-sdrama cd ai-sdrama python -m venv venv # Windows venv\Scripts\activate # macOS / Linux source venv/bin/activate安装 Python 依赖。这里用到两个常用的库:OpenAI 的 Python SDK(用于调用大语言模型和文生图接口)和 edge-tts(用于生成配音)。版本以当前最新稳定版为准:
pip install openai edge-tts验证 ffmpeg 是否已安装:
ffmpeg -version如果提示找不到命令,需要先安装 ffmpeg。macOS 可以用 Homebrew:
brew install ffmpegUbuntu/Debian 可以用 apt:
sudo apt update sudo apt install ffmpegWindows 用户建议直接下载 ffmpeg 官方编译包,把 bin 目录加入系统 PATH。
接下来配置环境变量。不要在代码里硬编码 API Key,要使用环境变量:
# macOS / Linux export OPENAI_API_KEY="你的服务商Key" # Windows PowerShell $env:OPENAI_API_KEY="你的服务商Key"如果你用的是兼容 OpenAI 接口的其他服务商,还需要额外配置接口地址:
export OPENAI_BASE_URL="你的服务商接口地址"环境准备阶段最容易被忽略的是 API Key 泄露问题。不要有把 Key 提交到 Git 仓库,项目里建议加上.gitignore文件,把.env、venv/、中间产物目录都忽略掉。
如果没有独立显卡,也不用担心。流水线里最重的视频生成环节可以通过服务商 API 完成,本地只跑轻量脚本和 ffmpeg,普通办公电脑就能跑通整条流程。
5. 核心流程与代码实现
下面用一个“都市奇幻”题材的单场景短剧作为示例,走通整个流水线。示例会按顺序生成剧本、角色图、配音和最终视频文件,每一步都有明确的文件输出。
5.1 用大模型生成剧本
剧本是整个流水线的起点。为了让后续环节可以直接消费,提示词里要明确指定输出格式。创建一个generate_script.py:
# generate_script.py import os from openai import OpenAI client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"), # 兼容接口地址,可省略 ) scene_prompt = """ 请为一个视频短剧生成第 1 集分场剧本。 题材:都市奇幻 主角:林冬,28 岁,网页设计师,性格谨慎但容易心软 配角:周野,超市店员,话痨,热心肠 设定:主角获得一只能看到他人“未来一小时”的手表 单集时长:约 40 秒 台词语言:中文 输出要求: 1. 只输出 3 个场景 2. 每个场景包含场景序号、场景描述、角色、台词、动作说明 3. 用 JSON 数组格式输出,不要输出额外解释 """ response = client.chat.completions.create( model="gpt-4o-mini", # 以你的服务商实际支持的模型为准 messages=[ {"role": "system", "content": "你是一个专业的短剧编剧。"}, {"role": "user", "content": scene_prompt}, ], max_tokens=1500, temperature=0.8, ) print(response.choices[0].message.content)运行脚本:
python generate_script.py > script.json建议先直接在控制台看一次输出,确认格式是否符合预期,再重定向到文件。如果服务商输出不稳定,可以在提示词里增加“必须返回合法 JSON,不要包含 markdown 代码块标记”这类约束。
这一步容易踩的坑是:max_tokens设得太小,导致剧本被截断。40 秒的短视频虽然不长,但三个场景加上动作说明,内容量并不小。如果输出总是被截断,可以分集生成,或者把max_tokens调大。
5.2 生成角色形象与分镜图
拿到剧本后,下一步是生成角色形象。创建一个generate_image.py,这里以 OpenAI 的文生图接口为例:
# generate_image.py import os from openai import OpenAI client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"), ) character_prompt = ( "动漫风格全身立绘,年轻中国男性角色," "黑色短发,戴细框眼镜,穿灰色连帽卫衣," "双手插兜,表情谨慎,背景为浅蓝色纯色背景" ) response = client.images.generate( model="dall-e-3", # 以服务商支持的文生图模型为准 prompt=character_prompt, size="1024x1024", quality="standard", n=1, ) image_url = response.data[0].url print("角色形象图地址:", image_url)如果服务商不支持直接返回 URL,可能需要下载图片到本地。可以用requests或urllib实现:
# 继续上面的脚本,下载图片到本地 import urllib.request urllib.request.urlretrieve(image_url, "character_lin_dong.png") print("已保存到 character_lin_dong.png")分镜图可以按照同样方式生成。关键在于提示词要沿用同一个角色描述,并把场景信息写进去。比如:
scene_image_prompt = ( "动漫风格,年轻中国男性角色,黑色短发,戴细框眼镜," "穿灰色连帽卫衣,站在便利店门口," "低头看着手表,表情惊讶,夜晚霓虹灯光" )角色一致性是这一步的难点。纯靠文字提示词生成的角色,每次风格都可能漂移。要解决这个问题,通常有几种做法:使用参考图(图生图)、使用角色 LoRA 模型、或者在提示词里固定非常具体的视觉特征。对个人项目来说,先把描述写固定,配合参考图,是一个成本可控的起点。
5.3 用 TTS 生成配音
配音环节用 edge-tts,这是一个开源免费的语音合成库,支持多种语言和音色。创建generate_voice.py:
# generate_voice.py import asyncio import edge_tts async def main(): text = "林冬愣了一下,手表上的数字正在变化,他必须在十分钟内做出选择。" tts = edge_tts.Communicate(text, voice="zh-CN-YunxiNeural") await tts.save("scene_001_voice.mp3") asyncio.run(main())运行脚本:
python generate_voice.pyedge-tts 也支持命令行直接使用:
edge-tts --text "林冬愣住了。" --voice zh-CN-XiaoxiaoNeural --write-media scene_001_voice.mp3要注意音色选择和台词语言的一致性。如果台词是中文,用zh-CN开头的音色;如果是英文,用en-US或en-GB开头的音色。生成配音后,建议先播放听一遍,确认语速和语气是否符合场景情绪。
如果需要更丰富的情绪表现,可以看具体 TTS 服务是否支持语气参数。不过对于 40 秒的短剧,先把清晰度和节奏搞定,情绪可以放在后续迭代里优化。
5.4 生成视频片段
视频生成环节的接口差异比较大,不同服务商的参数、时长限制、价格都不一样。下面是一段通用调用思路的示意代码,不代表某个特定厂商的正式 API:
# generate_video_demo.py(示意代码,按你实际使用的视频生成服务商文档调整) import requests # 这里替换为你实际接入的图生视频服务地址 video_api_url = "https://your-video-api.example/v1/video" payload = { "image": "scene_001_frame.png", # 上一步生成的分镜图 "prompt": "镜头缓慢推进,角色低头看手表,表情从疑惑变成惊讶", "duration": 5, } resp = requests.post(video_api_url, json=payload, timeout=30) result = resp.json() print("视频任务ID:", result.get("task_id"))实际接入时,很多视频生成服务采用异步任务模式:提交任务后返回一个任务 ID,然后轮询任务状态,生成完成后下载视频文件。过程中要注意超时和重试机制,因为视频生成通常比图片生成慢得多。
如果暂时没有视频生成服务,也可以先用“静态分镜图 + 慢速缩放 + 转场”的方式做出动态感。ffmpeg 本身支持缩放和位移效果,可以把静态图变成一段缓慢运动的视频。这种做法适合早期验证剧情和配音,等确认剧本可行之后再投入视频生成成本。
5.5 用 ffmpeg 合成成片
视频片段和配音都准备好后,开始合成。先用 ffmpeg 把单个场景的视频和音频合成:
# 将场景画面与配音合成一个文件 ffmpeg -y -i scene_001_video.mp4 -i scene_001_voice.mp3 \ -c:v copy -c:a aac -b:a 192k scene_001_final.mp4如果场景画面是静态图,需要先把图片转成视频:
# 将静态图生成 5 秒视频,并加入配音 ffmpeg -y -loop 1 -i scene_001_frame.png -i scene_001_voice.mp3 \ -c:v libx264 -t 5 -pix_fmt yuv420p \ -c:a aac -b:a 192k scene_001_final.mp4多个场景合成一集,可以先用一个文本文件列出拼接顺序:
# 生成拼接列表 concat.txt printf "file 'scene_001_final.mp4'\nfile 'scene_002_final.mp4'\nfile 'scene_003_final.mp4'\n" > concat.txt再使用 ffmpeg concat 协议拼接:
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy episode_001.mp4注意:concat 协议要求所有待拼接视频的编码参数一致。如果不同场景的编码格式、分辨率、帧率不同,需要先统一转码,否则拼接会失败或出现花屏。
6. 运行结果与效果验证
跑完上面几个脚本后,项目目录下预计会有这些文件:
character_lin_dong.png scene_001_frame.png scene_001_voice.mp3 scene_001_video.mp4 scene_001_final.mp4 episode_001.mp4每个环节都要单独验证,不要等到最后合成完才回头看。
验证剧本时,要检查三个点:JSON 格式是否合法、台词是否和角色人设一致、每场戏是否有明确的冲突或情绪变化。可以在终端里用python -m json.tool script.json检查 JSON 合法性。
验证图片时,重点看角色一致性。把角色图和每个场景分镜图放在一起对比,确认发型、服装、脸型没有明显跑偏。如果偏差大,先检查提示词是否统一,再考虑引入参考图。
验证配音时,听两件事:发音是否准确、语速是否和画面节奏匹配。配音太长,视频画面不够用,会音画不同步;配音太短,又会让画面显得拖沓。建议在合成之前先记录每段配音的时长,再设置对应的视频时长。
验证最终成片时,用播放器完整看一遍,重点检查:每个场景切换是否顺畅、音画是否同步、结尾是否突然中断。最好在项目里保留一个记录各文件时长的清单,方便出现问题的时候快速定位。
如果最后episode_001.mp4没有生成,第一步不是重新跑脚本,而是先看错误日志。ffmpeg 报错会直接显示在终端里,常见原因集中在输入文件不存在、编码参数不匹配、文件路径有空格这几种情况。
7. 常见问题与排查思路
下面是 AI 短剧流水线运行过程中比较常见的问题,按“现象、可能原因、排查方式、解决方案”整理成表:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 大模型输出不是 JSON | 提示词约束不够强硬 | 查看原始输出内容 | 追加“必须返回合法 JSON,禁用 markdown 标记”,或改用结构化输出功能 |
| 剧本被截断 | max_tokens 设置过小 | 检查输出末尾是否完整 | 调大 max_tokens,或按集/按场景拆分生成 |
| 角色形象每张图都不一样 | 提示词未固定角色特征 | 对比各分镜图的提示词 | 统一角色描述,使用参考图或 LoRA 固定风格 |
| 生成图片风格不稳定 | 模型版本或风格词不一致 | 检查提示词是否有歧义 | 开头统一加入风格定式词,例如“动漫风格,同一角色” |
| TTS 发音奇怪 | 音色语言与台词语言不匹配 | 听配音确认语言 | 切换对应语言的音色 |
| 合成后音画不同步 | 配音时长与视频时长不一致 | 查看音频和视频各自时长 | 先统一时长,或使用-shortest参数控制输出 |
| 视频生成 API 超时 | 任务量过大或服务排队 | 查看服务商任务状态 | 拆成更小片段,使用异步轮询确认状态 |
| 拼接视频失败 | 片段编码参数不一致 | 查看 ffmpeg 报错信息 | 先用相同参数统一转码,再执行 concat |
| 本地显存不足 | 视频生成模型过大 | 查看资源占用情况 | 改用 API 服务、量化模型或降低分辨率 |
| 成片内容明显不对 | 中间产物与剧本脱节 | 逐一检查剧本、分镜、配音文件 | 每步生成后都做人工抽检,先小批量再批量 |
这里的核心思路是:把每个环节的产物都当成可验证的中间结果,不要把所有问题都留到最后一步。AIGC 工具存在的问题,往往不是“能不能生成”,而是“能不能稳定、可控地生成”。
8. 最佳实践与工程建议
把这套流水线从“能跑”做成“能稳定生产”,有几点工程建议值得提前考虑。
第一,把角色信息抽成独立的角色卡文件。角色卡包含姓名、年龄、外观、服装、性格、常用动作等结构化字段。所有提示词都从角色卡组装,而不是每次手工粘贴。这样不仅有利于团队协作,也能降低角色漂移的概率。
第二,定义清晰的中间产物规范。建议整个项目统一用 JSON 保存剧本和镜头表,命名规则类似ep01_scene03.json。中间文件名要包含集数和场景编号,方便出问题后快速定位。
第三,API 调用必须做异常处理和重试。无论是大模型接口还是视频生成接口,都可能出现网络超时、限流、服务暂不可用的情况。建议在重试时加入退避策略,避免连续打爆服务端。同时要把每次调用的输入和输出都记录到日志,方便追查问题。
第四,严格控制成本。视频生成模型的成本通常远高于文本和图片生成。建议先花少量成本跑通一集 30 秒的样片,确认剧本和角色风格没问题后,再批量生产。批量场景可以优先用静态图加镜头运动,只在关键反转场景使用视频生成。
第五,注意版权与平台合规。使用开源模型时要看模型的开源许可,使用商业 API 时要看服务条款,尤其是生成内容能否商用。素材、配音、字体都要确认授权。内容本身更不能触碰违法和有害底线,尤其不能用于生成虚假信息、伪造名人形象、色情暴力等内容。
第六,多语言出海时要加入翻译质检环节。用大模型翻译台词后,最好让懂目标语言的人抽查一遍,避免文化表达不符或翻译生硬。TTS 生成的语音也要抽查,确认目标语言音色自然,而不是简单把中文口音硬切到英文。
第七,警惕“看起来没真人”带来的信任问题。越来越多平台要求对 AI 生成内容做标识。合理的做法是在视频简介或字幕中明确标注“本内容由 AI 生成”,既符合平台规范,也能减少用户误解。
9. 总结与后续学习方向
回到最初的问题:为什么一个真人都没有的爽剧,能让海外观众持续上头?答案不在“没有真人”这个表面特征,而在 AIGC 让短剧生产的输入输出比发生了改变。以前做一个 40 秒的高密度反转短剧,需要完整的剧组;现在同一段内容,可以拆成剧本生成、角色生成、配音生成、视频合成四个可控环节,每个环节都有模型和工具兜底。这种变化,才是内容产能提升的真正原因。
如果你准备动手实践,我的建议是先不要追求质量,而是用文中的最小示例跑通一集 30 秒到 40 秒的单场景内容。把剧本、角色图、配音、成片这四个产物完整生成一遍,确认每一步的输入输出格式,再逐步增加场景数量和视频生成环节。这样做的价值在于:你会在实际操作中建立起对整套工作流的直觉,知道哪一步成本高、哪一步最容易出问题、哪些地方可以替换成更好的模型。
后续值得深入研究的方向有几个:角色一致性的工程化方案(参考图、LoRA、ControlNet 的组合使用)、视频生成模型在不同镜头运动下的参数调优、用工作流引擎或 Agent 把五个环节自动串联起来、多语言内容的质量评估体系。每一个方向,都能把这条“没有真人演员的爽剧”生产线往前推一步。
这套技术栈并不复杂,真正考验工程能力的是稳定性和一致性。先跑通,再优化,是相对稳妥的路径。