- name
- ai_videos__时长节奏
- description
- AI 短剧时长/节奏合理性大师——裁决每个 shot 的时长是否 make sense:台词/独白在这个秒数里念不念得完(算语速)、动作在这个秒数里演不演得开、戏剧 beat 是不是被赶或被注水拖长。当用户说"这镜时间够不够念台词/独白""语速会不会飙""时间不够做动作""这镜是不是太长在干站/注水""时长 make sense 吗""帮我配一下每镜时长"时触发。它按 PA1–PA6 算 字数÷时长、动作 beats 总时长、配音时长目标之和,判定该不该加时长/精简/拆镜,并落地调 时长/Duration/动作时间窗/配音时长目标,通知 dialogue/action 重配内容。
# 时长 / 节奏合理性大师(pacing master)
裁决 `ai_videos/{name}/` 每个 shot 的**时长到底该是多少**:把这一镜要承载的**台词/独白**(念得完吗、语速会不会飙)、**动作**(演得开吗、关键动作给够秒数没)、**戏剧 beat**(是被赶还是被注水拖长)三者放一起算,给出"加时长 / 精简 / 拆镜 / 调短"的裁决并落地。它是 `台词大师`(台词字数÷时长)与 `动作表演`(动作 beats 铺满)各管一半的**汇总仲裁层**——补上"没人从整体看这镜时长合不合理"的缺口,并抓"时长太长在干站/为凑预算撑长"这类反向问题。
本 skill 由 `ai_videos__审查总编排` 在单镜层调用(动作之后、光线之前);时长 4–15s 硬范围归 `格式契约` K11,本 skill 做范围内的"该多少秒"精算。
## 何时用
- 用户说"时间够不够念台词/独白""语速会不会飙""时间不够做动作""这镜太长在干站/注水""时长 make sense 吗""帮我配每镜时长"。
- `ai_videos__审查总编排` 单镜层第 6 道工序(台词、动作都已settled后做时长仲裁)。
## 基准(中文台词语速 + 动作可读秒数)
- **平述/快切镜** ≤ 5 字/秒;**自然台词** ≈ 4 字/秒;**内心独白 / 情绪镜 / 慢镜** ≈ 3–3.5 字/秒(更慢,留气口)。标点不计字。
- **动作**:每个关键物理动作(起身/转身/拔刀/反转/钩落)要给"看得清"的秒数,被压进 1 秒内会糊。
- **时长按 beat 给**:4–15s,戏剧 beat 需要多少给多少;**不为凑 Seedance 预算把短 beat 撑长**(ai_video.md:无"填满预算"压力)。
## 审查标准(每个 shot 过)
| # | 准则 | 不合格信号 | 怎么改 |
|---|---|---|---|
| PA1 | **台词念得完(按"每句各自的角色语速"算·不是全镜一个5)** | 某句台词字数 ÷ 该句时长目标 > **该角色语速上限**→念不完、吞字、配音飙。上限分音色:普通快切≤5、自然对白≈4、**配音块标「偏慢/苍老/气虚/虚弱/低声」或老者/孩童/重伤垂死等慢嗓角色≈3–3.5**、内心独白/情绪/慢镜≈3。各句各自算、再看总和塞不塞得进时长 | **修法优先级(2026-07-12 修正·拆镜先于删台词)**:① 加时长(≤15s);② **拆成更多 shot**(每镜给够秒数 + 承接 token,把长台词按语义分句摊到相邻镜;**拆点选自然静止/换气处**——动作不过缝·衔接契约 v2 §2①);③ 精简台词(交 `台词大师`)**仅当该句确属冗余重复·最后手段**——硬 exposition(规则/批文/世界观)绝不为塞时长压缩,宁拆镜。**慢嗓句必须按其低速给秒数**(老者17字÷3.4≈5秒、不能按5字/秒压到3.4秒) |
| PA2 | **慢嗓/独白语速 + 别卡上限作者化** | ① 内心独白/情绪/慢镜按 >3.5 字/秒排;② **慢嗓角色对白**(老者/虚弱/气虚)按普通 4–5 排;③ **把字数卡在阈值上限**作者化(如 4.86/5)——句末感叹/停顿/换气吃掉时间、末字被吞(2026-06-20 shot08 老者"小恩公"的"公"被吞教训) | 独白/慢嗓按其低速 ~3–3.5 给更宽时长;**留安全余量**:慢嗓句目标 ≤3.5、普通句 ≤4、不贴 5 的天花板;配音块 `语速` 字段写"逐字念全、莫吞末字" |
| PA3 | **动作演得开** | `动作:` 各 beat 时间窗加起来 > 时长,或关键动作(钩落/起身/转身/反转)被压进过短秒数 | 加时长,或交 `动作表演` 简化非关键动作、把秒数让给关键动作 |
| PA4 | **配音时长目标自洽** | 各句 `台词配音` 块 `时长目标` 之和 > shot 时长(没留转场/停顿余量) | 调各句时长目标或 shot 时长,使之和 ≤ 时长且留余量 |
| PA5 | **不赶不拖** | 时长明显短于 beat 需要(赶);或长于 beat 需要(注水:干站、空镜硬撑、为凑预算拉长) | 调到该 beat 实际需要的秒数;拖长镜砍到位或补一个有信息量的动作 beat(非装饰) |
| PA6 | **拆镜阈值** | 单镜要塞的台词 + 动作合起来 > 15s 容量 | 拆成两镜各给够时长 + 连续性 token;或把台词/动作分配到相邻镜 |
| PA7 | **集级节奏(完播率律·红果)** | 整集时长不落 90–120s;或全集无「黄金前 3 秒钩 / 15s 一反转 / 30s 一推进 / 结尾 10s 卡点」的节奏起伏(开场冗长、中段平、结尾无钩) | 重排镜序与各镜时长,使前 3 秒有钩、约每 15s 一次反转、每 30s 一次推进、结尾 10s 留卡点;整集合计落 90–120s——见 ai_video.md §14.3 |
| PA8 | **镜内换气口·对白与独白/转情绪间留静默(2026-06-20 教训:shot08 主角答完"没事"立刻接内心独白、太快)** | 同一镜里两段台词**紧贴无停顿**——尤其**对白结束→紧接内心独白**、或情绪要从 A 转 B 却没给沉淀时间;配音两句无缝相接、像抢话、独白突兀 | 在两段之间插一个 **0.5–1 秒静默 beat**(`动作` 加一段无台词的留白:垂眸/呼吸/目光落下/手部小动作),并在 `台词:`/`配音块` 标"前段结束→静默约1秒→再起";shot 时长按需 +0.5~1s(守 ≤15s)。**对白后转独白、独白前、情绪大转折前**默认留气口、不紧接 |
| PA9 | **首尾帧接缝两端 0.3s 台词静默(承接/尾锁镜·follow-up 2026-06-27)** | 参与首尾帧承接的镜在**接缝端 0.3s 内**仍有台词/独白/旁白发声——出片端接缝抹平(裁定格死帧/缓动回弹)会丢约 0.2s 音频、把那句吞字发哑。判定:① **交接源镜**(有 `尾帧锁定:` / 末帧供下镜承接)末 0.3s 有声;② **承接镜**(`衔接: 承接 shotNN`)首 0.3s 有声;③ 链中段镜两端都接 | **可用台词时长=镜时长 − 0.3s(单端接)/ −0.6s(两端接)**,按此重算 PA1「字数÷时长 ≤4」;不够念就 ① 加时长(守 ≤15s);② 把接缝端那句移到相邻**非接缝**镜;③ 精简(交 `台词大师`)。落地:交接源镜末 0.3s 只留动作收势/定格 beat、承接镜首 0.3s 只承接续动不开口;在 `动作:` 时间轴 + `台词:`/配音块标出台词起止已缩进 0.3s。硬切镜不受约束。详见 ai_video.md 衔接与接缝契约 v2 §3③(运动承接镜同样适用) |
## 集级事实表(每集自动算·派生缓存)— 2026-06-20 新增
单镜逐句过 PA1 容易漏「压线过」的句子(shot08 老者 4.86/5 险过、却吞字)。所以**集级**用脚本一次性重算、把超速句全摊出来:
- `python tools/ep_metrics.py <drama> <epNN>` → 生成 `episodes/{ep}/metrics.md`:逐镜逐句的 字数 / 时长目标 / 字每秒 / 按音色的上限 / ⚠超速判定 + 集级汇总(镜数·总时长·总字数·平均字每秒·超速句数)。
- **何时跑**:每集剧本/分镜定稿或**任何 shot 时长/台词 update 后**,重跑刷新;metrics.md 标 `自动生成·勿手改`,是从 shotNN.md 派生的缓存(非 authoring 面)。
- **怎么用**:metrics.md 里每条 ⚠ 即 PA1/PA2 命中项,逐条按"加时长 / 精简台词 / 拆镜"修,改完重跑到 ⚠ 清零。
## 工作流
1. 读 shot 的 `台词:` + `## 台词配音 prompt` 各句 `时长目标` + `动作:` 各 beat 时间窗 + `时长:`;**集级先跑 `tools/ep_metrics.py` 出 metrics.md 锁定所有超速句**。
2. 算:台词总字数÷时长、动作 beats 时间窗之和、配音时长目标之和;过 PA1–PA9(含镜内换气口 PA8、首尾帧接缝两端 0.3s 台词静默 PA9)。**承接/尾锁镜先按 PA9 把可用台词时长扣掉 0.3s/0.6s 再算 PA1。**
3. **落地裁决**:调 `时长:`(同步 Shot context `Duration`)、动作 beat 时间窗、各句 `时长目标`,使台词念得完、动作演得开、不赶不拖;需拆镜则拆并加连续性 token。
4. **通知相邻 skill 重配**:若靠精简台词解决 → 交 `台词大师` 改台词;若靠简化/补动作 → 交 `动作表演` 改 beats。本 skill 只裁决"几秒 + 怎么分配时间",不亲自改写台词措辞/动作创意。
5. 复验:字数÷时长 ≤ 5(独白 ~3)、动作 beats 铺满且关键动作给够、配音时长目标之和 ≤ 时长、时长∈[3,15] 且贴 beat 不注水。
## 硬约束
- 只裁决**时长与时间分配**;台词措辞归 `台词大师`、动作设计归 `动作表演`、4–15s 硬范围与字段齐全归 `格式契约`。
- 改时长必须**连带**把动作 beat 时间窗与配音时长目标改到自洽(别只改 `时长:` 数字)。
- 审计写 `.audit/.../events.jsonl` 的 `validation.issue.raised`(level=pacing)。
## 输出
- 每 shot 的时长裁决(原时长 → 建议/已改时长 + 依据:台词 X 字需 Y 秒 / 动作 beats 需 Z 秒)+ 已落地改动 + 一句话复验结论。
Ver no GitHub