零成本AI短剧从一句话到成片:本地开源工具链全流程实战
前几天我折腾了一件挺上瘾的事:只给 AI 一句话,没用任何付费服务,也没买任何会员,就在本地电脑上跑出了一部 60 秒的 AI 短剧。整个过程花了不到两小时,成本是零。
这里的“AI 短剧”不是拿模板套出来的幻灯片,而是完整走完一条链路:一句话剧本 → 大模型扩展成脚本 → AI 绘图生成分镜画面 → 图生视频让静态画面动起来 → 本地 TTS 配音 → 剪辑合成出片。每一步用的都是开源模型或免费工具,只要电脑有一块能跑的 NVIDIA 显卡,就能复现。
这篇文章适合两类人:一是想快速验证“AI 视频到底怎么落地”的产品经理和创作者,二是手里有显卡但不知道能拿来干点什么的折腾党。我会把每个环节的提示词、参数和踩坑记录都放出来,你照着抄就行。
1. 项目思路拆解:为什么“一句话”也能变成短剧
说到 AI 生成短剧,很多人第一反应是“那不得用云端大模型、买一堆 API 额度吗”。实际不是这样。把一句话变成一部短剧,本质上是把创作流程拆成五个可自动化的环节,而每个环节现在都有开源的免费方案。
1.1 一个容易被低估的完整链路
大多数人只听说过 AI 绘画,或者只听说过大模型写文案,但 AI 短剧真正难的不是某一个环节,而是把环节串起来。我实测下来最顺的链路是:
- 用本地大模型把一句话扩展成带分镜的脚本
- 用 Stable Diffusion 按分镜逐张生成画面
- 用图生视频模型把每个画面变成 2~4 秒的动态片段
- 用 TTS 引擎给台词配音
- 用剪辑工具把片段拼起来,加字幕和背景音乐
这条链路里最容易被低估的是“分镜脚本”这一步。很多人让 AI 写出来的剧本是小说式的,没法直接变成画面。真正能用的脚本必须自带镜头号、景别、画面描述、台词和时长,这样后面每一步才有据可依。
我一开始也犯过这个错误。第一次尝试时我直接把一句话丢给大模型,让它写个短故事,结果出来一段 800 字的抒情散文,我盯着看了半天也不知道该怎么画。后来换成“请输出分镜表”的指令,一切才顺畅起来。所以后面所有实操环节,我都会强调同一件事:先把“文字翻译成镜头”这件事做扎实,后面才不会有返工。
1.2 工具选型:零元与本地怎么兼得
先解决“零元”的质疑。我选的这套方案全是免费开源或免费个人使用的工具:
| 环节 | 工具 | 是否免费 | 运行方式 |
|---|---|---|---|
| 剧本扩展 | Ollama + Qwen2.5 7B | 免费开源 | 本地 |
| 分镜绘图 | Stable Diffusion WebUI | 免费开源 | 本地 |
| 图生视频 | Stable Video Diffusion / AnimateDiff | 免费开源 | 本地 |
| 配音 | edge-tts | 免费 | 命令行 |
| 剪辑 | FFmpeg + 剪映免费版 | 免费 | 本地 |
这套组合的硬性要求只有一条:一张 NVIDIA 显卡。8GB 显存体验比较舒服,6GB 也能靠降分辨率硬跑。如果你用的是 Mac,SD 部分也能用 Apple Silicon 的 MPS 后端跑,但 SVD 视频生成对显存要求高,体验会弱一些。
为什么不用纯在线服务?因为在线服务要么有免费额度限制,要么生成的视频会自动加水印,而且很多平台对提示词限制很多,本地跑就没有这些烦恼。更重要的是,本地跑还顺手解决了隐私问题——剧本和画面都不用上传到别人的服务器,这对做原创内容的人来说是个隐性优势。
2. 核心细节:把一句话拆成剧本、分镜与画面
流程跑通之后,你会发现真正决定成片质量的,不是模型选得有多高级,而是“文字转画面”这个翻译环节做得好不好。下面我把这个环节拆开讲。
2.1 让大模型替你写脚本:提示词里必须包含什么
我用来测试的一句话是:凌晨三点的便利店里,一位失眠的上班族遇到了一个会说话的关东煮锅,锅里翻滚的萝卜告诉他,明天你会拿到年终奖。
直接把这句话丢给大模型,它会给你写一段 500 字的叙述文,这不是我们要的。正确的做法是把约束条件写进提示词:输出分镜表、固定镜头数、指定风格、限制台词长度。我的完整提示词是这样的:
你是一个微短剧编剧。请把下面这句话扩展成 60 秒以内的治愈系短剧脚本:
"凌晨三点的便利店里,一位失眠的上班族遇到了一个会说话的关东煮锅,锅里翻滚的萝卜告诉他:明天你会拿到年终奖。"
要求:
1. 输出 6 个镜头的分镜表,包含镜头号、画面描述、景别、镜头运动、时长、台词;
2. 画风为日式治愈系;
3. 台词口语化,每句不超过 20 个字;
4. 最后给出一段 20 字以内的片名建议;
5. 只输出分镜表和片名,不要多余的说明。
在 Ollama 里运行:
ollama run qwen2.5:7b
然后把提示词粘进去。Qwen 2.5 的输出质量在 7B 级别里相当能打,分镜表的格式基本不会乱。如果没有装 Ollama,去官网下载安装包,装完跑一条命令把模型拉下来就行。
如果模型偶尔抽风,输出的分镜表格式乱了,最省事的办法不是换模型,而是把输出内容和要求格式一起再粘回去,让它重新整理一遍。实测下来这招成功率很高,比反复改提示词更省时间。
2.2 分镜设计:从文字到镜头的翻译
大模型返回的分镜表需要人工过一遍。千万不要偷懒直接跳过,因为模型经常会出现两个镜头之间动作不连贯的问题。我拿到后手动调整成了这样:
| 镜号 | 画面描述 | 景别 | 时长 | 台词/音效 |
|---|---|---|---|---|
| 1 | 雨夜便利店外景,霓虹灯亮着 | 远景 | 4s | 环境音:雨声 |
| 2 | 上班族推门走进,表情疲惫 | 中景 | 5s | 无 |
| 3 | 关东煮锅里萝卜翻滚特写 | 特写 | 4s | 咕嘟声 |
| 4 | 萝卜开口说话,热气升腾 | 近景 | 5s | “明天,你会拿到年终奖。” |
| 5 | 上班族瞪大眼睛,手里饭团差点掉 | 近景 | 5s | 无 |
| 6 | 窗外天快亮了,主角走出便利店 | 全景 | 6s | 鸟叫声起 |
分镜的原则是:全局先有一个交代环境的空镜,再推进到角色动作,最后落到情绪变化。这样即使生成的视频只有几秒钟,观众也能看懂发生了什么。做完这步,这部短剧的骨架就出来了,后面完全是执行问题。
我还会顺手把每个镜头的“情绪关键词”标出来,比如第 3 镜是“温暖又诡异”,第 5 镜是“震惊但有点好笑”。到后面写 AI 绘画提示词时,这些情绪词可以直接转换成光照和镜头描述,帮助模型更准确地抓感觉。
2.3 提示词公式:让 Stable Diffusion 稳定出图
到了 AI 绘图这一步,最核心的是提示词。我用的是一个五段式公式:主体 + 动作 + 环境 + 光线 + 画风。以第 3 镜为例,正向提示词写成:
(close-up:1.2), a daikon radish in a steaming oden pot,
boiling broth, bubble, warm light, convenience store counter,
shallow depth of field, anime style, clean lines, high quality
负面提示词固定为:
lowres, bad anatomy, bad hands, extra fingers, blurry,
watermark, text, jpeg artifacts, ugly, deformed
画风关键词我建议统一用 anime style + clean lines,这样多张图之间风格才接近。不要每张图换一种画风描述,否则最后剪出来会像不同剧组拍的。镜头语言也要克制,特写用 close-up,远景用 wide shot,加权重用括号和冒号控制,别全堆成 1.5,容易把画面撑变形。
主模型我用的 Anything V5,这个模型对动漫和治愈系插画支持很好,出图色彩干净,很少出现水彩糊成一团的情况。想追求更精致的光影可以换 CounterfeitXL,但对显存要求更高。如果你用的是在线绘图工具,逻辑也一样,只需要把五段式提示词翻译成对应工具能识别的格式就行。
2.4 角色一致性:从源头管好一张脸
AI 短剧最常见的翻车点就是“上一秒还是这个人,下一秒换了张脸”。三个办法叠加使用,基本能稳住。
第一,固定 seed。在 Stable Diffusion WebUI 里,同一组提示词和参数下,固定 seed 就能保证同一个人物一致性。第二,把人物描述词原封不动复制到每个分镜里,比如“a tired young man in a gray suit”,不要今天写西装明天写卫衣。第三,如果还不行,就给角色单独训练一个 LoRA,或者用 IP-Adapter 的 reference 模式,把第一张生成好的角色图作为参考图,后续画面都会往这张脸靠拢。
角色一致性越早重视越好,因为后期修补的成本极高。我第一版就是因为 6 张图里主角看起来像 3 个人,最后不得不全部重新生成。当时的感觉是真的想砸键盘,但冷静下来之后把角色锚点图定了,问题一次性解决。
3. 实操过程:本地零成本跑通全流程
这一节是完整的实操记录,每个环节按顺序来。假设你已经装好了 Ollama 和 Stable Diffusion WebUI。
3.1 环境准备:装好本地大模型和绘图界面
Ollama 就一条命令:
ollama run qwen2.5:7b
Stable Diffusion WebUI 用 git 拉下来:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
./webui.sh
视频生成的方案我推荐 ComfyUI,因为 SVD 和 AnimateDiff 的节点生态更成熟。ComfyUI 装好后,把 stable-video-diffusion-img2vid-xt 模型放到 models/checkpoints 目录就行。这套环境装完,剩下的就是“出图→出视频→配音→剪辑”的流水线。
如果你之前没用过 ComfyUI,也不用太紧张。SVD 有个很经典的基础工作流,从 Load Image 节点开始,经过 SVD_img2vid_Conditioning、KSampler、VAE Decode,最后从 Save Video 节点输出。网上随便一搜就有现成的工作流 JSON,拖进去就能用,没有必要自己从零画节点。
3.2 步骤一:一句话生成完整脚本
按 2.1 节的提示词在 Ollama 里执行,模型会在几十秒内吐出分镜表。拿到后手动检查一遍时间线和动作衔接,前面分镜表里那 6 个镜头就是这么来的。这一步的快慢取决于你的显卡和模型大小,7B 量化模型在 8GB 显存上大概每秒生成 20 到 40 个 token,一分钟内肯定能跑完。
记得让模型把片名也生成出来。我这个案例它给的名字叫《萝卜的预言》,我觉得还挺有网感,就直接用了。如果模型给你的片名太文艺或者太中二,自己随手改一个就好,这个环节不用被 AI 带着走。
3.3 步骤二:分镜脚本生成图片
把分镜表逐条翻译成 SD 提示词,使用 2.3 节的公式。我的参考参数是:
| 参数 | 值 |
|---|---|
| 分辨率 | 768x432(16:9) |
| 采样器 | DPM++ 2M Karras |
| 步数 | 28 |
| CFG | 7 |
| seed | 固定 12345 |
| 高清修复 | 开启,1.5 倍 |
| ADetailer | 开启,修脸 |
每一张图生成后都要放大检查脸部。ADetailer 能救大部分脸崩,但如果整体构图都崩了,果断换参数重出,不要舍不得。6 个镜头大概要出 20 到 30 张图,从中挑 6 张最好的,放到一个文件夹里备用。
出图时还有个经验:不要只生成一张就收工,而是每个镜头用同一个 seed 批量出 4 到 6 张,然后在里面挑脸最正、构图最舒服的。批量出图在 WebUI 的 Script 里选 X/Y/Z plot 或者简单循环都能实现,反正本地跑不花钱,多跑几张就当给自己多点选择。
3.4 步骤三:图片变成视频片段
在 ComfyUI 里加载 SVD 工作流,把刚才选好的图片逐张喂进去。关键参数是:
- video_frames:14(大约 2 秒)
- fps:7
- motion_bucket_id:127
- cond_aug:0.02
motion_bucket_id 控制运动强度,数值越大动作越猛。治愈系短剧 127 够用了,太大的话画面容易抽搐。SVD 生成的片段有轻微流动感,像手绘动画活过来的效果,正好符合日系治愈风。
如果你是第一次用,建议先拿一张图跑通工作流,再批量处理。每张图生成 14 帧大约需要半分钟到两分钟,取决于显存。6 段视频出来后,用 ffmpeg 统一转成 mp4 备用:
ffmpeg -i output_01.gif -pix_fmt yuv420p clip_01.mp4
注意:SVD 单个片段只有 2 秒左右,别指望一个镜头撑完 6 秒。实际使用中我会把一个镜头拆成两段甚至三段生成,中间用转场叠化衔接,观感上就是一整段流畅的画面。这个办法治好了我“一个镜头只能动两秒”的焦虑。
3.5 步骤四:给短剧配音
配音我用 edge-tts,这是微软的免费语音合成命令行工具,音色自然,比很多付费 TTS 都强。安装和生成一条语音只需要两条命令:
pip install edge-tts
edge-tts --voice zh-CN-XiaoxiaoNeural --rate=+8% --text "明天,你会拿到年终奖。" --write-media voice_04.mp3
中文音色推荐 Xiaoxiao(女声温柔)和 Yunxi(男声年轻),治愈系短剧用 Xiaoxiao 很合适。语速我调了 +8%,因为默认语速偏慢,会显得拖沓。生成后用 ffprobe 检查时长,方便后面对齐:
ffprobe -v error -show_entries format=duration -of csv=p=0 voice_04.mp3
这部短剧里只有一句台词,所以只需要生成一个语音文件。如果你的剧本是多角色对话,记得按角色分开生成语音文件,每个角色选不同的音色。后期混音时稍微错开一点声道位置,比如一个偏左一个偏右,听感会自然很多。
3.6 步骤五:剪辑合成短片
剪辑思路:先把每段视频和对应的配音合成一个带音轨的小片段,再把所有小片段拼接,最后加字幕和背景音乐。单个片段合成命令:
ffmpeg -i clip_04.mp4 -i voice_04.mp3 -c:v libx264 -c:a aac -shortest clip_04_final.mp4
全部合成后,把文件名写进 filelist.txt:
file 'clip_01_final.mp4'
file 'clip_02_final.mp4'
...
然后拼接:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy concat.mp4
字幕我直接丢进剪映免费版,用“自动字幕”功能一键识别。识别结果偶尔有错别字,手动改一下就好。背景音乐去剪映本地素材库挑一条极简的钢琴曲,音量压到 -20dB 左右当底噪,不要盖过台词。
到这里,一部 60 秒的 AI 短剧就出片了。我第一次跑完全流程时有点恍惚:从一句话到成片,居然真的没花一分钱。
4. 常见问题与排查技巧实录
这一节是掏心窝子的部分。上面那套流程看着顺,实际操作中一定会翻车。我把踩过的坑整理成速查表。
4.1 角色脸变来变去,有没有根治办法
前面说过用固定 seed 和统一描述词,但即使这样,不同镜头里角色服装颜色还是可能变。我的土办法是:先选定一个“锚点图”(通常是最满意的角色近景图),后面所有镜头都用 IP-Adapter reference 模式生成,参考图固定用锚点图。如果角色有标志性物件(比如这条短剧里主角的灰色西装),就在每张图的提示词里反复强调,不要省。
如果已经生成完了才发现角色不统一,还有一个补救方式:用图生图功能把崩掉的角色局部重绘,参考图用锚点图,配合 ControlNet 的局部重绘模型,把脸换回来。操作不算复杂,但每张图都要单独修一遍,挺费时间的。所以我还是建议你在源头上就把一致性管好。
4.2 视频太短、画面抽搐
SVD 单次生成的时长是固定的 2~4 秒,这是模型架构决定的,想生成 8 秒长镜头只能靠拼接。拼接时不要用硬切,至少留 2~3 帧重叠,或者用转场过渡,不然观众会觉得画面一顿一顿的。motion_bucket_id 超过 160 时画面会明显抖动,治愈系控制在 100~140 最好。如果生成结果有闪烁,可以把 cond_aug 从 0.02 调到 0.04,闪烁会缓解,但画面变化幅度也会变小。
画面抽帧感比较明显的时候,我习惯把片段导进剪映,用自带的光流法补帧,设置里选“光流 4.0”,画面会顺滑很多。注意补帧会提高渲染时间,短片问题不大,超过 1 分钟的视频就要耐心等一会儿了。
4.3 显存不够怎么硬扛
6GB 显存跑 SVD 很容易爆显存,我的经验是三条:一是分辨率从 768x432 降到 640x384,画质损失在手机端看完全能接受;二是开启 Tiled VAE,把解码过程分块处理,大幅降低显存峰值;三是用 --medvram 参数启动 WebUI,给图像合成过程腾出显存。实在跑不动 SVD,退一步用 AnimateDiff 的 16 帧模式,效果偏手绘风,配治愈系短剧反而有意外惊喜。
Windows 环境下还有一个隐藏参数值得设置:把环境变量 PYTORCH_CUDA_ALLOC_CONF 设为 expandable_segments:True。这个设置能让 PyTorch 更高效地利用显存碎片,实测有时候能把原来跑不动的任务救回来。设置方法和普通环境变量一样,不会影响系统其他程序。
4.4 配音对不上画面
对不上的情况分两种:配音太长,或者太短。太长就调整语速,把 rate 从 +8% 升到 +15%,重新生成;太短就延长画面停留时间,用 FFmpeg 给视频补帧:
ffmpeg -i clip_04.mp4 -vf "tpad=stop_duration=1.5:stop_mode=clone" -r 25 clip_04_padded.mp4
这句命令会在结尾多停留 1.5 秒,适合收尾镜头。配音和画面时长差在 0.3 秒内,人眼基本感知不到,不用追求精确对齐。
| 问题 | 症状 | 解决思路 |
|---|---|---|
| 角色脸变 | 不同镜头像两个人 | 固定 seed + 参考图 + 统一描述词 |
| 画面抽搐 | 帧间抖动明显 | 降低 motion_bucket_id |
| 显存爆掉 | 生成中途报 CUDA OOM | 降分辨率 + Tiled VAE |
| 配音拖沓 | 语速太慢 | rate 调高到 +10%~+15% |
| 字幕错字 | 识别不准 | 手动校对,重点查人名和数字 |
我实测下来,最容易让人放弃的时刻不是工具装不上,而是第一版成片特别粗糙时觉得自己白忙了。我的建议是别追求一步到位,先接受“能看”,把全流程跑通,再针对最碍眼的那个问题做局部优化。第二版和第三版的提升速度会非常快。
最后再分享一个后续玩法。这次是一条独立短片,如果想把一个角色长期用下去,可以在 SD 里训练一个角色 LoRA,之后无论生成多少集,主角都是同一张脸;再配合大模型写系列剧本,就能低成本批量产出 IP 化的 AI 短剧。我现在正在往这个方向试,等跑出几集再来更新实测心得。
火山引擎视频云技术社区,是面向 AI 音视频开发者的技术交流平台。这里汇聚源自抖音、豆包等亿级 DAU 产品的 RTC、直播、点播、AI 媒体处理、音视频互动技术,提供接入指南、最佳实践、性能调优、场景案例、Demo 代码、开源项目、白皮书和 API 文档。社区汇聚官方工程师与一线开发者,为 AI 视频通话、数字人、AI 视频处理等应用的开发与落地提供技术支持。
更多推荐
所有评论(0)