
最近有一类剧集在海外平台上热度涨得很快画面里没有一个真人演员角色是 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 可以用 Homebrewbrew install ffmpegUbuntu/Debian 可以用 aptsudo 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_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL), # 兼容接口地址可省略 ) scene_prompt 请为一个视频短剧生成第 1 集分场剧本。 题材都市奇幻 主角林冬28 岁网页设计师性格谨慎但容易心软 配角周野超市店员话痨热心肠 设定主角获得一只能看到他人“未来一小时”的手表 单集时长约 40 秒 台词语言中文 输出要求 1. 只输出 3 个场景 2. 每个场景包含场景序号、场景描述、角色、台词、动作说明 3. 用 JSON 数组格式输出不要输出额外解释 response client.chat.completions.create( modelgpt-4o-mini, # 以你的服务商实际支持的模型为准 messages[ {role: system, content: 你是一个专业的短剧编剧。}, {role: user, content: scene_prompt}, ], max_tokens1500, temperature0.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_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_BASE_URL), ) character_prompt ( 动漫风格全身立绘年轻中国男性角色 黑色短发戴细框眼镜穿灰色连帽卫衣 双手插兜表情谨慎背景为浅蓝色纯色背景 ) response client.images.generate( modeldall-e-3, # 以服务商支持的文生图模型为准 promptcharacter_prompt, size1024x1024, qualitystandard, n1, ) 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, voicezh-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, jsonpayload, timeout30) 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 把五个环节自动串联起来、多语言内容的质量评估体系。每一个方向都能把这条“没有真人演员的爽剧”生产线往前推一步。这套技术栈并不复杂真正考验工程能力的是稳定性和一致性。先跑通再优化是相对稳妥的路径。