这次我们来看一个同人手书创作流程目标作品是《残虹》副标题里那句“鉴定师我会一直看着你”基本就是整支片子的剧情锚点。和传统手绘动画不同这套流程不靠逐帧手绘而是用 AI 图像生成铺关键帧用图生视频把静态画面动起来再用 TTS 和剪辑工具把配音、字幕、成片收口。整个链路打通后一个人也能完成一支带剧情、带配音、带镜头节奏的短片。这个方向最大的痛点不是某个模型不会用而是流程太碎。今天出角色图明天做动态化后天配音每一步都换一个工具最后发现角色长得不一样、配音对不上嘴、分辨率混乱所有素材都无法拼接。所以这篇文章的核心不是单纯推荐某个绘图模型而是把“分镜 → 关键帧 → 动态化 → 配音 → 字幕 → 合成”拆成一条可落地的生产流水线并给出每一步的验证方法和排查思路。先给读者一个判断依据如果你已经有 NVIDIA 显卡想用 AI 辅助做剧情向同人动画或游戏二创短片这篇文章可以直接收藏如果你只是做单张插画不需要视频化也建议看关键帧生成和角色一致性这两节能减少大量返工。下面内容不绑定某个具体开源仓库而是按通用工具链展开所有版本、路径、接口参数都以你实际部署的环境为准。1. 手书项目定位与核心能力速览从标题看这个创作目标可以拆成几个关键要素《残虹》是作品名“鉴定师”是核心角色身份“我会一直看着你”是关键台词。整支手书的画面、配音、字幕都应该围绕这几个锚点展开。虽然这不是一个能被git clone的开源项目但完全可以用一套开源工具组合来落地。能力项说明项目类型同人动画手书创作AI 辅助生产流程核心环节角色设定、分镜脚本、关键帧生成、动态化、TTS 配音、字幕、剪辑合成主要工具图像生成 WebUI / ComfyUI、图生视频工具、补帧工具、TTS 服务、剪辑软件推荐硬件NVIDIA GPU 优先显存大小决定可测试的分辨率范围CPU 可用性字幕、时间轴、部分 TTS 可跑 CPU图像生成和视频生成建议 GPU启动方式图像生成工具走 WebUI / ComfyUITTS 可走本地 API 服务API 能力多数本地图像生成工具提供 HTTP API可做批量调用批量任务按分镜编号批量出关键帧、批量生成配音、批量导出片段输出形式视频成片mp4/mov 工程文件 提示词文本适合场景剧情向同人动画、游戏二创、视觉小说演出、动态封面这里要特别说明一个认知手书不是“点一下生成视频”就能完成的它是多阶段生产。越早把流程固定下来后面返工成本越低。建议从第一步开始就建立统一的目录结构和命名规则后面所有批量任务都会依赖这套规则。2. 适用场景与使用边界这组技术适合的创作者很明确想做剧情向短片、但手绘能力不足或时间有限需要大量角色差分图但不想每张都从零画需要配音但找不到合适声优希望用 API 把图像生成、TTS 接进自己的自动化流程里。它不适合的场景也要说清楚。如果你需要的是传统手绘动画那种精细逐帧张数AI 生成的中间帧还需要大量手工修正如果你要直接把某个角色的官方立绘拿来做训练或直接叠图就必须先确认授权边界。标题里的“异环”如果对应的是已有游戏或动画的世界观同人创作前要去查对应作品的二次创作政策。绝大多数游戏厂商允许非商业同人但允许范围和禁止项各不相同不能想当然。使用边界部分必须重点关注三件事第一不要用 AI 生成画面冒充官方原画或官方预告第二不要用未经授权的真人肖像、真实声纹做角色或配音第三BGM、音效、字幕字体都要检查授权尤其是要公开发布或参与活动时。还有一点容易被忽略如果你的手书会用到“某角色声音”而你是用真实声优的音频去克隆这基本属于侵权绝对不能用于公开传播。合规不是这篇文章的附加项而是流程设计的一部分。在搭建环境之前先确认你的创作素材来源能省掉后面很多不必要的麻烦。3. 环境准备与前置条件先做环境检查。手书生产链路里最吃硬件的环节是图像生成和图生视频所以第一步是确认机器状态。python --version git --version nvidia-smipython --version用于确认 Python 环境图像生成工具一般建议 Python 3.10 或 3.11具体以工具官方要求为准nvidia-smi用来查看驱动和当前显存占用也能确认 GPU 驱动是否正常。没有 NVIDIA 显卡也能做部分环节但出图速度会明显受限尤其是视频动态化阶段。磁盘空间要提前规划。图像模型文件动辄几个 GB视频片段也是占空间大户。建议使用下面这种目录结构把提示词、角色设定、关键帧、视频片段、配音、字幕、最终输出全部分开。project/ ├── 00_prompts/ │ ├── character_prompt.md │ └── shot_list.csv ├── 01_character/ │ ├── 01_ref_front.png │ ├── 02_ref_side.png │ └── lora/ ├── 02_keyframes/ │ ├── shot_001/ │ └── shot_002/ ├── 03_video_clips/ │ ├── shot_001.mp4 │ └── shot_002.mp4 ├── 04_voice/ │ ├── line_001.wav │ └── line_002.wav ├── 05_subtitles/ │ ├── shot_001.srt │ └── shot_002.srt └── 06_output/ └── final_cut.mp4依赖安装阶段最容易出问题的不是某一个库装不上而是多个 AI 工具之间 Python 环境冲突。比如图像生成工具需要 PyTorch 的 CUDA 版本图生视频工具可能依赖另一个 Python 版本如果全部装在同一个环境里经常出现依赖被覆盖的情况。更稳妥的方式是给不同阶段分别创建虚拟环境或者直接使用带独立运行时的整合包。端口规划也要提前做。图像生成 WebUI 和 TTS 服务可能同时在本机监听端口常见端口冲突点有7860、5000、8000。启动前可以先检查端口占用# Windows netstat -ano | findstr 7860 # macOS / Linux lsof -i :7860如果端口被占用就给服务指定新端口不要两个服务抢占同一个端口。后面做 API 批量调用时端口写错或服务没启动是最常见的连接失败原因。4. 制作流程总览从分镜到成片手书生产不是从“画图”开始的而是从“脚本”开始的。没有分镜就直接出图大概率会陷入反复返工。完整流程建议按下面这条链路走。第一步写分镜。把《残虹》这支短片按镜头拆开每个镜头包括画面内容、景别、动作、台词、时长。比如开头镜头可能是“鉴定师站在残虹遗迹前缓慢抬起头”对应台词“我会一直看着你”。分镜脚本不需要画得多好看文字能说清楚画面就行但一定要给每个镜头编号后面所有文件都用这个编号。第二步做角色设定。先确定“鉴定师”这个角色的外观关键词发色、发型、服装、配饰、道具、整体色调。这一步产出角色参考图和固定提示词目的是让后续所有关键帧都长得一致。第三步生成关键帧。按分镜编号批量出图一个镜头至少生成 4 到 8 张候选图选最符合分镜的一张作为动态化输入。太多人在这里急着进入视频生成结果角色崩了后面整个镜头都废掉。第四步做动态化。把选中的关键帧交给图生视频工具让静态画面产生运动。这个阶段重点看运动幅度是否合理画面是否会闪。如果画面闪可以在工具里增加帧数或降低运动强度也可以通过补帧工具让镜头更流畅。第五步配音和字幕。先写台词文本再用 TTS 批量生成音频回填到对应分镜。字幕文件按镜头时间轴生成 SRT 或 ASS。第六步剪辑合成。把视频片段、配音、字幕拖进剪辑软件调整每个镜头的先后顺序和时间长度加入转场和音效最终导出成片。这条链路每往后走一步返工成本都会翻倍。所以不要在还没验证角色一致性时就急着生成 100 张图不要在没有跑通一个镜头的情况下就批量处理整支片子。先跑通单镜头再复制到全片。5. 关键帧生成与角色一致性验证关键帧是整个手书的画面地基。这里要注意文生图直接生成的画面很难保证角色一致必须把角色参考图、固定提示词、LoRA 或 ControlNet 组合起来用。最基础的做法是固定角色描述词。比如“鉴定师”这个角色你可以把下面这组词写入每一张图的提示词形成角色卡。character: jian_ding_shi, short dark blue hair, gold eyes, black coat, silver badge, calm expression每次生成时都带上这组词配合负面提示词过滤常见崩坏negative_prompt: lowres, bad anatomy, bad hands, extra fingers, missing fingers, watermark, text, logo这样只能减少随机性不能保证完全一致。更强的做法是先生成一张角色正面参考图然后用图生图模式让模型围绕参考图继续生成其他角度。再进阶一步是训练一个角色 LoRA从多张同一角色的图片中学习特征后续出图时加载 LoRA角色一致性会明显提升。LoRA 需要准备 10 到 30 张同一角色的图片训练参数需要按显卡显存来调不建议新手一上来就训练。如果用图像生成 WebUI可以通过接口批量出图。下面是一个通用调用示例端口、接口路径和参数会根据你部署的 WebUI 版本有差异执行前先确认本机服务已启动。import requests url http://127.0.0.1:7860/sdapi/v1/txt2img payload { prompt: masterpiece, best quality, jian_ding_shi, short dark blue hair, gold eyes, black coat, silver badge, looking at viewer, ruins background, negative_prompt: lowres, bad anatomy, bad hands, extra fingers, watermark, text, logo, steps: 25, width: 640, height: 960, batch_size: 4, cfg_scale: 7.0, } resp requests.post(url, jsonpayload, timeout300) if resp.status_code 200: print(生成成功) else: print(resp.status_code, resp.text)出图后一定要做一致性验证。先看角色脸型是否一致再看服装配色有没有漂移最后看手部、眼睛、发梢这些细节是否崩坏。如果几张图角色长得完全不像优先检查提示词是否统一、参考图是否生效、LoRA 权重是否合适。如果只是个别张手崩了可以用局部重绘修一下不需要重跑整批。关键帧阶段还有一个容易忽略的问题分辨率。手书最终是视频所以关键帧不能只用低分辨率。常见做法是先出低分辨率找构图确定后再放大重绘输出高分辨率关键帧。直接一上来生成超高分辨率可能出现构图变形、细节丢失而且显存占用会明显增加。6. 动态化图生视频、补帧与批量输出关键帧确认后进入动态化阶段。这一步把静态画面变成短视频片段比如“鉴定师抬头”这个动作就是从一张抬头前的关键帧生成一个持续数秒的镜头。图生视频工具的操作逻辑基本类似输入一张参考图设置运动幅度、帧数、分辨率然后让模型在画面内部生成运动。运动幅度不能盲目拉高幅度越大画面结构越不稳定人物越容易扭曲。比较好的做法是先用小幅度测试确认人物不变形再加动作细节。如果视频画面出现闪烁、跳变有两个调整方向。一是降低运动幅度让变化更平缓二是增加帧数让运动衔接更细腻。部分图生视频工具支持补帧功能补帧后画面会更流畅但渲染时间会变长对显存和内存的要求也会提高。这个阶段可以做批量任务但建议按分镜编号逐批处理而不是一个脚本把所有镜头全部丢进去。批量处理时输入目录结构要清晰比如02_keyframes/shot_001.png对应输出03_video_clips/shot_001.mp4。处理完一个镜头先检查这个镜头再处理下一个。批量任务中断后也要能够跳过已完成的分镜从上次失败的位置继续。批量动态化里最容易出问题的不是模型而是输入文件命名。如果分镜编号有冲突或者输入图片尺寸不统一视频输出很容易对不上号。建议在批量脚本里做三件事检查输入图片是否存在、检查输出文件是否已存在、记录失败日志。# 伪代码用于说明批量任务的基本结构具体命令按实际工具调整 for img in 02_keyframes/shot_*.png; do name$(basename $img .png) if [ -f 03_video_clips/$name.mp4 ]; then echo skip $name continue fi echo process $name # 此处调用图生视频命令 done动态化阶段还需要考虑镜头语言。整支手书不能所有镜头都是“图片轻微动两下”要有推、拉、摇、固定景别的变化。不同景别和运动方式的镜头交错出现节奏感才会出来。如果你对镜头调度不熟可以先把分镜脚本里的景别要求写清楚动态化时再按镜头的情绪选择运动幅度。7. TTS 配音、字幕与剪辑合成画面动态化跑通后先把配音做出来。标题里的台词“我会一直看着你”是全片的核心不要只在最后出现一次可以把它放在开头或高潮位置让台词和“鉴定师抬头看镜头”这个画面形成呼应。TTS 工具选型看两个点角色音色是否稳定、是否支持批量调用。先把台本整理成纯文本按行拆开每行对应一个配音片段。如果你需要固定的“鉴定师”音色测试阶段就锁定一个声音配置不要每段台词换一个音色。TTS 服务通常支持参考音频用一段目标音色音频让模型学习音色特征之后批量生成的音频就会保持一致。下面是一个通用 TTS 批量调用示例服务地址、鉴权方式和请求字段需要按你本机 TTS 服务实际接口调整。import requests tts_url http://127.0.0.1:5000/tts lines [ {text: 我会一直看着你。, voice: jian_ding_shi}, {text: 残虹这就是你的选择吗。, voice: jian_ding_shi}, {text: 鉴定师别走。, voice: other_role}, ] for idx, line in enumerate(lines): resp requests.post(tts_url, jsonline, timeout120) if resp.status_code 200: file_path f04_voice/line_{idx:03d}.wav with open(file_path, wb) as f: f.write(resp.content) print(saved, file_path) else: print(failed, idx, resp.status_code, resp.text)配音生成后不要直接合成先按分镜顺序试听一遍。重点检查台词节奏是否符合画面。TTS 生成的语音往往比较平如果台词需要强烈情绪需要在文本端加标点或者在上游工具里调整语速、情感。逐字逐句生成音频的最大好处是可以对单句重生成不需要整段重新跑。字幕建议单独生成 SRT 文件不要直接烧死在视频里这样后期修改错别字或调整时间轴都不需要重新导出视频。字幕的时间轴可以按配音音频的实际时长对齐。机器自动对齐不一定准确发布前需要人工过一遍特别是标点、断句和“多音字”错读问题。剪辑合成阶段把视频片段、配音、字幕、音效和 BGM 按分镜顺序拖入时间轴。剪辑时不要只做拼接要处理镜头的转场。转场越简洁越好黑场过渡适合情绪转折硬切适合动作戏闪白适合回忆或冲击性画面。如果视频片段之间有跳变可以通过微调每个视频片段的起点和终点来平滑衔接。8. 资源占用与性能观察手书生产链路里图像生成和图生视频是资源消耗最大的两个环节显存不足、生成变慢、进程崩溃都集中在这两个阶段。先学习观察资源占用再决定参数怎么调。观察显存和 GPU 占用最简单的方式是每隔一段时间刷新一次nvidia-smi也可以让它持续刷新nvidia-smi -l 2这个命令每 2 秒刷新一次能实时看到显存占用、GPU 利用率和进程列表。如果你在 Windows 上可以用任务管理器里的 GPU 面板观察。显存占用会随分辨率和 batch 数明显变化。分辨率越高显存占用越大批量生成张数越多显存占用也越大。显存不足时优先降低分辨率和 batch size不要一次性丢太多任务。还有一个常见优化是把batch_size调成 1配合批量脚本逐张生成这样慢但稳定。如果做动态化时内存持续走高常见原因是视频帧数据在内存里堆积。建议单镜头处理完就释放当前进程不要在一个进程里跑几千帧。输出视频的帧率和分辨率也要和实际发布平台匹配盲目输出 4K 长视频渲染时间会成倍增加而且不一定用得上。CPU 和 GPU 的差异也要注意。图像生成、视频生成和补帧这类计算密集型任务GPU 提升非常明显但 TTS 和字幕对齐这类轻量任务CPU 也能完成。所以合理做法是GPU 专注出图和动态化CPU 跑配音和字幕生成两条线并行处理能明显缩短整体制作时间。9. 常见问题与排查方法这组问题在手书制作里非常典型第一次跑流程可以直接对照排查。问题现象可能原因排查方式解决方案角色脸型每张都不一致提示词不统一、没有使用角色参考图或 LoRA检查提示词是否固定确认参考图功能开启建立角色卡使用图生图或训练角色 LoRA手部、眼睛崩坏模型能力或提示词权重不足单独生成特写测试使用负面提示词局部重绘修正生成时提示显存不足分辨率或批量数过高运行 nvidia-smi 查看显存占用降低分辨率、batch size关闭后台占用显存的进程视频画面闪烁、跳变运动幅度过大、帧数不足输出片段后逐帧检查降低运动幅度增加帧数或补帧配音和画面不同步配音时长和分镜时长不匹配检查音频波形和视频片段长度调整片段入出点重新生成对应台词TTS 接口调用失败服务未启动、端口不对、请求体字段不匹配检查服务日志落盘测试请求按实际接口文档调整 URL、鉴权和字段批量任务中断后重复处理脚本没有跳过已完成文件查看输出目录已有文件在批量脚本中增加已存在输出则跳过的逻辑WebUI 页面打不开端口被占用或服务启动失败查看启动日志、检查端口换端口启动或关闭占用端口的进程除了表格里的这些问题还有一个很常见的“隐性失败”图像生成服务虽然成功返回了结果人眼检查后却不符合剧情要求。所以每个环节都要保留人工检查点。生成关键帧后先看一遍动态化片段生成后先看一遍配音合成前先试听一遍。自动化流程负责提效人工负责判断质量。10. 最佳实践、合规要求与下一步验证最后把这套流程的工程化建议整理一遍。第一先小步跑通单镜头。不要一上来做整支手书挑选《残虹》里最核心的一个镜头比如“鉴定师看着镜头说出‘我会一直看着你’”把从关键帧到合成视频的整条链路跑通。这个镜头如果能完成整支片子就完成了百分之八十。第二建立提示词和参数版本记录。角色提示词、负面提示词、采样步数、分辨率、运动幅度这些参数都要存进00_prompts目录。没有参数记录换个电脑再打开你根本不知道自己当时怎么生成这张图的。第三使用增量输出。每个分镜单独输出不要把所有结果覆盖到同一个文件。批量脚本要写成“已完成跳过、失败记录日志”的形式方便断点续跑。第四注意合规边界。如果你要公开分享或参加活动先确认《异环》或对应作品的二创政策AI 生成画面建议做明确标注配音演员的声音、BGM、音效、字体都要使用已授权素材不要用真人声纹做未经授权的角色配音。第五效果复核后再发布。AI 生成的内容难免有异常帧、错误文字、多音字误读发布前把成片完整播放一遍至少要检查字幕错别字、口型对齐、语音情感、转场是否合理。后续可以从两个方向继续扩展。一个是增加更多自动化把关键帧批量生成、动态化、语音合成接入同一个任务队列做成一个独立的批量渲染脚本另一个是提升表现力为“鉴定师”角色训练更精细的 LoRA加入可控姿势和镜头调度让镜头语言更接近真正的动画分镜。建议先把这一版的流程跑通再决定往哪个方向投入时间。做手书和写代码一样先跑通最小闭环再谈复杂优化。