
这次我们来看的不是一个新模型也不是某个开源框架而是一个很具体的创作需求COC跑团做预告PV。最近社团内部要发一条《奈亚的面具序章》的跑团预告标题也拟好了叫“我们团真的太有特‘色’了”。这里的“色”可以理解成视觉色彩也可以理解成角色个性和团的整体风格非常鲜明。问题在于团队里没有人会画画也没有人会剪复杂的动态视频。所以这件事的终点很明确在不依赖专业美术和影视团队的条件下把一页半的角色设定和跑团梗概变成一条能发出去的预告片。这条PV的制作链路本质上是一条AI工具流水线涉及角色立绘生成、图生视频、TTS配音、字幕压制和剪辑合成。整个过程没有什么高不可攀的门槛最常见的组合方式是“Stable Diffusion系本地部署 TTS语音合成 剪辑软件”大部分工具都能在消费级显卡上跑部分环节甚至可以直接用CPU推理完成。本文会把这条流水线拆开从素材准备、模型选择、批量出图、动态化、配音到最终发布检查全部过一遍。适合跑团主持人、玩家社群的内容运营以及所有想在低成本条件下做TRPG宣传素材的技术型玩家。另外提醒一句从制作到发布要特别注意“奈亚的面具”这个模组本身的版权边界。模组文本、官方美术图、NPC设定都属于原作者和发行方。粉丝向非商业PV可以做但不能把整本模组内容搬上来更不能拿去做收费或引流变现。下面的所有操作都默认是“自用素材 原创美术 非商业发布”的范围。1. 核心能力速览先给出这条预告PV制作流水线的全貌后面每一道工序都会单独展开。工序可选工具/模型类型硬件门槛批量/接口能力说明PV脚本整理大语言模型本地或在线无特殊要求可批量改写多段文案将跑团随笔改成可配音的短视频脚本角色立绘Stable Diffusion WebUI / ComfyUI4G以上显存可试建议8G以上支持API批量出图需要配合角色参考图保持一致立绘动态化图生视频模型 / AnimateDiff / 在线视频生成本地要求较高在线服务则无门槛通常按单条任务处理每次生成的镜头不宜过长配音开源TTS / 在线TTS / 音色克隆CPU可运行部分模型低显存也能跑可脚本批量生成干音涉及真人音色时必须获得本人授权字幕与剪辑剪映 / Pr / ffmpeg普通电脑即可支持字幕批量导入最后一步完成成片压制音频/视频素材管理目录结构 批处理脚本普通电脑即可强烈建议脚本化避免几十个素材手忙脚乱从整个流程看最卡硬件的环节是本地图像生成和视频生成。如果团队没有现成显卡也可以全部改用在线平台代价是排队、限额和费用。更稳妥的做法是立绘和视频走在线方案配音和剪辑走本地方案两边都尽量保留接口化批处理能力。2. 适用场景与使用边界2.1 这套流程适合谁首先是TRPG玩家社群。无论你是GM想给新团做个预告还是某个跑团节目组需要季播宣传物料这套流程都能在1到2天内出一条60秒左右的完整PV。它不需要你会画画也不需要你懂分镜关键是能把“角色特征”“团风”“模组氛围”翻译成提示词和镜头描述。其次是做AI内容生产测试的人。跑团PV是一个很典型的“多模态组合任务”涉及图、文、声、画而且需要批量处理。它比单纯生成一张图有意思得多也比单纯跑一个TTS更能验证工具链的稳定性。你可以把它当成一次小规模的AI内容流水线实战。2.2 不适合什么场景如果目标是做一条“完全手绘风格、讲究精确分镜、达到商业动画水准”的预告那这套AI辅助流程不适合。AI生成的角色一致性仍然需要花时间和参考图做约束很难像专业美术那样随时调整角度、表情和动作。如果想用真实跑团录像剪辑那也不属于本文讨论范围本文讲的是“以AI生成立绘/动态素材为核心”的预告PV路线。2.3 版权、肖像和隐私边界这是最容易踩坑的部分。模组版权“奈亚的面具”是Chaosium出版的经典战役模组国内玩家讨论和二创很常见但发布预告PV时不应直接搬运模组原文、官方地图、官方立绘。正确做法是只使用模组名称和大致氛围台词由玩家原创。角色版权如果角色是某位玩家的原创PC做成PV前最好和玩家确认授权。声音授权如果打算克隆某位主持人的音色来做旁白必须获得对方明确同意。不建议使用陌生人的音色素材。AI内容标识多数视频平台要求AI生成内容进行标识发布前要按平台规则勾选或说明。肖像权不要用真人照片直接作为角色的底图。3. 素材准备与前置条件3.1 从跑团文档中提炼PV脚本先准备一份可以“被消费”的文本素材。通常包括跑团结团动机也就是这一团为什么组起来。每个PC的角色卡摘要包括职业、外貌特征、标志性道具、口头禅。模组序章的关键事件清单比如“调查员收到一封神秘邀请函”。团里的名场面或梗比如某位PC的经典失败动作。建议把这些内容整理成一个纯文本文件每行对应PV里的一句或一段文案方便后续TTS批量处理。如果文案比较口语化也可以先丢给本地大语言模型润色但最终要经过人工确认不要拿第一版就直接配音。3.2 角色立绘与场景素材预告PV最常见的形式是“角色立绘 场景背景 少量动态效果 字幕台词”。所以需要准备每个PC的半身立绘建议统一比例比如2:3或者9:16。场景背景如旧日支配者的祭坛、昏暗的旅店、迷雾中的街道。道具特写比如发光的面具、泛黄的书信、老式打字机。如果按传统工作流这些东西需要请画师。走AI路线时它们的生成成本会大幅降低但整理成本依然存在所以建议建一个清晰的素材目录。3.3 音频素材音频分两类。一类是TTS生成的干音也就是角色台词。另一类是环境音和BGM比如钟声、风声、打字机声、古典悬疑配乐。BGM可以去免费音效网站找注意查看授权条款不要拿商业配乐库的曲目直接做公开视频。3.4 本地工具链检查清单在开始操作前按下面清单检查环境。检查项要求说明操作系统Windows 10/11、Ubuntu 20.04本地部署Stable Diffusion系列工具Windows下调试更方便Python3.10 或 3.11绝大多数图像/视频/TTS项目都在这个区间GPU驱动NVIDIA驱动已安装新版PyTorch对驱动版本有最低要求CUDA/PyTorch按模型要求安装不强制手动装CUDA装PyTorch时会带对应运行库磁盘空间至少预留40G模型文件、临时素材、输出视频都会占空间端口占用7860、7861、8188等WebUI默认端口冲突时需要换端口如果只是用在线工具那只需要浏览器和足够的网络带宽。但本地部署能更好地解决隐私和批量成本问题。4. 技术选型不同团怎么办不用一开始就把所有工具都装上。建议先想清楚团队条件和目标效果再决定技术路线。4.1 零基础路线在线AI生成 剪辑软件如果你没有显卡也不打算学复杂部署那就用在线AI绘画和在线图生视频。典型链路是在线绘画生成角色立绘 - 图生视频工具让立绘产生轻微动态 - 在线TTS生成旁白 - 剪映合成字幕和BGM这条路线优点是没有安装成本缺点是排队、限额、以及角色一致性可能不如本地可控。对于一条60秒的粉丝向PV来说完全够用。4.2 本地图像生成Stable Diffusion 系如果手头有8G显存以上的NVIDIA显卡推荐在本地跑Stable Diffusion WebUI或ComfyUI。这样做的直接好处是可以批量出图、接入角色参考图、反复调整提示词而不产生额外费用。启动本地WebUI的思路如下具体命令以你下载的整合包或官方仓库说明为准# 假设已经把项目克隆到本地 cd stable-diffusion-webui python launch.py --xformers --api其中--api参数会开启API服务方便后面脚本批量调用。端口默认是7860浏览器访问http://127.0.0.1:7860即可打开Web界面。4.3 动态化图生视频 / AnimateDiff本地图生视频方案主要有两类。一类是ComfyUI里的AnimateDiff等节点可以用一张立绘生成一小段几秒钟的动态镜头另一类是独立的视频生成模型或者在线视频生成服务。从使用成本看在线图生视频更容易上手但要控制单次生成时长通常几秒钟一个镜头。本地AnimateDiff对显存要求比较高建议第一次先用小分辨率测试。4.4 配音TTS 与音色克隆配音是整条PV里最能出效果的一环。跑团预告PV通常需要一个沉稳的旁白声再加上角色台词可以切换不同音色。比较稳妥的做法是旁白用普通的开源TTS做低音调处理。每个NPC的台词单独生成再在剪辑软件里做EQ和混响。如果团队中有声音表现力强的成员直接录音比任何TTS都好不要为了用AI而用AI。4.5 剪辑合成最后用剪映或Pr把所有素材拼起来。剪映对字幕导入比较友好可以先把TTS生成的文本转成字幕文件再批量调整时间轴。这里推荐的做法是先确定配音轨再根据配音节奏摆放画面而不是先摆画面再配音。5. 角色立绘批量生成与一致性控制做跑团预告PV时最影响观感的是角色形象不一致。同一个PC上一秒金色短发下一秒变成棕色卷发整个预告就毁了。所以立绘生成要分两步先固定角色设定再批量出不同动作和表情。5.1 写角色提示词提示词里要包含这几类信息角色外貌发型、发色、眼睛颜色、服饰。世界观基调COC风格、旧日报纸、昏暗烛光、洛氏恐怖。角色状态严肃、紧张、恐惧、冷静。画面控制半身像、统一背景色、高质量插画。下面是一个通用模板masterpiece, best quality, 1girl, golden short hair, blue eyes, suit, holding a letter, investigator, 1920s attire, dark room, candlelight, horror atmosphere, upper body portrait, looking at viewer, tense expression Negative prompt: lowres, bad anatomy, bad hands, extra fingers, watermark, text实际写提示词时可以按角色卡替换描述。注意跑团PV不需要特别复杂的物理逻辑重点是角色气质和氛围统一。5.2 用API批量出图在WebUI搭建好之后可以不需要手动一张张点生成直接调用API。以WebUI常见接口为例批量脚本大致长这样python generate_characters.py --input characters.json --output ./outputs对应Python脚本的调用逻辑可以写成import json import requests # 提示接口路径和参数以当前WebUI版本为准 api_url http://127.0.0.1:7860/sdapi/v1/txt2img with open(characters.json, r, encodingutf-8) as f: characters json.load(f) for char in characters: payload { prompt: char[prompt], negative_prompt: lowres, bad anatomy, extra fingers, watermark, width: 768, height: 1024, steps: 25, batch_size: 4, cfg_scale: 7 } resp requests.post(api_url, jsonpayload, timeout600) data resp.json() for idx, img_b64 in enumerate(data[images]): img_data base64.b64decode(img_b64) filepath f{char[name]}_{idx}.png with open(filepath, wb) as f: f.write(img_data) print(f已生成: {filepath})注意base64模块要先导入时间超时要结合本机推理速度调整。批量出图时不要一次开太多任务不然显存会直接打满。5.3 保持角色一致性常用的方法有两种。一是“参考底图图生图”把第一张最满意的角色图作为底图后续用低重绘幅度生成不同表情。二是在ComfyUI里挂ControlNet或角色参考模型通过参考图约束人物特征。这两种方案都需要自己跑一下才能找到合适的参数没有固定的万能值。5.4 素材目录管理推荐这样规划目录pv_project/ ├── scripts/ # 批量生成脚本 ├── characters/ # 每个角色一个子目录 │ ├── alice/ │ ├── bob/ │ └── keeper/ ├── scenes/ # 场景背景和道具图 ├── audio/ │ ├── tts/ # 干音 │ └── bgm/ # 配乐 ├── video_clips/ # 图生视频小片段 └── output/ # 最终成片命名建议用“角色名_动作_序号”这种格式避免最后剪辑时找不到素材。6. 把立绘变成动态素材预告PV全部用静态图会显得比较平。大多数人会选择让立绘在画面中有轻微浮动、眨眼、扭头、镜头推拉等效果。6.1 生成动态素材的几种方式方式说明适用情况在线图生视频上传立绘输入动态描述生成短视频片段低门槛适合快速出效果ComfyUI AnimateDiff本地生成短动画控制和自由度更高有显卡和一定ComfyUI基础Live2D/手动骨骼动画让立绘像游戏形象一样动态表现需要较多手工调参剪辑软件关键帧对静态图做位移、缩放、模糊最稳定不消耗显存对跑团PV来说不需要每个角色都有一大段动态。建议只做三个部分开场角色特写、谜之面具道具特写、结束时所有角色的快速剪影闪过。每段3到5秒就够了。6.2 图生视频提示词模板在线图生视频一般会要求输入一个动作描述不要写太复杂一个动作对应一段视频。参考方向a person slowly turning head, candlelight flickering, subtle smokea golden mask on a desk, light reflections, slow zoom in生成后先预览几遍画面崩坏就直接删掉重来不要硬留。本地模型生成视频时分辨率、步数和帧数都会明显影响显存占用先用小尺寸测试再按实际效果放大。6.3 画面节奏预告PV节奏建议是“悬念引入 - 角色出场 - 冲突预告 - 主题口号”。拿“奈亚的面具”举例开场黑屏字幕背景是打字机声音。出现“1925年纽约”字样。角色出场每个调查员依次出现每人一句性格介绍。冲突预告画面切到面具道具旁白说“有些东西不该被看见”。结尾快切所有角色停在标题“奈亚的面具序章”。这段分镜不需要特别专业但足够让观众了解团队风格。7. 配音与音频处理7.1 TTS文本准备每个角色的台词建议单独存成文本文件并按“角色名_集数_序号”命名。不要把所有台词挤在一个txt里否则后面批量处理TTS时很难定位。台词要写清楚停顿和语气。大多数TTS对逗号、句号、省略号比较敏感可以预先把长句断开。比如夜色降临。黑暗里的低语从未停止。 你收到了一封没有署名的邀请函。 ——那上面印着一张金色的面具。7.2 多角色音色开源TTS模型很多比如ChatTTS、CosyVoice、GPT-SoVITS等。它们对音色控制、多音字和长文本的支持各有不同具体用哪个要看项目文档。可以先给旁白和NPC各生成一段测试音频听一下语气是否符合预期。如果选音色克隆方案必须满足两个前提采样素材来自本团队成员或已获授权并且只在本项目内使用。不要拿网上找到的配音博主素材来做克隆。7.3 批量生成干音假设你本地或云端有一个TTS服务可以用脚本批量提交文本。注意这不是某个特定项目的固定接口只是通用示例实际要以你部署的TTS服务文档为准。import requests tts_url http://127.0.0.1:9880/tts lines [ (keeper_01, 夜色降临黑暗里的低语从未停止。), (alice_01, 我总觉得这封信来路不明。), (bob_01, 面具又是面具。), ] for name, text in lines: payload {text: text, speaker: keeper if name.startswith(keeper) else npc} resp requests.post(tts_url, jsonpayload, timeout120) if resp.status_code 200: with open(faudio/tts/{name}.wav, wb) as f: f.write(resp.content) print(f完成: {name}) else: print(f失败: {name}, {resp.status_code})命令行下也可以用ffmpeg对生成的干音做响度统一、静音裁剪和格式转换ffmpeg -i input.wav -af silenceremovestart_periods1:start_threshold-50dB, loudnormI-16:LRA11:TP-1.5 -ar 44100 output.wav7.4 音频后期TTS干音往往比较平。剪辑软件里可以给旁白加一点混响、压低背景音乐、提升人声频段。跑团PV的音频目标是“听得清楚、气氛吓人”不需要搞太复杂。8. 接口 API 与批量任务设计这条流水线最大的工程价值是可以把立绘生成、TTS、字幕导出都脚本化。哪怕这一版只做一条PV也建议先搭一套半自动脚本方便后续更新。8.1 建立素材清单配置文件把角色、台词、场景、输出路径集中到一个 JSON 文件里。这样做的好处是渲染完发现某个角色立绘不好看只需要改配置不需要改代码。{ project: masks_of_nyarlathotep, characters: [ { name: alice, prompt: investigator woman, 1920s dress, golden hair, tense, negative_prompt: lowres, watermark, images: 4 } ], tts: { url: http://127.0.0.1:9880/tts, speaker: narrator }, output: ./output }8.2 任务队列与失败重试批量生成素材时最常见的失败原因是显存不足和网络超时。建议在脚本里加入日志与重试机制import time def generate_with_retry(payload, max_retry3): for attempt in range(max_retry): try: resp requests.post(api_url, jsonpayload, timeout600) if resp.status_code 200: return resp.json() except Exception as e: print(f第{attempt 1}次失败: {e}) time.sleep(10) return None失败的任务可以统一写入fail.log不要直接覆盖已生成的文件。对于一条PV来说素材量不算大但如果你是多视频系列这套队列能省下大量盯工时间。8.3 字幕导出TTS文本本身就是字幕内容。如果TTS每句台词对应一个音频片段就可以把台词文本按时间轴排列生成SRT字幕。手动在剪映里拖时间轴也可以但长视频更建议用脚本先排好。9. 资源占用与性能观察本地跑这套流程时需要重点观察三个时间段立绘生成时、视频生成时、视频压制时。9.1 显存占用具体数字要结合模型和分辨率没法给出一个固定值。但可以给出观察方法打开任务管理器或nvidia-smi查看GPU显存占用。立绘生成时如果分辨率从512x768提升到768x1024显存占用可能翻倍。视频生成阶段通常比单张图片高很多建议先在低分辨率下测试。如果出现“CUDA out of memory”优先降低分辨率、降低批次、减少视频帧数。使用nvidia-smi观察nvidia-smi -l 2这条命令每2秒刷新一次显存信息可以看到进程占用情况。9.2 CPU推理和GPU推理的差异TTS和一些小模型用CPU推理是可以接受的但立绘和视频生成用CPU会很慢。如果显卡不支持CUDA又不想在线服务那只能降低分辨率、减少步数并做好“一张图等几分钟”的心理准备。更合理的策略是图像和视频交给在线平台或远程GPUTTS和字幕留在本地。9.3 降低显存占用的几个技巧关掉其他占用显存的程序。图像模型打开--medvram或--lowvram启动参数以具体项目文档为准。降低batch size一次生成1张而不是4张。视频生成时缩短帧数比如只用8到12帧。把部分在线工具作为备用方案本地不够就跑在线。10. 常见问题与排查方法问题现象可能原因排查方式解决方案WebUI启动后网页打不开端口被占用或启动失败查看启动日志检查7860端口换端口如--port 7861批量出图过程中显存溢出分辨率/批次过大用nvidia-smi观察显存降低分辨率或批次使用低显存模式角色立绘人物五官崩坏提示词冲突或模型能力不足查看负面提示词和采样步数换大模型减少负面词冲突增加步数同一角色特征不一致没有角色参考图检查每张图种子和参考图用图生图或角色参考模型固定特征TTS生成音调呆板文本缺少标点和语气词检查台词文本断句增加逗号、句号、问号分短句生成图生视频生成结果和原图差异大运动幅度太大或重绘幅度过高降低运动描述强度改成轻微动作或多生成几次筛选视频压制后音画不同步音频采样率或帧率设置不一致查看成片帧率和音轨时长统一为25fps44100Hz发布时提示AI内容未标识平台要求查看平台AI内容声明规则按规则在投稿页面标识AI生成内容11. 最佳实践与发布检查最后整理几条对跑团预告PV最实用的建议。第一发布前一定要把“模组原文和AI生成长文”分开。预告PV的台词不要直接大段引用《奈亚的面具》原文而是在模组氛围基础上写原创口播稿。标题保留“奈亚的面具序章”用于表明粉丝向创作不影响原创内容判断。第二AI生成内容不要拿来直接冒充真人或官方创作。角色立绘如果用真人照片做底图必须得到照片本人同意。配音如果用真人音色克隆同样要授权最好在视频简介里说明部分内容由AI生成。第三批量脚本要保留。做PV不是一次性的活跑团系列可能会出第二集、第三集。把角色提示词、台词文本、素材目录全部整理好下一期只需要替换文案和微调提示词产出速度会快很多。第四每次发布前做一份效果复核清单角色名字是否和人物对得上。字幕是否有错别字和敏感词。NPC台词语气是否符合人设。音频里是否有爆音或环境噪音。是否加了模组原作者和粉丝向声明。是否按平台要求标记AI辅助生成内容。BGM和音效是否具备商用授权。这条PV能做出来的本质是把跑团过程中的角色魅力和团队氛围转成可传播的影像。工具只是辅助真正让观众觉得“这团真有特色”的还是剧本里那些只有你们团才有的名场面。下次再有人问“没有美术怎么做跑团PV”直接把这篇流程丢过去照着跑一遍就好。