
手书类同人创作看起来是“画一堆图然后剪辑”但真要把《石纪元》千幻七年if这样的设定做成一支完整视频就会碰到一连串工程问题角色在不同镜头里是不是同一张脸、舞蹈动作能不能连续、几十张关键帧怎么批量出、配音和字幕怎么对齐、显卡不够怎么省着跑。这篇文章不聊剧情分析只把“手书”拆成一条可执行的 AI 辅助生产流程从环境搭建、角色一致性控制、批量出图到视频合成给你一套可以直接照做的方案。先说结论这套流程不是某个单一软件能完成的而是由“AI 绘图 角色一致性控制 批量任务 动态化 配音 剪辑”组合出来的内容生产管线。你不需要写复杂代码但需要理解每个环节的输入输出以及最容易翻车的几个点——尤其是角色一致性、显存占用和批量生成的稳定性。下面从能力拆解开始。1. 核心能力速览以《石纪元》千幻七年if手书这个项目为例整条制作流程可以拆成六个环节每个环节对应一类工具和一组技术约束。能力项说明项目类型同人动画手书ACG 二创视频内容内容基础基于《石纪元》角色“浅雾幻”等设定的七年 if 向同人叙事核心生产环节角色设定图、关键帧绘制、动作连续帧、配音音频、字幕、视频合成工具类型AI 绘画Stable Diffusion / ComfyUI、TTS 配音、FFmpeg 剪辑合成硬件要求推荐 N 卡 8GB 以上显存显存不足可降低分辨率或使用 CPU 推理但速度会明显变慢显存占用取决于模型、分辨率和 batch 大小以 512×512 为基础分辨率测试更稳妥实际占用需本机验证启动方式本地 WebUI / ComfyUI 工作流 / API 服务是否支持 API支持可通过 HTTP 接口批量提交生成任务是否支持批量任务支持脚本循环调用或队列方式均可合规边界同人创作需尊重原作版权不商用不滥用角色形象配音若涉及他人声音需获得授权把“做手书”当成一条 pipeline 来看很多问题就变得可量化关键帧生成是图像生成任务动作连续是序列约束任务配音是 TTS 任务合成是视频编码任务。每一段都可以单独测试单独优化。2. 适用场景与使用边界这个流程适合以下情况想做同人手书但不会手绘希望用 AI 辅助生成画面。已经会用 Stable Diffusion但需要解决“同一个角色在不同镜头里保持一致”的问题。需要批量出几十张关键帧不想一张一张手点。想给手书加配音但暂时没有录音条件需要 TTS 快速生成参考音轨。想通过 API 把绘图、配音和剪辑串成半自动流程。不适合的场景也要说清楚如果你追求完全精确的作画风格AI 生成的连续性可能达不到手绘标准需要后期修图。如果你没有角色素材的合法来源不建议直接抓取第三方图片训练模型。如果你的目标是正式商用或参加商业赛事请先确认同人授权规则很多同人设定不允许商业化。合法合规是底线。同人创作涉及原作角色使用范围要控制在个人学习、非商业展示、平台允许的同人创作范围内。角色形象、美术风格、音乐素材都要确认授权。涉及声音克隆、真人配音或者对特定声音进行模仿时必须获得本人授权不能直接拿别人的声音做合成。发布前要重新确认画面和音频素材的版权状态避免后续纠纷。3. 环境准备与前置条件做这条 AI 手书流程最核心的环境是绘图服务。下面给出一套通用检查清单具体版本以你使用的工具为准。3.1 硬件检查GPUNVIDIA 显卡优先建议 8GB 以上显存。6GB 显卡也可以跑但分辨率、模型大小和 batch 数都要保守。CPU只用于数据预处理不是主要计算单元。没有 GPU 时 CPU 也能推理但速度会慢很多。内存16GB 或以上更稳妥。磁盘模型文件通常需要数 GB 到十几 GB建议预留至少 20GB 空间。3.2 软件检查Python 3.10 或 3.11用于 Stable Diffusion WebUI / ComfyUI 运行。Git用于克隆项目仓库。FFmpeg用于视频合成和音频处理。NVIDIA 驱动和 CUDA 环境具体版本以绘图工具要求为准。3.3 目录结构建议建议单独建一个工作目录把输入、中间产物、输出分开避免几十张图堆在一起。project_root/ ├── models/ # 大模型、LoRA、VAE ├── inputs/ # 参考图、角色设定图、背景图 ├── outputs/ # 关键帧、视频片段、字幕、最终视频 ├── scripts/ # 批量生成脚本、合成脚本 └── configs/ # 工作流 json、提示词模板这样的目录结构在批量任务里优势明显脚本按目录读取输入按目录写入输出失败重试时不会把全部文件翻一遍。4. 安装部署与启动方式绘图环节建议从 Stable Diffusion WebUI 或 ComfyUI 入手。这里以 WebUI 为例演示通用部署流程ComfyUI 的方式类似。4.1 克隆项目并安装依赖git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui python -m venv venv source venv/bin/activate # Windows 下为 venv\Scripts\activate pip install -r requirements.txt依赖安装耗时较长建议使用国内镜像源加速。4.2 准备模型文件将你选用的底模放入models/Stable-diffusion/目录角色 LoRA 放入models/Lora/目录。如果你没有现成的角色 LoRA也可以先用参考图走图生图流程但一致性会弱一些。4.3 启动服务python launch.py --listen 127.0.0.1 --port 7860启动成功后浏览器访问http://127.0.0.1:7860。如果端口被占用换一个端口python launch.py --port 7861如果不需要 Web 界面只打算用 API 批量提交任务也要先启动服务因为 API 依赖同一个后端。4.4 用 ComfyUI 工作流做关键帧如果你更习惯节点式流程ComfyUI 的好处是方便保存工作流参数换镜头时只改提示词和输入图其他节点保持不变。你需要先把工作流 json 放进 ComfyUI 的user/default/workflows目录然后在界面里加载。ComfyUI 里可以提前封装好“角色一致性检查”的工作流输入参考图经过图生图或 ControlNet 控制输出新镜头关键帧。这样的工作流可以直接复制多份批量跑不同镜头。5. 功能测试与效果验证环境跑起来后不要直接冲几十张图。先做最小测试确认每个环节的输出质量稳定再扩大规模。5.1 角色设定图测试测试目的确认角色形象符合预期包括发型、服装、配色。输入示例浅雾幻, 石纪元风格, 银紫色长发, 狐狸般微笑, 深色外套, 站姿, 全身, 干净背景, 高细节操作步骤在 WebUI 的 txt2img 页面输入提示词。分辨率先设 512×768。采样步数 20 步左右。生成 4 张挑选最接近的一张作为角色基准图。判断是否成功角色外貌可辨认画风稳定没有肢体崩坏。如果这一步都不过关后面所有镜头都会歪先调提示词或换模型。5.2 多视角一致性测试测试目的验证角色从不同角度、不同画面构图中仍然保持同一张脸。操作步骤把上一步选中的角色基准图上传到 img2img。修改提示词描述新姿势、新表情。重绘幅度控制在 0.4 到 0.6 之间。如果测试图中脸部“漂移”优先检查参考图清晰度是否足够。采样器和步数是否设置过低。是否有适用的角色 LoRA 或 IPAdapter 做特征锁定。5.3 舞蹈动作连续帧测试“异常跳舞的女孩”这类镜头最怕动作断裂。先用 5 张关键帧做小规模测试不要上来就生成 20 张。操作步骤确定舞蹈动作的起止状态。按时间顺序拆出 5 个关键姿势。每一张都用上一张作为参考图输入到 img2img逐步变化。检查每两张之间的姿势差异是否过大过大则增加中间帧。判断成功标准连续播放 5 张图时动作变化是渐进的而不是突变。5.4 视频合成验证生成连续帧后先用 FFmpeg 合成一段短预览ffmpeg -framerate 8 -i frame_%04d.png -c:v libx264 -pix_fmt yuv420p preview.mp4这里的frame_%04d.png是连续帧命名规则8 帧每秒是手书常用低帧率。如果画面有明显跳变回到上一步补充中间帧。6. 接口 API 与批量任务单张出图适合测试批量出图必须走 API。SD WebUI 启动时默认启用/sdapi/v1/txt2img和/sdapi/v1/img2img接口可以用脚本批量提交。6.1 文生图批量生成脚本下面是一个通用 Python 调用示例实际地址和参数需要按你本机的接口版本调整。import requests import json import time api_url http://127.0.0.1:7860/sdapi/v1/txt2img prompts [ 浅雾幻, 跳舞, 姿势1, 舞台灯光, 高细节, 浅雾幻, 跳舞, 姿势2, 舞台灯光, 高细节, ] for idx, prompt in enumerate(prompts): payload { prompt: prompt, negative_prompt: lowres, bad anatomy, extra fingers, width: 512, height: 768, steps: 20, batch_size: 1, n_iter: 1, } response requests.post(api_url, jsonpayload, timeout300) if response.status_code 200: data response.json() with open(foutputs/frame_{idx:04d}.png, wb) as f: f.write(base64.b64decode(data[images][0])) print(fframe {idx} done) else: print(fframe {idx} failed: {response.status_code}) time.sleep(1)脚本里prompts列表可以改成从文本文件读取便于维护镜头表。建议每张图之间加time.sleep(1)避免短时间请求过多导致服务不稳定。6.2 图生图批量关键帧对连续镜头用 img2img 接口把上一帧作为输入import base64 import requests import json def img2img(input_path, prompt, output_path): with open(input_path, rb) as f: img_b64 base64.b64encode(f.read()).decode(utf-8) payload { init_images: [img_b64], prompt: prompt, denoising_strength: 0.5, width: 512, height: 768, steps: 20, } response requests.post( http://127.0.0.1:7860/sdapi/v1/img2img, jsonpayload, timeout300, ) if response.status_code 200: data response.json() with open(output_path, wb) as f: f.write(base64.b64decode(data[images][0])) return True return False使用图生图时denoising_strength是关键参数。数值太高会偏离参考图数值太低则动作变化不明显。建议在 0.4 到 0.6 区间测试。6.3 批量任务队列建议批量生成几十张图时直接在循环里逐个请求不够健壮。更稳妥的做法是先把所有镜头的提示词和输入路径写入一个 JSON 配置。脚本顺序读取并生成。每张图生成后保存单独日志。失败任务重试 2 到 3 次仍失败则记录失败原因不中断整个队列。{ shots: [ { type: txt2img, prompt: 浅雾幻, 跳舞镜头1, 正面, output: outputs/shot_001.png }, { type: img2img, input: outputs/shot_001.png, prompt: 浅雾幻, 跳舞镜头2, 侧面, output: outputs/shot_002.png } ] }这样做的核心价值是断点续跑某一帧失败时不会把前面已经生成的结果覆盖掉。6.4 配音与字幕处理手书需要配音时可以单独起一个 TTS 服务。这里以通用 HTTP 接口为例提交文本返回音频文件。具体工具和参数以你选用的 TTS 项目文档为准不要假设所有 TTS 服务的接口都一样。curl -X POST http://127.0.0.1:5000/tts \ -H Content-Type: application/json \ -d {text: 七年之后的我们还是走到了这一步。, voice: zh-CN-XiaoxiaoNeural} \ --output voice_001.mp3音频生成后结合 FFmpeg 将音频拼到视频上ffmpeg -i preview.mp4 -i voice_001.mp3 -c:v copy -c:a aac -shortest output.mp4字幕可以用常见剪辑软件直接加也可以生成 SRT 文件后批量合成。字幕对齐需要按音频实际时长调整建议先导出音频听一遍再卡时间轴。7. 资源占用与性能观察手书类项目最大的资源瓶颈在绘图阶段。下面给出性能观察和降载的思路。7.1 显存占用怎么看启动绘图服务后用 NVIDIA 自带工具实时查看nvidia-smi重点看进程对应的显存占用。显存占用的高低与四个因素直接相关底模参数量。输出分辨率。batch size。是否同时加载了多个 LoRA。分辨率从 512×512 提高到 1024×1024显存占用通常会有明显上升。实际数值以你本机测试为准不要只看别人的配置就照搬。7.2 如何降低显存占用如果显存不足按优先级调整降低分辨率从 512×512 或 512×768 开始。把 batch size 设为 1。减小输出批次n_iter。关闭不需要的扩展插件。有分辨率插件或分块绘制机制时按工具文档启用。关掉其他占用显存的程序。7.3 CPU 推理的取舍没有 NVIDIA 显卡时CPU 也能跑但速度会慢很多。建议只在测试阶段用 CPU 跑一两张验证效果正式批量生成仍然建议用 GPU。如果你的机器是 Mac可以关注对应工具的 Apple Silicon 支持情况不同框架差异较大需要单独查文档。7.4 端口和进程残留批量任务跑完服务进程可能仍占着显存和端口。下次启动前先查看端口占用lsof -i :7860如果端口被占用要么杀掉旧进程要么换端口启动。8. 常见问题与排查方法问题现象可能原因排查方式解决方案启动页面打不开端口被占用或服务未启动查看启动日志检查端口换端口或重启服务生成图片全是黑图模型加载失败或采样器冲突查看后端报错换模型重新加载检查 VAE角色脸部不一致参考图不够清晰、没有角色 LoRA、重绘幅度过高对比多张输出训练/使用角色 LoRA降低重绘幅度出图速度特别慢分辨率太高、模型太大、CPU 推理查看 nvidia-smi 和日志降分辨率换小模型换 GPU显存不足崩溃分辨率或 batch 过高查看显存占用降低分辨率batch 设为 1API 请求超时批量任务排队太久观察服务日志减小单图耗时增加 sleep 间隔批量任务中间卡住单张图失败导致脚本退出看日志定位失败图加重试机制跳过失败项视频合成后音画不同步音频时长和视频时长不匹配对比音频时长用 FFmpeg 截取或调整音频速度提示词生效不明显模型版本与提示词风格不匹配换更合适的底模使用更懂该画风的二次元模型排查原则是从日志开始不是从设置开始。绘图服务启动时控制台会打印大量信息遇到任何异常先把控制台日志完整看一遍。9. 最佳实践与使用建议9.1 第一次先小规模验证不要一上来就批量生成 50 张关键帧。先用 5 张走完整个流程绘图 → 关键帧 → 合成预览 → 配音 → 输出 mp4。任何环节出了问题都能在小范围内快速定位。9.2 保留一套最小可运行配置当你找到合适的提示词、采样器、分辨率和重绘幅度后把参数整理成配置模板。后续新镜头只改提示词和输入图不反复调试基础参数。9.3 文件按“输入 / 中间产物 / 输出”分开管理脚本运行时统一从inputs读取参考图把过程图和结果图写入outputs。避免把参考图、生成图、废图混在一起否则批量任务很难追踪。9.4 批量任务必须加日志和失败重试批量生成时建议每张图都打一条日志包含文件名、耗时、是否成功。失败任务重试 2 到 3 次仍失败就跳过并记录原因最后统一处理。9.5 接口服务限制访问范围本地 API 服务建议绑定127.0.0.1不要直接暴露到公网。如果确实需要局域网访问要加上访问控制避免被别人直接调用你的推理资源。9.6 合规红线要提前确认同人创作不是无限制使用角色形象的理由。发布前需要确认是否在原作者和平台允许的同人创作范围内。是否包含商业用途。是否涉及他人肖像或声音。是否包含不适合公开展示的内容。所有 AI 生成素材、配音素材、背景音乐都要有合法的来源或授权这是发布前必须做的一道检查。10. 总结与下一步这支《石纪元》千幻七年if手书最有价值的地方不是它作为同人作品的内容设定而是它完整踩过了 AI 辅助内容生产的所有核心节点角色一致性、批量关键帧、动作连续性、配音和视频合成。你如果也想做一支类似的手书最先要验证的不是画质而是角色在不同镜头里能不能保持“同一张脸”。这个测试不过关后面批量出多少张都是在浪费时间。最容易踩的坑有三个第一是角色一致性第二是批量生成时任务稳定性第三是音画合成的对齐问题。前两个都可以用“小批量测试 日志 重试”解决第三个需要把音频和视频画到同一时间轴上看节奏。下一步可以继续扩展的方向包括用更完整的角色 LoRA 做更细的表情控制用 ControlNet 或 AnimateDiff 做局部动态效果把整条流程封装成带配置文件的自动化脚本如果要做成系列手书还可以设计统一的镜头脚本模板实现“一次配置多集复用”。建议先跑通“5 张关键帧 一段配音 一条 8fps 预览视频”再逐步加大规模。