ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI短剧制作全流程实战:从剧本生成到视频剪辑的完整指南

AI短剧制作全流程实战:从剧本生成到视频剪辑的完整指南 最近在尝试用AI工具生成短视频内容时发现很多教程要么过于零散要么只讲理论不落地。特别是想制作像《一善坊》这类带有民俗故事风格的AI短剧从剧本构思、角色生成到视频剪辑整个流程涉及多个环节新手很容易卡在某个步骤上。本文将为你拆解一套完整的AI短剧制作实战流程从零开始手把手带你复现一个1-2分钟时长的民俗故事短片。无论你是内容创作者、影视爱好者还是想探索AIGC应用的开发者都能从这套闭环方案中找到可复用的代码、配置和避坑指南。1. 背景与核心概念AI短剧是什么在开始动手之前我们有必要厘清几个核心概念。AI短剧顾名思义是指利用人工智能技术辅助或主导生成的短视频剧集。它并不是完全取代人类创作而是将AI作为强大的生产工具应用于以下关键环节剧本与文案生成利用大语言模型如GPT、文心一言等进行故事构思、角色对话撰写甚至生成分镜头脚本。视觉内容生成角色与场景使用文生图模型如Stable Diffusion、Midjourney生成符合故事设定的角色形象、服装、道具以及故事发生的场景。动态视频使用图生视频或文生视频模型如Runway Gen-2、Pika Labs、Sora等让静态图片“动起来”生成角色表情、动作和场景变换。音频内容生成配音与旁白使用语音合成技术TTS为不同角色生成富有情感的对话配音以及故事旁白。背景音乐与音效利用AI生成或匹配符合剧情氛围的背景音乐和音效。后期剪辑与合成将生成的视频片段、音频、字幕等素材通过剪辑软件可以是专业软件如Premiere也可以是AI驱动的在线工具进行时间线对齐、转场、调色和最终渲染。对于《一善坊》这类民俗故事其核心魅力在于独特的文化氛围和人物形象。因此我们的技术重点会放在如何让AI理解并生成“民俗风”的视觉元素以及如何将零散的AI生成素材串联成一个逻辑连贯、情感递进的故事短片。2. 环境准备与工具选型工欲善其事必先利其器。制作AI短剧不需要昂贵的专业设备但需要一系列软件、在线工具和API。以下是我们本次实战将用到的核心工具栈并提供了备选方案。核心工具栈环节推荐工具类型主要用途备选方案剧本生成OpenAI GPT-4 API / Claude API在线API生成故事大纲、分场剧本、角色对话国内文心一言、通义千问、Kimi 开源Llama 3、ChatGLM需本地部署角色/场景图Stable Diffusion WebUI (Automatic1111)本地部署软件根据提示词生成高质量、风格可控的静态图像Midjourney在线、DALL-E 3API、Leonardo.ai视频生成RunwayML Gen-2 / Pika Labs在线平台将图片转化为动态视频或直接文生视频Stable Video Diffusion本地要求高、HeyGen数字人视频语音合成Microsoft Azure TTS / ElevenLabs在线API生成不同音色、情感的角色配音和旁白阿里云TTS、百度语音合成、Edge-TTS免费视频剪辑DaVinci Resolve (免费版)本地软件专业级时间线剪辑、音频处理、字幕添加CapCut剪映国际版自动化强、Premiere Pro本地环境准备以Stable Diffusion为例如果你选择本地部署Stable Diffusion以获得最大的控制权和免费生成能力需要准备以下环境操作系统Windows 10/11, macOS 或 Linux。Windows兼容性最好。硬件要求显卡GPU至关重要。推荐NVIDIA显卡显存至少6GB如RTX 30608GB或以上RTX 4070, 4090体验更佳。AMD显卡支持较弱。内存16GB RAM 或以上。硬盘至少20GB可用空间用于安装模型和生成缓存。软件安装Python版本3.10.6至3.10.11。避免使用3.11可能存在兼容性问题。Git用于克隆代码仓库。CUDA Toolkit与你的NVIDIA显卡驱动匹配的版本通常安装SD时会自动处理。安装Stable Diffusion WebUI (Automatic1111)这是目前最流行的本地部署方案社区活跃插件丰富。# 1. 克隆仓库 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui # 2. 运行安装脚本 (Windows) # 双击运行 webui-user.bat。首次运行会自动安装依赖时间较长。 # 对于Mac/Linux用户运行 # bash webui.sh安装完成后在浏览器中打开http://127.0.0.1:7860即可访问WebUI界面。关键模型下载SD WebUI本身不带模型需要额外下载。对于民俗风格推荐下载一些擅长亚洲古风、水墨风格的Checkpoint模型例如Counterfeit-V3.0擅长亚洲面孔和古风。国风3Guofeng3专门的中国风模型。majicmixRealistic_v7写实风格可用于生成真实的老人、村民等角色。将下载的.safetensors模型文件放入stable-diffusion-webui/models/Stable-diffusion/目录然后在WebUI左上角切换即可。3. 核心流程拆解从故事到成片一个完整的AI短剧制作流程可以抽象为以下五个核心阶段我们将以创作一个简单的“古镇善人”小故事为例贯穿始终。概念构思 → 剧本与分镜 → 视觉资产生成 → 音频生成 → 剪辑合成3.1 第一阶段故事概念与剧本生成首先我们需要一个故事核。假设我们的故事叫《石桥粥铺》讲述一位古镇老人在桥头常年免费施粥行善最终福报延绵的故事。我们可以使用GPT-4 API来辅助完成剧本。以下是一个Python脚本示例调用OpenAI API生成故事大纲和第一场戏的详细剧本。# 文件generate_script.py import openai import os # 设置你的OpenAI API密钥 (请从环境变量读取不要硬编码在代码中) openai.api_key os.getenv(OPENAI_API_KEY) def generate_story_script(theme, setting): 生成民俗故事剧本 :param theme: 故事主题如“善有善报” :param setting: 故事背景如“江南古镇民国初期” :return: 生成的剧本文本 prompt f 你是一位擅长创作中国民俗风格短剧的编剧。请根据以下要求创作一个1-2分钟短视频的剧本。 **主题**{theme} **背景**{setting} **风格**温暖、质朴、带有寓言色彩。对话简洁富有生活气息。 **输出格式** 1. 【故事梗概】100字以内。 2. 【主要角色】名字、年龄、身份、性格特点。 3. 【分场剧本】 - 场号1 - 场景外景 - 石桥头 - 清晨 - 画面描述 [详细的视觉描述用于AI绘图] - 角色动作与对话 [角色的具体行为和台词] - 旁白 [如果有] 请严格按此格式输出。 try: response openai.ChatCompletion.create( modelgpt-4, messages[ {role: system, content: 你是一个专业的编剧助手。}, {role: user, content: prompt} ], temperature0.7, # 控制创造性0.7较为平衡 max_tokens1500 ) return response.choices[0].message.content except Exception as e: print(f生成剧本时出错{e}) return None if __name__ __main__: # 示例生成一个“善有善报”主题的古镇故事 script generate_story_script(善有善报平凡的坚持, 民国初年江南水乡的一座古老石桥边) if script: print( 生成的剧本 \n) print(script) # 可以保存到文件 with open(石桥粥铺_剧本.txt, w, encodingutf-8) as f: f.write(script)运行结果示例片段 生成的剧本 1. 【故事梗概】民国初年江南古镇。年迈的陈老伯在清河石桥头摆了一个简陋的粥铺几十年如一日为过往的穷苦人、流浪者免费提供一碗热粥。他的善举起初不为人理解却默默温暖了无数人。一个风雪交加的夜晚一位他曾帮助过的年轻人归来命运的回响悄然降临。 2. 【主要角色】 - 陈老伯70岁粥铺主人慈祥、沉默寡言背微驼眼神浑浊却清澈。 - 阿生25岁流浪青年衣衫褴褛但眼神倔强后成为商人。 - 旁白女声沉稳温暖 3. 【分场剧本】 - 场号1 - 场景外景 - 清河石桥头 - 冬日清晨薄雾 - 画面描述古老的拱形石桥爬满枯藤桥下河水缓缓流淌。桥头一个简陋的茅草棚土灶上架着一口大铁锅热气蒸腾。陈老伯穿着打着补丁的棉袄正用长勺缓缓搅动锅里的粥。天色灰蓝远处古镇的白墙黛瓦若隐若现。 - 角色动作与对话 陈老伯舀起一勺粥看了看稠度自言自语今天米不错熬得稠。 一个瑟瑟发抖的年轻乞丐阿生蜷缩在桥墩边 陈老伯端着一碗粥走过去轻轻放在阿生身边趁热喝吧。 阿生抬起头眼神警惕随后变为感激声音沙哑……谢谢。 - 旁白这座桥这个人这碗粥。日子就像桥下的水静静流了三十年。没人记得他为什么开始就像没人记得善意会在哪里生根发芽。关键点解析提示词工程给AI的指令必须清晰、具体。我们规定了主题、背景、风格和至关重要的输出格式。格式化的输出能极大方便后续步骤的自动化处理。画面描述剧本中的“画面描述”部分就是后续给文生图AI如Stable Diffusion的提示词基础。它需要包含环境、人物、动作、光影、氛围等视觉元素。角色对话这部分将直接用于语音合成TTS生成配音。3.2 第二阶段视觉资产生成Stable Diffusion实战拿到剧本后我们需要为每一场戏生成对应的画面。这里以生成“场号1”的静态场景图为例。步骤1提炼提示词Prompt从剧本的“画面描述”出发将其转化为SD能理解的提示词。一个好的提示词通常包含[主体描述], [细节描述], [艺术风格], [画质词]。基础提示词an old Chinese man (Chen LaoBo), 70 years old, kind face, wearing patched cotton jacket, stirring a large pot of porridge with a long ladle, at the head of an ancient stone arch bridge, river under the bridge, morning mist, winter, traditional Chinese village (ancient town) in the background, white walls and black tiles风格化提示词Chinese ink painting style, watercolor, muted colors, soft lighting, cinematic, masterpiece, best quality, detailed负面提示词deformed, blurry, bad anatomy, disfigured, poorly drawn face, mutation, mutated, extra limb, ugly, poorly drawn hands, missing limb, blurry, floating limbs, disconnected limbs, malformed hands, out of focus, long neck, long body, text, watermark, signature步骤2在SD WebUI中配置参数打开SD WebUI进行如下设置选择模型在左上角选择guofeng3.safetensors国风模型。输入提示词将正负面提示词分别填入对应区域。采样方法选择DPM 2M Karras或Euler a出图速度和质量比较平衡。迭代步数20-30步。图片尺寸由于是横版视频素材可以设置为768x512或1024x57616:9。先小尺寸测试满意后再用高清修复放大。生成批次可以一次生成4-8张然后挑选最满意的一张。步骤3生成与精修点击“Generate”。生成结果可能需要进行多轮调整人物不像加入更具体的人物描述或使用LoRA模型固定人脸。可以事先为“陈老伯”这个角色生成一张满意的脸部特写然后通过img2img或LoRA训练来保持角色一致性。构图不佳调整提示词中元素的位置描述如at the head of the bridge, from a low angle。风格不符尝试不同的模型或加入by artist name之类的风格词。生成角色一致性图像的高级技巧保持同一角色在不同场景中的形象一致是AI短剧的最大挑战之一。除了反复调试提示词还有更有效的方法LoRA训练为特定角色训练一个轻量化的LoRA模型。准备角色多角度、多表情的20-30张图片可以是AI生成的也可以是手绘的。使用Kohya_ss等工具进行训练生成一个.safetensors文件。在生成时加载该LoRA并在提示词中加入lora:chen_laobo:0.8这样的触发词即可稳定生成该角色。Reference ControlNet使用ControlNet的Reference模式上传一张角色参考图SD会尽力在生成新图时保持其面部和体型特征。3.3 第三阶段让图片动起来视频生成有了高质量的静态场景图下一步是让它们拥有基础的动态效果比如飘动的雾气、搅粥的动作、人物细微的表情变化。这里以RunwayML Gen-2为例。操作流程登录RunwayML官网进入Gen-2工具。选择Image to Video模式。上传我们在SD中生成的最佳场景图。在提示词框中输入动态描述例如slow panning shot, mist gently flowing over the stone bridge, old man slowly stirring the porridge, steam rising from the pot, cinematic, serene。动态描述越具体AI越能理解你的意图。选择视频时长如4秒、风格如“Cinematic”等参数。点击生成。Runway会生成一段短视频。注意事项动作幅度AI视频生成技术仍在发展大范围、复杂的动作如走路、打架容易出错。初期建议以固定机位的细微动态为主如光影变化、烟雾、水流、人物微表情这样成功率更高也更符合某些抒情场景的意境。种子值与一致性和SD一样记录下生成满意视频的Seed值有助于在调整参数时保持画面风格稳定。多生成几次视频生成随机性较大通常需要生成多个版本才能挑选出可用片段。3.4 第四阶段声音的注入语音合成声音是赋予短片灵魂的关键。我们需要为旁白和每个角色生成配音。使用Edge-TTS免费本地方案示例虽然音质不如商用API但Edge-TTS免费、易用适合原型制作。# 文件generate_voice_edge.py import asyncio import edge_tts import os async def generate_speech_async(text, voice, output_file): 使用Edge TTS生成语音文件 communicate edge_tts.Communicate(text, voice) await communicate.save(output_file) print(f语音文件已保存{output_file}) def generate_voices(): 为剧本中的对话生成语音 # 定义角色和声音Edge-TTS支持的声音列表可通过 edge-tts --list-voices 查看 voices { 旁白: zh-CN-XiaoxiaoNeural, # 晓晓女声情感丰富 陈老伯: zh-CN-YunxiNeural, # 云希男声年轻些可通过语速调节显老 阿生: zh-CN-YunxiNeural, # 云希可用同一声音靠台词区分 } # 剧本中的台词 (从之前生成的剧本中提取) lines [ (旁白, 这座桥这个人这碗粥。日子就像桥下的水静静流了三十年。), (陈老伯, 今天米不错熬得稠。), (陈老伯, 趁热喝吧。), (阿生, ……谢谢。), ] # 为每句台词生成语音 for i, (role, text) in enumerate(lines): voice voices.get(role, zh-CN-XiaoxiaoNeural) output_path faudio/line_{i1:02d}_{role}.mp3 os.makedirs(audio, exist_okTrue) # 运行异步函数 asyncio.run(generate_speech_async(text, voice, output_path)) # 对于陈老伯可以生成一个语速更慢的版本 if role 陈老伯: # Edge-TTS可以通过在文本中插入prosody rateslow标签控制语速 slow_text fprosody rateslow{text}/prosody slow_output_path faudio/line_{i1:02d}_{role}_slow.mp3 asyncio.run(generate_speech_async(slow_text, voice, slow_output_path)) if __name__ __main__: generate_voices()使用商用API如Azure TTS以获得更好音质商用API通常提供更多音色、更稳定的质量和更精细的情感控制。# 文件generate_voice_azure.py (示例片段) import azure.cognitiveservices.speech as speechsdk import os def generate_speech_azure(text, voice_name, output_file, subscription_key, region): speech_config speechsdk.SpeechConfig(subscriptionsubscription_key, regionregion) speech_config.speech_synthesis_voice_name voice_name # 例如 zh-CN-XiaoxiaoNeural # 设置输出为音频文件 audio_config speechsdk.audio.AudioOutputConfig(filenameoutput_file) synthesizer speechsdk.SpeechSynthesizer(speech_configspeech_config, audio_configaudio_config) # 可以使用SSML来更精细地控制语音 ssml f speak version1.0 xmlnshttp://www.w3.org/2001/10/synthesis xml:langzh-CN voice name{voice_name} prosody rateslow pitchlow{text}/prosody /voice /speak result synthesizer.speak_ssml_async(ssml).get() if result.reason speechsdk.ResultReason.SynthesizingAudioCompleted: print(f语音合成成功: {output_file}) else: print(f语音合成失败: {result.reason}) # 使用示例 # generate_speech_azure(趁热喝吧。, zh-CN-YunxiNeural, laobo_line2.mp3, 你的密钥, eastasia)关键点情感与节奏通过SSML标签控制语速、音高、停顿让配音更有感情。例如旁白可以慢速、低沉年轻人的台词可以稍快、带有情绪。背景音乐与音效可以从免版税音乐网站如YouTube Audio Library, Epidemic Sound寻找合适的背景音乐。音效如风声、水流声、碗勺碰撞声则可以从Freesound等网站获取。在剪辑阶段混合。3.5 第五阶段剪辑合成DaVinci Resolve基础操作这是将所有素材组装成片的最后一步。我们以免费的DaVinci Resolve为例。基本流程创建项目与导入素材新建项目将所有生成的视频片段.mp4、音频文件.mp3、背景音乐、音效导入媒体池。时间线编排将视频片段按剧本顺序拖放到视频轨道上。将对应的配音音频拖放到音频轨道上与视频画面口型对齐AI生成视频口型可能不准主要对齐台词节奏和内容。添加旁白音频到独立的音频轨道。在背景音乐轨道上铺上合适的音乐并利用“淡入淡出”避免突兀。转场与调色在片段之间添加简单的交叉溶解转场。使用“色彩”页面为所有片段应用一个统一的色彩风格如复古、低饱和度、暖色调以增强“民俗故事”的质感。添加字幕在“剪辑”页面使用“字幕”工具。选择“字幕”轨道点击“添加字幕”输入旁白或对话文本。统一调整字幕的字体如楷体、大小、颜色和位置使其清晰且不破坏画面。音频混合在“Fairlight”页面调整各音频轨道的音量确保对话清晰背景音乐不喧宾夺主。为环境音效添加轻微的混响增加空间感。导出进入“交付”页面。格式选择MP4。编解码器选择H.264。根据平台要求设置分辨率如1080p和码率。点击“添加到渲染队列”然后“渲染所有”。4. 完整实战案例《石桥粥铺》第一幕制作清单让我们将上述所有步骤串联起来形成一个可执行的任务清单。项目目录结构stone_bridge_porridge/ ├── script/ │ └── 石桥粥铺_剧本.txt ├── prompts/ │ ├── scene_1_prompt.txt │ └── scene_1_negative.txt ├── images/ │ ├── scene_1_raw/ # 存放SD生成的原始图 │ └── scene_1_selected/ # 存放精选的图 ├── videos/ │ └── scene_1_runway/ # 存放Runway生成的视频片段 ├── audio/ │ ├── voice/ # 存放TTS生成的配音 │ ├── bgm/ # 背景音乐 │ └── sfx/ # 音效 ├── edit/ │ └── davinci_project.drp # DaVinci Resolve项目文件 └── output/ └── 石桥粥铺_第一幕_成品.mp4分步任务清单剧本定稿运行generate_script.py得到剧本文件。人工润色对话使其更自然。提示词优化根据剧本的“画面描述”编写SD提示词保存到prompts/目录。生成场景图在SD WebUI中加载国风模型使用优化后的提示词生成10-20张场景1的图片。挑选最佳的一张保存为images/scene_1_selected/scene_1_final.png。生成动态视频将精选的图片上传至RunwayML Gen-2输入动态提示词生成4秒视频。重复几次挑选最自然的一段保存为videos/scene_1_runway/scene_1_v001.mp4。生成配音从剧本中提取所有台词运行generate_voice_azure.py或Edge-TTS脚本为每个角色生成配音文件保存至audio/voice/。收集音效下载风声、水流声、清晨鸟鸣、碗勺声等音效放入audio/sfx/。剪辑合成在DaVinci Resolve中新建项目按顺序导入视频片段、配音、旁白、背景音乐和音效。进行剪辑、对齐、调色、加字幕、混音。渲染输出渲染最终成片到output/目录。5. 常见问题与排查思路在AI短剧制作过程中你一定会遇到各种问题。下表汇总了高频问题及其解决思路问题现象可能原因排查与解决思路SD生成图片模糊、扭曲1. 提示词不够具体或矛盾。2. 迭代步数太少。3. 使用了不合适的模型。4. 图片尺寸太小。1. 优化提示词明确主体、细节、风格。使用负面提示词排除常见缺陷。2. 将迭代步数提高到25-30。3. 尝试更换更擅长所需风格的Checkpoint模型。4. 先以512x512等小尺寸生成满意后使用“高清修复”放大。角色在不同场景中形象不一致AI每次生成都是独立的没有“角色”概念。1.LoRA训练为关键角色训练专用LoRA这是最有效的办法。2.图生图重绘以一张定妆照为基底通过图生图模式重绘不同场景控制重绘幅度。3.提示词锁定使用极其详细且一致的人物描述发型、脸型、痣、服装细节。Runway生成的视频动作诡异或闪烁1. 原图构图复杂或主体不清晰。2. 动态提示词过于宽泛或矛盾。3. 视频生成技术本身的局限性。1. 使用构图简单、主体突出的图片作为输入。2. 动态提示词描述细微、合理的动作如“gentle swaying”, “slow zoom in”。避免“running”, “fighting”。3. 多次生成选取最佳片段。或只使用视频中稳定的几帧。TTS语音听起来机械、不自然1. 使用了基础或免费的TTS引擎。2. 文本没有标点或断句不合理。3. 没有使用情感参数。1. 考虑使用Azure、ElevenLabs等提供更自然音色和情感控制的商用API。2. 在文本中添加适当的标点控制语速。对于长句可以手动拆分成短句再合成。3. 学习使用SSML标记语言在API调用中添加语速、音高、情感标记。剪辑时音画不同步1. 视频片段和音频片段长度不匹配。2. 在剪辑软件中操作失误。1. 在生成视频和音频时精确计算时长。旁白时长要与画面切换节奏匹配。2. 在DaVinci Resolve中使用“同步点”功能或手动微调音频轨道位置。通常以画面动作或台词起点为基准进行对齐。最终成片显得零散不连贯1. 镜头之间缺乏逻辑转场。2. 节奏把控不好。3. 缺少统一的视觉风格色调。1. 在剧本阶段就设计好镜头语言如全景→中景→特写。剪辑时使用叠化、淡入淡出等转场。2. 背景音乐是控制节奏的关键。根据剧情起伏调整音乐节奏和音量。3. 在调色阶段为所有片段应用同一个色彩查找表LUT统一影调。6. 最佳实践与进阶建议当你掌握了基础流程后以下建议可以帮助你提升短剧质量和制作效率故事优先技术为辅AI是工具好故事才是核心。在投入大量时间生成素材前先把剧本打磨扎实。一个逻辑清晰、情感动人的故事即使画面简单也能打动人。建立可复用的数字资产库角色LoRA库为你故事中经常出现的角色如系列剧主角训练高质量的LoRA模型后续创作可直接调用极大保证一致性。风格预设库在SD中保存不同场景如日景、夜景、雨景、室内的优质提示词组合、模型参数、ControlNet设置形成自己的风格预设。音效音乐库分类整理常用的背景音乐和音效便于快速查找。迭代式工作流不要试图一步到位生成完美素材。采用“低分辨率草稿 → 筛选 → 高分辨率精修 → 动态化”的流程。先在低分辨率下快速生成多种构图和创意选定方向后再进行高成本的高清生成和视频化。善用ControlNet在SD中ControlNet是控制构图、姿势、线稿的利器。对于需要特定构图或角色姿势的场景可以先用简单草图或OpenPose骨骼图通过ControlNet来精确控制生成结果。音频的精细化处理环境音层不要只铺一层背景音乐。建立多层环境音如远景风声、近处水流、偶尔的鸟叫能极大增强场景的真实感和沉浸感。语音处理对TTS生成的干声在剪辑软件中进行简单的处理如降噪、添加轻微的混响模拟空间感、压缩使音量平稳。法律与版权意识AI生成内容版权目前各国法律对AI生成内容的版权归属尚无定论。用于个人练习和分享通常问题不大但如果进行商用务必了解相关平台政策和服务条款。背景音乐与字体确保使用的背景音乐、音效和字体是免版税或已获得授权。许多免费资源网站会明确标注使用许可。保持学习与关注AIGC领域发展日新月异。关注Stable Diffusion、Runway、Pika等主流工具的更新以及新的AI视频模型如Sora。新的模型和功能可能会彻底改变你的工作流。从构思一个简单的民俗故事到利用AI工具链将其变为可视可听的短片这个过程就像一场有趣的数字手工。它既有艺术创作的感性部分也有工程调优的理性部分。最大的挑战往往不是某个工具的使用而是如何将故事、画面、声音这三个维度流畅地整合在一起并保持风格的一致。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进