OmniScript: Towards Audio-Visual Script Generation for Long-Form Cinematic Video¶
会议: ECCV 2026
论文: ECCV 论文页
项目: OmniScript
代码: https://github.com/TencentARC/OmniScript
领域: 视频理解
关键词: 视听剧本生成、长视频理解、角色记忆、思维链、分段奖励
一句话总结¶
OmniScript 将电影视频转写为带时间定位的分层剧本,通过角色记忆辅助的数据构建、视听深层融合、剧情思维链与事件级分段奖励,使 8B 模型在 5 分钟视频上的事件 Overall F1 达到 37.7、[email protected] 达到 69.3,但尚未全面超过闭源模型。
研究背景与动机¶
电影理解不只是概括“发生了什么”:同一个角色可能换装、离开画面后继续说话,配乐和表情又会改变台词的含义。问答或短片描述可以省略这些细节,剧本转写却要回答谁在什么时间做了什么、说了什么,并把动作、表情、台词和声音分别落到可检索的字段里。Movie101 一类角色感知叙述与密集视频描述提供了基础,但通常没有同时覆盖这种细粒度字段拆分和跨场景叙事连续性。
真正的瓶颈不只是上下文窗口。独立标注每段视频会把同一个人写成不同身份;直接生成长 JSON 又容易让角色关系、事件顺序与局部细节脱节。评估同样困难:整体语义相似度可能认可一篇大意正确的摘要,却忽略遗漏的一句台词或时间错位的动作。原文还指出,约 2 分钟视频就可能需要约 4,000 个输出 token,因此细节密度本身会给生成带来负担。
本文把训练数据、模型和评价协议一起围绕剧本结构设计,而不是只给通用模型加一段提示词。核心 idea:先用角色记忆建立一致的剧情监督,再让视听模型先推理剧情与人物关系、后输出逐事件剧本,并用局部事件匹配奖励约束细节遗漏和错配。
方法详解¶
整体框架¶
输入是带原始音轨的电影或电视剧片段,输出是 JSON 风格的分层剧本。顶层保存标题、时长和角色表,场景层记录地点、环境与时间属性,事件层记录时间戳、角色以及至少一个内容字段:台词、动作、表情或音频线索。事件主体也可以是环境,不要求每个声音都归属某个人。
系统有两条应当分开的路径:离线数据构建用角色档案记忆贯穿多个片段;部署模型则从同步视听输入出发,通过 AV-DeepStack 融合与剧情思维链生成剧本。分段奖励用于后训练,不是推理时需要调用的外部评审器。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
Raw["原始影视视频"] --> Memory["角色记忆标注"]
Raw --> Fusion["视听深层融合"]
Memory -.->|离线监督| Reason["剧情引导解码"]
Fusion --> Reason
Reason --> Script["场景与事件剧本"]
Script -.->|训练时预测| Reward["事件分段奖励"]
Human["人工标注剧本"] -.-> Reward
Reward -.->|GRPO 后训练| Reason
这里的连线区分了推理数据流与训练监督。CPM 属于教师标注流程;论文没有证明 8B 推理模型也携带同一个跨片段档案管理器,不能把数据引擎的记忆机制直接当作部署能力。
关键设计¶
1. 角色记忆标注:先解决跨片段身份,再细化到逐事件监督
作者从超过 10K 条原始影视视频中,用 PySceneDetect 按场景边界切出约 45K 个语义连贯片段,通常短于 5 分钟。Gemini-2.5-Pro 读取当前视听内容和角色档案管理器(Character Profile Manager,CPM)中的历史信息,先生成以角色为中心的剧情解释,同时更新服装等会随时间变化的属性。因此,“穿白衣的人”和后来出现的同名角色有机会被关联起来,而不是在拼接片段时才补救。
CPM 还采用延迟命名:身份不明时先保留临时 ID,后续对白出现明确姓名后,再回溯升级为正式身份并合并重复记录。随后 Gemini 结合剧情解释与原始视听输入生成细粒度剧本,DeepSeek 再从剧本反向提炼剧情和人物关系的中间思考,组成 Video → Thinking → Script 监督。它是教师构造的推理轨迹,不等同于对真实内部推理过程的观测。
2. 视听深层融合:让同一时刻的声音与画面反复参与语言推理
模型以 Qwen3VL-8B 为骨干,音频编码器初始化自 Whisper large-v3。视觉帧和原始音频先转为带时间索引的 token,在对应时间单元中配对视觉与音频表示,避免画面动作和画外音落入不相干的时间上下文。这里加入音频并不只是为了识别字幕内容,还要覆盖旁白、环境声音和背景音乐。
在 Qwen3-VL 的 DeepStack 思路上,AV-DeepStack 将配对后的视听特征通过残差多模态适配器注入多个 Transformer 层,而非只在输入端拼接一次。后续语义推理可以多次接触感知证据,这是它区别于纯视觉骨干直接做剧本微调的地方。正文没有给出各注入层的精确配置、采样率和 token 压缩细节,因此不能据此补写实现超参数。
3. 剧情引导解码:先明确人物关系与剧情进展,再生成局部字段
模型先输出一段由剧情摘要和角色关系状态构成的思维链(CoT),之后才生成场景上下文与有序事件。这个中间状态解决的是角色归属和局部细节之间的依赖:如果没有先理解谁在对谁说话,逐条转写台词即使字面正确,也可能把事件挂到错误角色上。
输出从场景到事件逐级展开,并将台词、动作、表情与声音拆成独立字段。同一时刻可以有角色动作和环境音等不同记录,不必把一切压进一句综合描述。作者构造的剧情专用 CoT 在消融中有效,并不意味着任意通用模型打开 Thinking 模式都会提升;主表中的若干通用 Thinking 变体反而更差。
4. 事件分段奖励:按局部对应关系评价细节,而不是只看整篇大意
评价首先用文本内容引导事件对齐,在时间邻近和区间不重叠约束下,以动态规划求解保持顺序的加权区间调度问题。这样可以先判断两个事件是否在描述同一内容,再独立评估时间位置,避免只按时间交并比匹配时把“内容对、时间稍偏”的预测完全丢弃。角色别名则由 LLM 辅助解析后通过受语义约束的二分图映射统一,防止一个预测角色随意匹配多个真实身份。
对齐后,动作、表情等语义字段由 LLM 评价相似度;台词用归一化 Levenshtein 距离衡量文本差异;角色经身份映射后做精确匹配。字段分数同时考虑预测量和真值量,所以多写并不能免费提高召回。RL 使用 GRPO,将这些局部字段评价作为分段奖励,区别于对完整长剧本给单一全局语义奖励;主文没有公开完整奖励权重,不能杜撰组合公式。
按原文第 4.1 节,令各对齐组的字段相似度为 \(S_g\),预测和真值字段数量为 \(N_{\mathrm{pred}}\)、\(N_{\mathrm{gt}}\),其软计数精确率、召回率与 F1 为:
Overall 是各字段 F1 的平均值。时间评价另将组间 tIoU 达到阈值的匹配计为命中,对时间精确率与召回率求调和平均;表中的 [email protected] 是该阈值下的时间 F1,不是平均 IoU。协议定义了 0.1、0.3、0.5、0.7、0.9 阈值,但主表只展示 0.1,不能由此宣称严格边界定位已经解决。
一个完整示例¶
图 1 中,Dai Xi 在家中擦楼梯扶手,随后停下并说话,全息 AI 接着作答。模型需要先识别双方身份与互动,再将她的动作、表情、台词和轻快背景音乐分别归入对应事件,而不是只生成“她与 AI 在家中交谈”的摘要。
原图展示了 00:04 的 Dai Xi 事件与 00:08 的全息 AI 事件:角色切换需要身份理解,AI 的电子合成声和画外音类型需要声音证据,楼梯扶手动作需要视觉证据。这个例子说明的是输出结构与证据分工,并非额外的成功率实验;角色记忆只在跨片段标注时提供身份历史。
损失函数 / 训练策略¶
训练按正文的实际顺序可理解为三阶段基础训练,再接 RL 精修:
- 模态对齐:约 1M 条中英双语影视样本,以带时间戳 ASR 监督训练新增音频投影器,冻结 Whisper、ViT 与 LLM;随机遮挡视频帧,减少模型仅依赖画面的倾向。
- 多模态预训练:约 2.4M 条领域内视频,全量微调核心组件,联合无/有时间戳 ASR、摘要、密集描述和时间定位任务,继续使用随机帧遮挡。
- SFT:约 45K 条视频,其中 21K 条横屏电影/电视剧、24K 条竖屏短剧,训练剧情 CoT 与结构化剧本输出,并随机遮挡字幕。
- RL:在小规模高质量人工剧本上用 GRPO 与分段奖励后训练;正文未列出这部分数据的确切规模和完整优化超参数。
原文第 5.2 节称“四阶段”却又写成“之后接 RL”,第 6.1 节则称“三阶段”,与列举方式不完全一致。本笔记按四个实际列出的步骤解释,不把它扩展成不存在的第五个阶段。第 5.2 节将对齐阶段的可训练组件具体写为音频投影器,第 6.1 节用更泛化的“模态投影器”表述,精确实现仍需代码核实。
实验关键数据¶
主实验¶
基准来自 10 部完整影视作品,共 19.9 小时、约 1.4K 个场景和超过 16.8K 个事件,平均每分钟 14.1 个事件。自动生成的初稿经标注员修订,再由资深专家逐份核查。不同长度子集分别含 200 个 5 分钟、100 个 10 分钟、50 个 15 分钟、40 个 20 分钟、30 个 25 分钟和 25 个 30 分钟片段;它们来自同一批作品,不能当作大量独立影片。
下表摘录原文表 1、2 的 5 分钟结果,分数按原文百分制列出;Overall 均为对应层级的字段 F1 均值,时间列均为 [email protected]。
| 模型 | 参数规模 | 事件 Overall | 台词 F1 | 事件时间 F1 | 场景 Overall | 场景时间 F1 |
|---|---|---|---|---|---|---|
| Qwen3VL-8B | 8B | 27.7 | 49.6 | 47.6 | 40.9 | 60.6 |
| Qwen3VL-235B-A22B | 235B / 激活 22B | 33.0 | 58.6 | 62.0 | 53.4 | 72.8 |
| Gemini-3-pro | 未报告 | 38.9 | 68.8 | 64.4 | 57.0 | 75.3 |
| Gemini-2.5-flash | 未报告 | 43.6 | 75.5 | 74.3 | 52.3 | 69.6 |
| Seed-2.0-pro | 未报告 | 40.9 | 68.1 | 67.1 | 57.2 | 75.5 |
| OmniScript | 8B | 37.7 | 72.2 | 69.3 | 52.4 | 74.6 |
相对 Qwen3VL-235B-A22B,OmniScript 的事件 Overall 增加 4.7 个百分点、事件时间 F1 增加 7.3 个百分点;但场景 Overall 为 52.4 对 53.4,低 1.0 个百分点。它的台词和事件时间分数超过 Gemini-3-pro,事件 Overall 却仍低 1.2 个百分点,不能将局部优势写成全面领先。
消融实验¶
原文表 3 隔离了剧情 CoT 和奖励设计的作用。保留全部五个配置,避免把“加入 RL”与“换成分段奖励”的效果混为一谈。
| 训练配置 | CoT | 奖励 | 台词 F1 | 事件 Overall | [email protected] |
|---|---|---|---|---|---|
| SFT | 否 | 无 | 68.2 | 35.3 | 66.6 |
| SFT | 是 | 无 | 71.0 | 37.0 | 68.9 |
| SFT+RL | 否 | 分段 | 70.9 | 37.0 | 69.0 |
| SFT+RL | 是 | 全局 | 69.0 | 37.0 | 68.7 |
| SFT+RL | 是 | 分段 | 72.2 | 37.7 | 69.3 |
CoT 单独使 Overall 从 35.3 到 37.0,提升 1.7 个百分点。在同样启用 CoT 的 RL 条件下,分段奖励相对全局奖励将 Overall 从 37.0 提至 37.7、台词 F1 从 69.0 提至 72.2。收益并非所有字段同步提升:表 3 中音频字段为全局奖励 12.3、分段奖励 11.6。
原文表 4 在推理时遮挡字幕,直接检查台词识别是否依赖画面文字这一捷径。
| 模型 | 字幕 | 台词 F1 | 事件 Overall | [email protected] |
|---|---|---|---|---|
| Qwen3VL-235B-A22B | 可见 | 58.6 | 33.0 | 62.0 |
| Qwen3VL-235B-A22B | 遮挡 | 7.7 | 18.6 | 45.1 |
| Gemini-3-pro | 可见 | 68.8 | 38.9 | 64.4 |
| Gemini-3-pro | 遮挡 | 60.9 | 36.6 | 60.3 |
| OmniScript | 可见 | 72.2 | 37.7 | 69.3 |
| OmniScript | 遮挡 | 63.8 | 34.4 | 67.0 |
关键发现¶
- 字幕遮挡后,OmniScript 台词 F1 下降 8.4 个百分点,Qwen3VL-235B-A22B 下降 50.9 个百分点。证据支持前者具有字幕之外的语音感知能力,但不支持其完全不依赖字幕。
- 表 5 的 SFT 对照中,加入音频及相应预训练的模型将台词 F1 从 52.0 提至 68.2、Overall 从 31.1 提至 35.3;[email protected] 却从 68.2 降至 66.6。该对照不能单独证明 AV-DeepStack 每层注入的贡献,也不能说音频改善了一切指标。
- 图 4 显示所有模型随视频变长而退化;作者报告 OmniScript 在 30 分钟子集超过 Seed-2.0-pro。缓存没有提供曲线的精确数值,因此这里只记录趋势,不估读数值。
- 最终模型事件音频 F1 仅 11.6、表情 F1 为 31.9,说明台词进展远大于细微声音与情绪理解的成熟度。
亮点与洞察¶
- 输出结构本身就是监督设计。将“谁、何时、动作、台词、表情、声音”拆开后,模型无法仅靠一段流畅摘要掩盖字段缺失,错误也更容易定位。
- 延迟命名适合有身份揭示的叙事。先保留临时身份,再随对白证据回溯合并,比强行对每个片段立即赋予确定姓名更符合电影信息逐步出现的特点。
- 分段奖励把评价粒度与输出粒度对齐。其可迁移价值在于给长结构化生成提供局部错误信号,而非把“长答案看起来像真值”当作充分条件。
局限与展望¶
- 作者承认细微属性与边界定位仍困难。主表主要报告宽松的 [email protected],未来应同时公开更严格阈值和短事件表现。
- 基准虽有密集标注,但只有 10 部作品;本次正文没有提供充分的训练/测试作品去重细节、跨语言分组结果或显著性区间,泛化结论仍需更广验证。
- 语义对齐与字段评分依赖 LLM,不能理解为纯确定性的“可验证奖励”。评审模型偏差、角色映射误差及教师生成风格都可能影响分数。
- CPM 主要在数据构建侧;需要额外实验才能确认模型在更长连续视频中维持身份状态的能力,不能用 30 分钟测试代替整部电影转写验证。
- 参数规模小不等于端到端开销已低。正文未报告训练成本、吞吐量、显存或长剧本生成时延,而 CoT 还会增加输出;实用效率有待测量。
相关工作与启发¶
- vs Movie101 / Movie101v2:角色感知电影叙述关注可读描述,OmniScript 进一步要求场景、事件和多模态字段的显式拆分与时间定位,评价目标不再只是描述是否通顺。
- vs TimeChat-Captioner:同期工作提供带时间的场景级视听描述;本文强调事件级原子字段,减少动作、意图与台词混在概括段落中的歧义。
- vs Qwen3-VL / Qwen3-Omni:前者缺少原始音频输入,后者虽支持音频,也不自动具备剧本结构遵循能力。本文证据支持领域数据与后训练的重要性,而非证明所有通用全模态模型都弱于纯视觉模型。
- 可延伸方向:在相同数据、相同音频预算下独立消融深层融合与输入端融合,并联合报告严格时间阈值、身份一致性和每分钟视频的生成成本,才能进一步拆清改进来源。
评分¶
- 新颖性: 4/5,分层 V2S 任务、角色记忆标注和局部奖励形成完整方案,但模型组件建立在已有骨干与 GRPO 上。
- 实验充分度: 3/5,有多尺度对照、CoT/RL 与字幕实验,但作品数、结构消融和效率测量仍有限。
- 写作质量: 4/5,输出 schema 与实验问题较清晰,训练阶段表述和复现细节有待统一补足。
- 价值: 4/5,为影视转写提供可操作的字段定义与评价框架,实际落地仍受细节准确率和生成成本限制。