这次我们来看一个用 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. 适用场景与使用边界

这个项目适合谁?

  1. AI 技术实践者 :希望将分散的 AI 能力(AIGC, TTS, ASR)整合到一个完整项目中进行实战。
  2. 内容创作者 :短视频博主、自媒体运营者,希望探索 AI 辅助下的高效、低成本内容生产模式。
  3. 动画/影视爱好者 :想将自己的故事创意视觉化,但缺乏专业绘画、配音、剪辑技能的个人创作者。

它能解决什么问题?

  • 角色一致性难题 :通过 LoRA 等技术,让 AI 在数百张图片中画出同一张脸、同一套服装风格。
  • 音画同步生产 :建立从文字剧本到带配音视频的标准化流程,减少跨软件操作的手动成本。
  • 创意快速验证 :在投入大量资源进行真人拍摄或专业动画制作前,用 AI 快速生成故事板(Storyboard)或概念短片。

它的边界与限制:

  1. 画面精度与可控性 :AI 生成的画面在细节(如手部、复杂透视、特定道具)上仍可能出错,需要大量筛选和后期修正。
  2. 动态生成瓶颈 :当前开源的图生视频模型在动作连贯性、时长、分辨率上仍有较大限制,难以直接生成高质量的复杂长镜头。
  3. 版权与伦理风险 :
    • 训练数据 :使用的底模型和 LoRA 必须确认其训练数据来源合法,避免侵权。
    • 肖像与声音 :如果角色设计基于特定真人形象或声音,必须获得明确授权,否则存在法律风险。 严禁使用未经授权的公众人物或他人肖像、声音进行 AI 合成与传播。
    • 内容合规 :生成的故事内容需符合平台规范,不得涉及违法、不良信息。
  4. 技术门槛 :整个流程涉及多个工具链的部署、调试和集成,需要一定的技术学习成本和问题排查能力。

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 模型、训练数据、生成的中间素材和最终成片。

