Skills DirectorySearch all skills ↗

AI agent skill · by @JimLiu

Narration

做一条由旁白带着走的成片(资讯快评、知识讲解、产品介绍、步骤教程),或给已有画面配一段多句的旁白时用:先按实测语速算出稿子该有多少字、按句分行写稿,再选一个全片不变的音色、用同一套语气说明一次合成,量时长、查接缝、只重配不合格的句子,最后把画面剪到旁白上。不用于把视频配成另一种语言(翻译配音),也不用于只念一句话。

Archived 2026-10-23 · Source updated 2026-10-12. Check the original repository for the latest version.

SKILL.md instructions

# 旁白成片

旁白成片里决定一切的是**稿子与声音**:稿子的长度定了成片的时长,声音的一致定了观众信不信这是一个人在说。顺序:

1. 先量语速,再算字数,再写稿(第 1 节)。
2. 稿子按句分行,怎么说与说什么分开写(第 2 节)。
3. 选一个能锁住音色的声音,一套说明一次合成,记下种子(第 3 节)。
4. 量出来、查接缝、只重配不合格的句子;不靠变速凑时长(第 4 节)。
5. 画面剪到旁白上(第 5 节)。
6. 验收(第 6 节)。

## 1. 先量语速,再算字数

- 尚无当前配置样音、需要先起草时,用 `skills_read` 读 `baocut-catalog-voice-language-rates`:按目标语言的 Unit 与 Rate 估首稿预算,再用下面的实测修订。表内包含完整语言数据、校准条件与未列语言的兜底;不用为了查表先合成音频。
- 字数不是猜的:**先让要用的模型与音色念一小段有代表性的稿子**,带同一套语气说明,用结果里的时长算单位/秒。已有同配置、同语言与相近风格的样音时复用,不重复生成。
- 计数方式跟着目标语言走:中文等适合按字计的稿子按字,有明确分词习惯的语言按词;其他语言或混合语言采用一致、可复算的字符或分词方法,用同一方法计样音与全稿,不回退成英文语速。数字、缩写按实际读法计,不计舞台说明与标点。
- 用样音总时长算平均语速时,**单位预算 = 可用于旁白的秒数 × 实测单位/秒**,停顿已包含,不重复扣除。若按对齐时间单独量发声语速,则 **单位预算 =(可用秒数 − 预计停顿秒数)× 发声单位/秒**;不能把秒直接从字数里减掉。外部语言速率表只能起稿参考,换模型、语言或表演后重新校准。
- 写超了就在允许改写的范围内压缩,不靠加速。用户要求逐字朗读时保留原稿,说明它与时长预算的冲突,不擅自删句。
- 时长是目标不是配额:稿子念出来 55 秒就交 55 秒,不用填充、循环或变速把它拉到 60。

## 2. 稿子怎么写

- **一句一行,一句一个意思**,句末用句号、问号或叹号收住:合成引擎按这些标点切句与停顿,字幕也按这些断行。不用分号把两句连成一句。
- 数字、年份、缩写写成读法(「二零二六年十月一日」「每秒三十帧」);多音字与专名用读音标注(`<银行|yin2 hang2>`,speak 的文本接受这种写法)。
- 梗与吐槽放在事实句之后、单独成句,节奏靠句子长短与剪辑切换,不靠让声音念得更快。
- **怎么说与说什么分开**:语气说明只写语气、场景、角色(「年轻资讯主播,明快自然,吐槽时带一点笑意」),不写台词;台词里不夹括号注释与舞台说明。模型能响应时可要求「缓慢安抚」「急促兴奋」等表演语速,不能用它承诺精确秒数或挽救超长稿;先定表演,再按第 1 节实测预算。「剪辑节奏快」不自动等于「声音念得快」。

## 3. 选声音,一次合成

