# Narration

做一条由旁白带着走的成片（资讯快评、知识讲解、产品介绍、步骤教程），或给已有画面配一段多句的旁白时用：先按实测语速算出稿子该有多少字、按句分行写稿，再选一个全片不变的音色、用同...

- Repository: https://github.com/JimLiu/baocut (1645 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add JimLiu/baocut --skill narration -g -a claude-code -y`
Codex: `npx skills add JimLiu/baocut --skill narration -g -a codex -y`
Cursor: `npx skills add JimLiu/baocut --skill narration -g -a cursor -y`
Gemini CLI: `npx skills add JimLiu/baocut --skill narration -g -a gemini-cli -y`

## Description

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

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 旁白成片

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

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

第 3 节「用户自己录」一条受「大师的AI小灶」（@dashiAIxz）分享的剪辑经验启发：合成配音跟本人的语调与情绪差距大时，改用本人录音。

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

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

## 2. 稿子怎么写

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

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

The rest: https://github.com/JimLiu/baocut/blob/HEAD/skills/baocut/built-in-skills/narration/SKILL.md