核心软件框架 :

  1. PyTorch :深度学习框架基础。需根据 CUDA 版本安装对应的 PyTorch。
  2. Stable Diffusion WebUI (Automatic1111) 或 ComfyUI :二者选一或都安装。WebUI 交互友好,插件丰富;ComfyUI 更擅长可视化工作流编排,适合自动化流水线。
  3. FFmpeg :音视频处理的核心命令行工具,用于格式转换、剪辑、合成。务必将其添加到系统环境变量 PATH 中。
  4. 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。

  1. 准备数据集 :收集 20-50 张目标角色的高质量图片(最好是同一人、类似妆造、多角度、多表情)。图片尺寸建议 512x512 或 768x768。
  2. 图片预处理 :使用 WebUI 的“训练”标签页下的“预处理”功能,对图片进行打标(Tagging)。可以自动生成描述词,但建议手动精修,确保标签准确(如 fengwei_yixin, long black hair, red hanfu, smiling )。
  3. 配置训练参数 :使用 Kohya_ss 训练脚本或 WebUI 内置的 LoRA 训练扩展。关键参数包括:学习率、训练步数、网络维度(network_dim)。对于新手,可以从社区寻找现成的古风 LoRA 进行微调,降低难度。
  4. 训练与测试 :开始训练后,会生成多个检查点(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 能否在不同场景、姿势、表情下保持稳定。

  1. 输入 :一组包含不同描述词的提示词,如“ [角色名] full body, standing in garden, smiling ”, “ [角色名] close-up, angry, indoor ”。
  2. 操作 :在 SD WebUI 中,固定种子(seed),启用 LoRA,切换不同提示词生成图片。
  3. 成功标准 :生成的多张图片中,角色面部核心特征(脸型、眼睛、嘴型)高度相似,服饰风格统一。
  4. 失败排查 :如果特征不稳定,需检查训练数据是否足够多样、标签是否准确、训练参数是否过拟合/欠拟合。

5.2 分镜场景生成测试

测试目的 :验证能否根据剧本描述,生成符合构图和氛围要求的场景图。

  1. 输入 :一段详细的分镜描述,例如:“夜晚,御花园角落,月光洒下,女主角A背对镜头,仰望天空,身影孤寂。”
  2. 操作 :将描述转化为提示词,加入风格词(如“ masterpiece, best quality, ancient Chinese painting style ”),使用 ControlNet(如 Depth 或 Canny)控制构图,进行生成。
  3. 成功标准 :生成的图片在构图、光影、时代氛围上符合描述,且能与之前测试的角色图在画风上融合。
  4. 失败排查 :提示词不够具体;需要调整 ControlNet 权重;基础模型或 LoRA 不擅长该风格。

5.3 语音合成与情感匹配测试

测试目的 :验证 TTS 模型合成的语音是否自然,能否体现台词中的情绪。

  1. 输入 :一段角色台词,如“(冷笑)你以为这样就能瞒天过海吗?”
  2. 操作 :在 GPT-SoVITS 等工具的推理界面,输入文本,选择对应角色模型,尝试调整语速、音调,或使用“情感参考音频”。
  3. 成功标准 :合成语音自然流畅,音色与角色匹配,能听出“冷笑”的情绪色彩。
  4. 失败排查 :训练数据缺乏情感多样性;文本前端处理(分词、韵律预测)不佳;可尝试在文本中加入情感标签(如 [laugh] ,取决于模型是否支持)。

5.4 端到端单场景流水线测试

测试目的 :将以上环节串联,对一个完整场景(画面+配音)进行生产。

  1. 流程 :
    • 剧本 -> 生成该场景画面。
    • 剧本 -> 生成该场景角色 A 和 B 的对话音频。
    • 使用剪辑脚本,将画面与两段音频对齐,并添加字幕。
  2. 成功标准 :最终输出的短视频片段,音画同步,字幕准确,观感连贯。
  3. 失败排查 :时间轴对不齐(需精细调整剪辑脚本);音频音量不均衡;字幕出现时间错位。

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. 最佳实践与使用建议

  1. 项目化管理 :为你的短剧项目建立清晰的目录结构。
    /drama_fengwei
    ├── /scripts          # 剧本、分镜文本
    ├── /models           # 基础模型、LoRA、TTS模型
    ├── /training_data    # 角色训练图片、语音素材
    ├── /workflow         # ComfyUI 工作流 JSON
    ├── /src              # 自动化脚本
    ├── /temp             # 临时生成文件
    ├── /output_scenes    # 生成的场景图
    ├── /output_audio     # 合成的音频
    └── /output_final     # 最终视频成品
    
  2. 标准化流程 :将验证成功的生图参数、TTS 参数、剪辑参数记录成配置文件(如 config.yaml ),确保每一集的质量稳定。
  3. 版本控制 :对关键脚本、工作流、配置文件使用 Git 进行版本管理。每次生成的结果可以打上时间戳或版本号。
  4. 版权合规先行 :
    • 只使用明确声明可商用的开源模型和 LoRA。
    • 角色设计尽量原创,避免与知名作品雷同。
    • 背景音乐(BGM)使用无版权音乐或购买授权。
    • 在视频说明中明确标注“AI 生成”。
  5. 迭代优化 :第一集可能粗糙,但要坚持。每完成一集,复盘哪个环节最耗时、效果最差,集中精力优化那个环节(例如:优化提示词模板、升级 TTS 模型、改进剪辑脚本)。
  6. 备份与归档 :定期备份训练好的 LoRA 和 TTS 模型,这是你项目的核心资产。

10. 总结与下一步

制作《凤帷医心》这样的 AI 原创短剧,最大的价值在于实践了一套完整的 AIGC 应用流水线。它证明了个体创作者完全有能力驾驭多种 AI 工具,将创意转化为具象的视听内容。

对于想要尝试的读者,建议按以下路径开始:

  1. 第一步(核心) :先攻克 角色一致性(LoRA 训练) 和 语音克隆(TTS 训练) 这两个基石。确保你能稳定生成“同一个人”和“同一个声音”。
  2. 第二步(验证) :制作一个 1 分钟左右的单场景短片 。包含 3-4 个镜头、几句对话。走通从剧本到成片的完整流程,暴露所有问题。
  3. 第三步(优化) :基于单场景的经验, 编写自动化脚本 ,将重复劳动(如批量生图、批量合成语音)交给程序。
  4. 第四步(扩展) :探索更复杂的动态生成(图生视频)、更精细的后期(调色、音效),提升作品质感。

最容易踩的坑是“贪多求全”,一开始就想做复杂的运镜和特效。正确的做法是“先跑通,再优化”,用最简单的静态图片+配音+字幕的形式,把第一集故事讲清楚。技术是为故事服务的,当你的流水线稳定后,就可以将更多精力投入到剧本创作和叙事节奏上,这才是 AI 短剧真正吸引人的地方。

这套技术栈是开放的、可扩展的。未来,随着视频生成模型的进步,你可以将静态场景替换为动态片段;随着多模态大模型的发展,分镜描述甚至可以直接由模型根据剧本生成。保持对工具链的更新和迭代,你的“数字制片厂”会越来越高效。建议收藏本文,在实践每个环节时回头查阅对应的部署和排错指南。

Logo

邀请您加入社区

更多推荐