Story2Video 技术实践:从故事文本到可发布短视频的 AIGC Pipeline

Story2Video 技术实践:从故事文本到可发布短视频的 AIGC Pipeline

💡 原文中文,约8500字,阅读约需21分钟。
📝

内容提要

本文介绍Story2Video技术实践,利用Amazon Bedrock、ComfyUI和Fish-Speech构建从故事文本到短视频的端到端AIGC流水线。系统通过结构化脚本生成、角色一致性图像编辑、TTS语音合成及后期合成,解决结构不稳定、角色漂移和音画同步问题,并详细说明架构、流程及部署步骤。

🔎

延伸解读

结构化中间表示是流水线稳定的关键

Story2Video 将 LLM 输出约束为 StoryScript 和 StoryShot,每个镜头包含 audio_type、speaker、duration 等字段。这种结构化设计让后续模块无需重新解析自然语言,直接按字段分支处理,有效解决了结构不稳定问题。对于构建类似 AIGC 流水线的团队,值得借鉴的是:在生成模型与下游任务之间引入明确的中间数据协议,能显著提升系统可控性和可维护性。

角色一致性依赖图生图链路与参考图

项目通过人物参考图和 Qwen Image Edit workflow,将带人物的镜头路由到图生图链路,纯场景镜头则走文生图,从而在灵活生成画面的同时尽量保留人物一致性。这提示我们,在涉及多镜头叙事的内容生成中,单纯依赖文生图容易导致角色漂移,结合参考图编辑是当前可行的工程化方案,但效果仍受模型能力限制,需在部署前验证。

音画同步依赖后期合成模块的兜底处理

最终合成阶段会统一生成 SRT、合并 TTS 音轨,并对每个分镜时长进行裁剪或补齐,以修正生成模型导致的时长漂移。这说明即使前置生成环节存在不确定性,通过后期合成模块的强制对齐,仍能产出时间轴尽量准确的视频。对于实际部署,建议重视 video_editing 模块的调优,它是保证成片可用的关键。

生产部署需拆分服务并关注资源隔离

文章建议生产环境将 Gradio UI、ComfyUI、Fish-Speech 拆成三个服务,便于分别扩容和问题定位。同时强调输出目录应挂载持久化磁盘,多人场景需加鉴权,耗时任务可引入队列系统。这些实践提示,AIGC 流水线从原型到生产,除了模型效果,还需考虑服务隔离、资源管理和任务调度等工程问题。

Q&A

Story2Video 主要解决什么问题?

Story2Video 旨在将故事文本自动转化为可发布的短视频,解决内容创作中脚本、分镜、配音、口型同步和字幕等环节的链路长、一致性难以维持的问题。

Story2Video 如何保证角色一致性?

通过人物参考图和 Qwen Image Edit workflow,将带人物的镜头路由到图生图链路,纯场景镜头则走 Z-image 文生图,从而在灵活生成画面的同时尽量保留人物一致性。

Story2Video 的架构分为哪几层?

分为五层:交互层(Gradio UI)、编排层(story_to_video_pipeline.py)、数据协议层(story_shot.py)、生成能力层(story_writer.py、comfyui_client.py等)、后期合成层(video_editing.py)。

Story2Video 如何处理音画同步问题?

在最终合成阶段,系统统一生成 SRT 字幕、合并 TTS 音轨,并根据每个分镜的目标时长裁剪或补齐音频,最后拼接视频并替换音轨,从而减少生成模型导致的时长漂移,保证音画同步。

Story2Video 中 TTS 语音生成是如何路由的?

根据 audio_type 字段路由:dialogue 使用角色音色,从 character_voice_map 中查找对应参考音频;narration 使用旁白参考音频;bgm_only 不生成 TTS。

部署 Story2Video 需要哪些主要组件?

需要 Python 环境、AWS Bedrock(用于图像理解和脚本生成)、ComfyUI(用于图像生成和视频生成)、Fish-Speech(用于 TTS),以及 FFmpeg 和中文字体。

Story2Video 如何解决结构不稳定问题?

通过将 LLM 输出约束为结构化 StoryScript 和 StoryShot,每个镜头包含 audio_type、speaker、dialogue_text、narration、visual_prompt、camera_motion、character_id 和 duration 等字段,使后续模块能直接读取结构化字段进行决策。

Story2Video 的最终输出包含哪些文件?

输出目录包含 story_script.json、status.json、subtitles.srt、final_video.mp4,以及 images/、audio/、videos/ 子目录,分别存放分镜图、音频和分镜视频。

🏷️

标签

➡️

继续阅读