这次我们来看一个用 AI 生成古风短剧的项目。它不是某个单一的模型或工具,而是一套结合了 AI 绘画、AI 配音、AI 剪辑等技术,进行原创短剧内容生产的完整流程。项目标题《凤帷医心第十七集》已经点明了其核心产出:一部连载的、AI 创作的、古风双女主题材的短剧。
对于技术爱好者而言,这个项目的价值不在于某个“一键生成短剧”的魔法按钮,而在于它提供了一个可复现的、基于现有开源工具的“技术栈组合方案”。它回答了“如何用 AI 低成本、高效率地制作一部有连续剧情、固定人设、风格统一的短剧”这个问题。本文将重点拆解这套方案可能涉及的技术组件、工作流设计、资源门槛以及实际落地时会遇到的挑战。
如果你关心的是:如何用 Stable Diffusion 保持角色一致性?如何用 TTS 合成符合角色设定的语音?如何将分镜、配音、字幕、背景音乐自动化合成?那么这篇文章会为你梳理出一条清晰的路径。我们将从技术实现的角度,探讨从剧本到成片的每一个环节,并给出具体的工具选择、操作思路和避坑指南。
1. 核心能力速览:AI 短剧生产流水线
这个项目本质上是一个“内容生产管线”(Content Pipeline)。下表梳理了其核心环节及对应的技术实现可能性:
| 能力项 | 说明与常用工具 |
|---|---|
| 剧本与分镜 | 使用大语言模型(如 ChatGPT、Claude、DeepSeek)辅助生成剧本、对话和分镜描述。核心是输出结构化的“场景-画面描述-台词”文本。 |
| 角色视觉设计 | 使用 Stable Diffusion 系列模型(如 SDXL、SD 1.5 的各种古风 LoRA),通过 Textual Inversion、LoRA 或 Dreambooth 训练,固定两位女主角的面部特征、服饰风格,确保剧集间角色一致性。 |
| 场景图生成 | 基于分镜描述,使用 Stable Diffusion(配合 ControlNet,如 OpenPose、Canny、Depth)生成符合剧情、构图、光影要求的背景或角色场景图。批量生成是关键。 |
| 语音合成 (TTS) | 使用开源 TTS 模型(如 GPT-SoVITS, Bert-VITS2, StyleTTS2)为不同角色训练专属音色,并根据台词合成带情感语调的语音。支持长文本批量处理。 |
| 视频合成与剪辑 | 将静态场景图转化为动态视频(使用图生视频模型如 Stable Video Diffusion、AnimateDiff,或简单运镜工具),然后与配音、字幕、背景音乐(BGM)在剪辑软件(如 DaVinci Resolve, Premiere)或自动化脚本(如 moviepy)中合成。 |
| 字幕生成 | 语音识别(ASR)或直接基于剧本文本,生成字幕文件(.srt/.ass)。可使用 Whisper 等开源模型进行音频转写校对。 |
| 流程自动化 | 通过 Python 脚本或 ComfyUI 工作流,将以上环节串联,实现从文本剧本到粗剪视频的半自动化流水线。 |
| 硬件门槛 | 主要压力在图像/视频生成阶段。Stable Diffusion 生图:建议 8G 以上显存,可玩;12G 以上显存,体验更佳。视频生成:显存需求更高(12G+),或依赖 CPU/内存进行低分辨率生成。TTS 训练与推理:对显存要求相对较低(4G-6G 可运行),部分模型支持纯 CPU。 |
| 适合场景 | 个人或小团队进行 AI 原创内容实验、短视频创作、动画分镜预览、低成本短剧制作。不适合对画面精度、动作流畅度有影视级要求的商业项目。 |
2. 适用场景与使用边界
这个项目适合谁?
- AI 技术实践者:希望将分散的 AI 能力(AIGC, TTS, ASR)整合到一个完整项目中进行实战。
- 内容创作者:短视频博主、自媒体运营者,希望探索 AI 辅助下的高效、低成本内容生产模式。
- 动画/影视爱好者:想将自己的故事创意视觉化,但缺乏专业绘画、配音、剪辑技能的个人创作者。
它能解决什么问题?
- 角色一致性难题:通过 LoRA 等技术,让 AI 在数百张图片中画出同一张脸、同一套服装风格。
- 音画同步生产:建立从文字剧本到带配音视频的标准化流程,减少跨软件操作的手动成本。
- 创意快速验证:在投入大量资源进行真人拍摄或专业动画制作前,用 AI 快速生成故事板(Storyboard)或概念短片。
它的边界与限制:
- 画面精度与可控性:AI 生成的画面在细节(如手部、复杂透视、特定道具)上仍可能出错,需要大量筛选和后期修正。
- 动态生成瓶颈:当前开源的图生视频模型在动作连贯性、时长、分辨率上仍有较大限制,难以直接生成高质量的复杂长镜头。
- 版权与伦理风险:
- 训练数据:使用的底模型和 LoRA 必须确认其训练数据来源合法,避免侵权。
- 肖像与声音:如果角色设计基于特定真人形象或声音,必须获得明确授权,否则存在法律风险。严禁使用未经授权的公众人物或他人肖像、声音进行 AI 合成与传播。
- 内容合规:生成的故事内容需符合平台规范,不得涉及违法、不良信息。
- 技术门槛:整个流程涉及多个工具链的部署、调试和集成,需要一定的技术学习成本和问题排查能力。
3. 环境准备与前置条件
要搭建这样一条 AI 短剧生产线,你需要一个稳定的基础环境。以下是通用性较强的准备清单:
操作系统:Windows 10/11, Linux(如 Ubuntu 20.04+), macOS(部分工具支持,但性能可能受限,尤其是图像生成)。Python 环境:推荐使用 Python 3.10(与多数 AI 框架兼容性最好)。务必使用venv或conda创建独立的虚拟环境,避免依赖冲突。版本管理工具:Git(用于克隆开源项目)。硬件检查:
- GPU:NVIDIA GPU 是首选,CUDA 加速能极大提升图像/视频生成和模型训练效率。确认已安装合适版本的 NVIDIA 显卡驱动。
- 显存:这是关键瓶颈。建议至少 8GB 显存。6GB 显存可运行部分轻量级模型,但批次大小(batch size)和分辨率会受限。
- 内存:建议 16GB 以上系统内存。视频合成和数据处理会消耗大量内存。
- 存储:准备充足的 SSD 空间(至少 100GB 以上)。用于存放基础模型(每个 2-7GB)、LoRA 模型、训练数据、生成的中间素材和最终成片。
核心软件框架:
- PyTorch:深度学习框架基础。需根据 CUDA 版本安装对应的 PyTorch。
- Stable Diffusion WebUI (Automatic1111) 或 ComfyUI:二者选一或都安装。WebUI 交互友好,插件丰富;ComfyUI 更擅长可视化工作流编排,适合自动化流水线。
- FFmpeg:音视频处理的核心命令行工具,用于格式转换、剪辑、合成。务必将其添加到系统环境变量 PATH 中。
- CUDA 和 cuDNN:确保版本与 PyTorch 要求匹配。
4. 安装部署与核心工具链搭建
我们不会部署一个名为“凤帷医心”的现成软件,而是搭建实现它所需的技术栈。以下是分步指南:
4.1 图像生成引擎:Stable Diffusion
这里以Stable Diffusion WebUI (Automatic1111)为例,它生态完善,适合初学者。
# 1. 克隆仓库 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui # 2. 运行启动脚本(Windows) webui-user.bat # 首次运行会自动安装依赖和下载必要模型。请保持网络通畅。启动后,在浏览器中访问http://127.0.0.1:7860。你需要下载一个基础模型(如sd_xl_base_1.0.safetensors)和一个古风风格的 LoRA(可在 Civitai 等社区搜索“chinese style”, “ancient china”等关键词),并将其放入models/Lora目录。
4.2 角色一致性训练:LoRA 制作
为了固定双女主形象,你需要为每个角色训练一个 LoRA。
- 准备数据集:收集 20-50 张目标角色的高质量图片(最好是同一人、类似妆造、多角度、多表情)。图片尺寸建议 512x512 或 768x768。
- 图片预处理:使用 WebUI 的“训练”标签页下的“预处理”功能,对图片进行打标(Tagging)。可以自动生成描述词,但建议手动精修,确保标签准确(如
fengwei_yixin, long black hair, red hanfu, smiling)。 - 配置训练参数:使用 Kohya_ss 训练脚本或 WebUI 内置的 LoRA 训练扩展。关键参数包括:学习率、训练步数、网络维度(network_dim)。对于新手,可以从社区寻找现成的古风 LoRA 进行微调,降低难度。
- 训练与测试:开始训练后,会生成多个检查点(checkpoint)。每隔一段时间,用生成的 LoRA 文件配合基础模型进行生图测试,直到角色特征稳定。
4.3 语音合成:专属音色生成
以GPT-SoVITS为例,它是一个支持少量数据、快速克隆音色的优秀开源项目。
# 克隆项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git cd GPT-SoVITS # 安装依赖(建议在虚拟环境中进行) pip install -r requirements.txt # 下载预训练模型(项目通常会提供下载脚本或指引) # 准备你的语音数据:5-10分钟目标角色的干净录音,背景无杂音,语速均匀。启动 WebUI 服务:
python webui.py访问其界面,流程通常是:音频切片 -> 语音转录 -> 微调训练 -> 文本推理合成。训练完成后,你可以得到一个模型文件,用于将任意文本合成为该角色的声音。
4.4 视频合成与剪辑自动化
这是最复杂的环节,目前没有“一键解决方案”,需要组合使用工具。
方案A:静态图 + 运镜效果 (简易)使用EbSynth、LeiaPix Converter或DaVinci Resolve 的 Fusion 页面,为静态图片添加缓慢的缩放、平移等2D运镜效果,模拟动态感。
方案B:图生视频模型 (进阶)使用Stable Video Diffusion (SVD)或AnimateDiff(配合 Stable Diffusion WebUI 扩展或 ComfyUI 工作流)。
- SVD:将单张图片生成短视频片段。显存要求高,输出时长短(通常几秒)。
- AnimateDiff:需要搭配 Motion LoRA,可以让 SD 生成的图片“动起来”。在 ComfyUI 中已有成熟工作流。
剪辑合成: 使用moviepy(Python 库)编写脚本,实现自动化。
from moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips, TextClip, CompositeVideoClip # 示例:将图片序列和音频合成带字幕的视频(伪代码) image_clips = [ImageClip(f“scene_{i}.png”).set_duration(3) for i in range(10)] # 每张图3秒 audio = AudioFileClip(“dialogue.wav”) video = concatenate_videoclips(image_clips).set_audio(audio) # 添加字幕(需要预先处理好字幕时间轴) # ... video.write_videofile(“output.mp4”, fps=24)5. 功能测试与效果验证:从单场景到完整流程
搭建好环境后,不要急于制作整集,应先进行单元测试和集成测试。
5.1 角色视觉一致性测试
测试目的:验证训练好的角色 LoRA 能否在不同场景、姿势、表情下保持稳定。
- 输入:一组包含不同描述词的提示词,如“
[角色名] full body, standing in garden, smiling”, “[角色名] close-up, angry, indoor”。 - 操作:在 SD WebUI 中,固定种子(seed),启用 LoRA,切换不同提示词生成图片。
- 成功标准:生成的多张图片中,角色面部核心特征(脸型、眼睛、嘴型)高度相似,服饰风格统一。
- 失败排查:如果特征不稳定,需检查训练数据是否足够多样、标签是否准确、训练参数是否过拟合/欠拟合。
5.2 分镜场景生成测试
测试目的:验证能否根据剧本描述,生成符合构图和氛围要求的场景图。
- 输入:一段详细的分镜描述,例如:“夜晚,御花园角落,月光洒下,女主角A背对镜头,仰望天空,身影孤寂。”
- 操作:将描述转化为提示词,加入风格词(如“
masterpiece, best quality, ancient Chinese painting style”),使用 ControlNet(如 Depth 或 Canny)控制构图,进行生成。 - 成功标准:生成的图片在构图、光影、时代氛围上符合描述,且能与之前测试的角色图在画风上融合。
- 失败排查:提示词不够具体;需要调整 ControlNet 权重;基础模型或 LoRA 不擅长该风格。
5.3 语音合成与情感匹配测试
测试目的:验证 TTS 模型合成的语音是否自然,能否体现台词中的情绪。
- 输入:一段角色台词,如“(冷笑)你以为这样就能瞒天过海吗?”
- 操作:在 GPT-SoVITS 等工具的推理界面,输入文本,选择对应角色模型,尝试调整语速、音调,或使用“情感参考音频”。
- 成功标准:合成语音自然流畅,音色与角色匹配,能听出“冷笑”的情绪色彩。
- 失败排查:训练数据缺乏情感多样性;文本前端处理(分词、韵律预测)不佳;可尝试在文本中加入情感标签(如
[laugh],取决于模型是否支持)。
5.4 端到端单场景流水线测试
测试目的:将以上环节串联,对一个完整场景(画面+配音)进行生产。
- 流程:
- 剧本 -> 生成该场景画面。
- 剧本 -> 生成该场景角色 A 和 B 的对话音频。
- 使用剪辑脚本,将画面与两段音频对齐,并添加字幕。
- 成功标准:最终输出的短视频片段,音画同步,字幕准确,观感连贯。
- 失败排查:时间轴对不齐(需精细调整剪辑脚本);音频音量不均衡;字幕出现时间错位。
6. 接口 API 与批量任务自动化
对于连载短剧,批量处理能力至关重要。核心思想是将手动操作转化为 API 调用和脚本任务。
6.1 Stable Diffusion API 批量生图
启用 SD WebUI 的--api启动参数,即可通过 REST API 调用生图。
# 启动 WebUI 时开启 API webui-user.bat --api编写 Python 脚本进行批量生成:
import requests import json import io from PIL import Image url = “http://127.0.0.1:7860/sdapi/v1/txt2img” # 读取分镜描述文件 with open(“scenes.txt”, “r”, encoding=“utf-8”) as f: scenes = f.readlines() for i, scene_prompt in enumerate(scenes): payload = { “prompt”: f“{scene_prompt}, (best quality), ancient Chinese style”, “negative_prompt”: “worst quality, low quality”, “steps”: 20, “width”: 768, “height”: 512, “cfg_scale”: 7, “seed”: -1, # -1 表示随机 “override_settings”: { “sd_model_checkpoint”: “your_model.safetensors”, }, “alwayson_scripts”: { “LoRA”: { “args”: [{“model”: “character_a_lora.safetensors”, “weight”: 0.8}] } } } response = requests.post(url, json=payload) r = response.json() image = Image.open(io.BytesIO(base64.b64decode(r[‘images’][0]))) image.save(f“./output/scene_{i:03d}.png”) print(f“场景 {i} 生成完毕。”)6.2 TTS API 批量合成语音
同样,为 TTS 服务(如 GPT-SoVITS)配置 API 接口。
# 假设 TTS 服务运行在 8000 端口 tts_url = “http://127.0.0.1:8000/tts” dialogue_lines = [ {“role”: “A”, “text”: “姐姐,此事万万不可。”}, {“role”: “B”, “text”: “我意已决,不必再劝。”}, ] for line in dialogue_lines: payload = { “text”: line[“text”], “model”: f“voice_model_{line[‘role’]}.pth”, # 选择对应角色模型 “language”: “zh”, “speed”: 1.0, } response = requests.post(tts_url, json=payload) # 假设返回的是音频字节流 with open(f“./audio/{line[‘role’]}_{timestamp}.wav”, “wb”) as f: f.write(response.content)6.3 工作流编排:ComfyUI 的优势
对于更复杂的流水线(例如:文生图 -> 高清修复 -> 人脸修复 -> 背景扩展),ComfyUI 的节点式工作流可以保存为 JSON 模板。只需通过其 API 传入不同的提示词,即可批量执行整个工作流,非常适合标准化生产。
7. 资源占用与性能观察
图像生成阶段:
- 显存占用:使用 SDXL 模型生成一张 1024x1024 的图片,显存占用可能达到 10-12GB。使用 SD 1.5 模型生成 768x768 图片,显存占用约为 4-7GB。启用高清修复(Hires. fix)或 ControlNet 会显著增加显存消耗。
- 优化建议:
- 使用
--medvram或--lowvram参数启动 SD WebUI,牺牲速度换取更低显存占用。 - 降低生图分辨率或批次大小(batch size)。
- 考虑使用 CPU 模式(极慢)或 TensorRT 加速(需要额外配置)。
- 使用
语音合成阶段:
- GPT-SoVITS 训练:微调训练时,6GB 显存基本够用。推理阶段,显存占用更低(2-4GB),甚至可以在 CPU 上运行。
- 性能观察:主要关注合成语音的自然度和推理速度。长文本合成时注意内存使用。
视频合成阶段:
- 图生视频模型:SVD 或 AnimateDiff 对显存需求巨大(通常需要 12GB+)。内存也会被大量占用用于帧序列处理。
- 剪辑合成:使用 moviepy 合成视频时,如果图片分辨率高、序列长,会消耗大量内存和 CPU 资源。建议分段落合成,最后再合并。
通用监控命令:
- Windows:通过任务管理器查看 GPU、内存使用情况。
- Linux:使用
nvidia-smi监控 GPU,使用htop监控 CPU 和内存。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| SD WebUI 启动失败,提示 Torch/CUDA 错误 | CUDA 版本与 PyTorch 版本不匹配;显卡驱动过旧。 | 检查python -c “import torch; print(torch.__version__); print(torch.cuda.is_available())” | 根据 PyTorch 官网指引,安装与 CUDA 版本匹配的 PyTorch。更新显卡驱动。 |
| 生图时显存不足(Out of Memory) | 分辨率过高;同时启用了过多功能(如多个 ControlNet)。 | 观察nvidia-smi的显存占用。 | 降低分辨率;关闭高清修复;逐个启用 ControlNet;使用--medvram;升级显卡。 |
| 生成的角色脸崩或不一致 | LoRA 训练数据质量差或数量不足;提示词冲突;模型底模不适合。 | 检查训练图片是否清晰、多样;测试时固定种子,微调 LoRA 权重(0.6-0.9)。 | 补充高质量训练图;精修标签;尝试不同的基础模型;使用 ADetailer 等人脸修复插件进行后处理。 |
| TTS 合成语音不自然,有电音或断句错误 | 训练音频质量差(有噪音、混响);文本前端处理错误;模型训练不足。 | 检查原始音频;试听合成片段,看问题出现在特定字词还是整体。 | 重新录制干净音频;在文本中加入韵律标记或调整分词;增加训练步数或调整训练参数。 |
| 视频合成后音画不同步 | 剪辑脚本中图片持续时间与音频长度计算错误;视频帧率(fps)设置不当。 | 用专业播放器(如 PotPlayer)查看详细时间戳。 | 在脚本中精确计算每个镜头的时长(duration),确保总时长等于音频长度。统一使用 24 或 30 fps。 |
| 批量任务中途卡住或报错 | 单任务资源消耗大,导致后续任务失败;脚本错误处理不完善;临时文件占满磁盘。 | 查看任务日志;监控系统资源;检查磁盘空间。 | 在批量脚本中加入错误捕获和重试机制;每完成一个任务后增加短暂延迟(time.sleep);定期清理临时文件。 |
| 最终成片画质模糊 | 原始生成分辨率低;视频导出码率过低。 | 检查生图时的原始分辨率;检查视频导出参数。 | 尽量以高分辨率生成原始素材;使用无损或高码率(如 10-20 Mbps)导出 H.264/HEVC 视频。 |
9. 最佳实践与使用建议
- 项目化管理:为你的短剧项目建立清晰的目录结构。
/drama_fengwei ├── /scripts # 剧本、分镜文本 ├── /models # 基础模型、LoRA、TTS模型 ├── /training_data # 角色训练图片、语音素材 ├── /workflow # ComfyUI 工作流 JSON ├── /src # 自动化脚本 ├── /temp # 临时生成文件 ├── /output_scenes # 生成的场景图 ├── /output_audio # 合成的音频 └── /output_final # 最终视频成品 - 标准化流程:将验证成功的生图参数、TTS 参数、剪辑参数记录成配置文件(如
config.yaml),确保每一集的质量稳定。 - 版本控制:对关键脚本、工作流、配置文件使用 Git 进行版本管理。每次生成的结果可以打上时间戳或版本号。
- 版权合规先行:
- 只使用明确声明可商用的开源模型和 LoRA。
- 角色设计尽量原创,避免与知名作品雷同。
- 背景音乐(BGM)使用无版权音乐或购买授权。
- 在视频说明中明确标注“AI 生成”。
- 迭代优化:第一集可能粗糙,但要坚持。每完成一集,复盘哪个环节最耗时、效果最差,集中精力优化那个环节(例如:优化提示词模板、升级 TTS 模型、改进剪辑脚本)。
- 备份与归档:定期备份训练好的 LoRA 和 TTS 模型,这是你项目的核心资产。
10. 总结与下一步
制作《凤帷医心》这样的 AI 原创短剧,最大的价值在于实践了一套完整的 AIGC 应用流水线。它证明了个体创作者完全有能力驾驭多种 AI 工具,将创意转化为具象的视听内容。
对于想要尝试的读者,建议按以下路径开始:
- 第一步(核心):先攻克角色一致性(LoRA 训练)和语音克隆(TTS 训练)这两个基石。确保你能稳定生成“同一个人”和“同一个声音”。
- 第二步(验证):制作一个1 分钟左右的单场景短片。包含 3-4 个镜头、几句对话。走通从剧本到成片的完整流程,暴露所有问题。
- 第三步(优化):基于单场景的经验,编写自动化脚本,将重复劳动(如批量生图、批量合成语音)交给程序。
- 第四步(扩展):探索更复杂的动态生成(图生视频)、更精细的后期(调色、音效),提升作品质感。
最容易踩的坑是“贪多求全”,一开始就想做复杂的运镜和特效。正确的做法是“先跑通,再优化”,用最简单的静态图片+配音+字幕的形式,把第一集故事讲清楚。技术是为故事服务的,当你的流水线稳定后,就可以将更多精力投入到剧本创作和叙事节奏上,这才是 AI 短剧真正吸引人的地方。
这套技术栈是开放的、可扩展的。未来,随着视频生成模型的进步,你可以将静态场景替换为动态片段;随着多模态大模型的发展,分镜描述甚至可以直接由模型根据剧本生成。保持对工具链的更新和迭代,你的“数字制片厂”会越来越高效。建议收藏本文,在实践每个环节时回头查阅对应的部署和排错指南。