- **多句旁白优先选有参考录音锚定的音色**:用户库里已授权克隆的音色(`library:<id>`),或 models_capabilities 里 `voices[].source` 为 `builtin` 的内置音色。它们每一块都对着同一段参考录音生成,音色稳得住。
- `source` 为 `model` 的预置说话人(能接受语气说明的那类本机模型)每块独立采样,块与块之间音高会漂 3–5 个半音,听起来像换了人:只用在 60 字以内的短旁白,或用户点名要它时——这时在报告里写明这个风险。在线模型按它自己的说明。
- 全片一个角色就一个音色、一套语气说明;模型不接受语气说明时只靠选音色。
- **整段一次提交**(或按段落、几百字一段),不要逐句提交:引擎自己按句切块、统一块之间的停顿与响度;逐句提交不会让音色更一致,反而把总时长拉长、每字变慢。逐句只用于重配某一句(第 4 节)。
- 模型接受 seed 时给一个固定的 seed 并记下来;重配某一句时只换那一句的 seed,其余不动。
- 结果带 video 时是候选素材,还不在时间线上;合成完先量(第 4 节),再放。

## 4. 量出来、查接缝、重配

- **量**:结果的时长取自结果里的媒体事实,对照预算。超了按第 1 节判断是否允许压缩,再重配那一段,不改时间线速度;短了照实交。
- **对齐**:把旁白素材转写(transcribe 给旁白的 asset,语言断言为稿子的语言,提示里放专名)得到每个字的时间;字幕与切镜都用这份时间,不凭感觉估。
- **查接缝**(量出来的):用对齐后的字时间与第 1 节的计数方法算每句的单位/秒与句间停顿。偏离中位数超过 15% 的句子、超过 0.8 秒的句间停顿,是重配或剪掉静音的候选。
- **重配一句**:只对那一句 speak(同音色、同说明、换 seed),用对齐时间在时间线上替换那一句的范围;新句比原句长时按第 1 节处理文本与时长的冲突,不变速。
- **听**(要人听的):导出旁白里 2–3 处 5 秒的片段(每处跨一个句子边界)给用户听,问的是「像不像同一个人」「停顿自然不自然」。你自己听不了时在报告里如实写「没听过」,不把「量过」写成「听过」。
- 时间线上**不给旁白加变速**:变速保音高但会改变语速与停顿的比例,让本来的快慢差更明显;翻译配音流程里对齐用的小幅变速是那条流程的事,不在这里用。

## 5. 画面剪到旁白上

- 旁白一条轨,先放好、量好,再按旁白里句子的起止排画面:一句一个镜头或一组镜头,切点落在句间停顿里,不切在字中间。
- 画面从哪来:用户的素材优先;讲概念、比喻、场景的句子没有素材时,可以按句或按一组句子各生成一张静图(比例按画幅,画面里不要字,全片用同一段风格说明,生成时带上 `video`,怎么调用用 `skills_read` 读 `baocut-catalog-media` 的「生成图片」);文字、数字、步骤与图表用代码画面(用 `skills_read` 读 `motion-graphics`)。静图不会动,一张不要停太久,配转场或镜头取短;讲到真实的产品、人物、数据时用真实画面,不拿生成的图冒充。
- 配乐在旁白下面压低(setDucking),音效落在句子之间。要配乐时用 `skills_read` 读 `baocut-catalog-music`:用户给了音乐就用用户的,否则本机能生成就生成纯音乐;旁白量好、画面排好、成片时长定了再生成。旁白片的配乐要稀疏、动态平稳、不抢人声,收尾 2–3 秒平滑淡出,不在最后一句话中间收掉。
- 字幕按旁白稿分行,不按识别结果的断句;用对齐得到的字时间。

## 6. 验收

- 稿子字数在预算内;成片时长与旁白时长一致(差额是片头片尾)。
- 旁白只有一个音色、一套说明,用的 seed 记录在报告里;选了预置说话人时写明了风险。
- 每句的字/秒与停顿量过,异常句处理过或在报告里列出。
- 报告分三栏:量出来的(时长、字/秒、停顿)、看过的(切点、字幕位置)、要人听的(音色一致、停顿自然、与画面的呼吸)。

Related skills