Back to skills
SKILL.md
Kinema Audio
ASecurity设计 seed-audio-1.0 的声线描述和整章音频剧本。用户要定制音色、配乐、音效、逐句演绎,或把人声、音乐和音效一次生成并混好时使用。
- 170 stars
- 0 votes
- 0 copies
- 0 views
- Added September 19, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add chillzhuang/Kinema --skill kinema-audio --agent claude-codeAre you the author of Kinema Audio?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/chillzhuang-kinema-audio)---
name: kinema-audio
description: "设计 seed-audio-1.0 的声线描述和整章音频剧本。用户要定制音色、配乐、音效、逐句演绎,或把人声、音乐和音效一次生成并混好时使用。"
metadata:
kinema-managed-by: "agent/manifest.json"
kinema-kind: "capability"
kinema-status: "stable"
kinema-version: "2.0.0"
kinema-owner: "Kinema"
kinema-source: "workspace"
kinema-trust: "first-party"
kinema-digest: "sha256:05dfe5909bc1b32db0e644f002f3750656702b8a6807d5902bda6db95f2a716a"
---
# kinema-audio · 音频剧本写作
**这份 skill 管「声音的提示词怎么写」,不管流程**——流程仍在
[`../kinema/SKILL.md`](../kinema/SKILL.md)(节点③ 配音)。
服务它的模型是 **seed-audio-1.0**:吃一段自然语言 `text_prompt`,吐一条**已经混好的**
音轨(人声 + 音乐 + 音效同在一条里)。这与固定音色 TTS 是两种东西——那边你给它文本、
它念出来;这边你给它一场戏、它演出来。
**硬边界(写之前先知道)**:单次输出 **≤120 秒**;最多 **3 条参考音频**(每条 ≤30s、
≤10MB)或 **1 张参考图片**(≤10MB),音频参考与图片参考**不能混用**;`text_prompt`
≤3000 字符。
---
## 一、五段式结构
范例读下来结构高度一致,按这五段写就不会散:
### ① 声线定义段(每个说话人一行,写在最前)
```
男子1 是中青年男性,标准普通话,嗓音低沉,浑厚,富有磁性,气泡音,成熟
太后 是 55 岁左右的中年女性,嗓音端庄优雅,威严
调查员 是 35 岁左右的青年男性,声音温和,轻微鼻音,TVB 普通话,探案类电视剧风格
```
**五个维度,缺一个就少一层控制**:年龄段 · 性别 · 口音/语言 · 音质(低沉/沙哑/明亮/
偏尖细/气泡音/略带鼻音)· 气质(成熟/威严/张扬/谦逊/温柔/凶狠冷酷)。
写法纪律:
- **用可听见的物理属性,不用评价词**。「好听」「有魅力」模型渲染不出来,
「嗓音低沉,略带沙哑,气泡音」可以。这条与写画面提示词的反主观词铁律同源。
- **角色名要在后文逐句复用**(「男子1 用严肃的语气说道」),名字是绑定声线的锚。
- 一个人物一行,行与行之间不空行;整段与下一段之间空一行。
### ② 音乐描述段
```
音乐以马林巴为主奏乐器,加入 pad 铺底、弦乐组、合成器 lead、电贝斯、打击乐,
整体情绪紧张悬疑。
```
**配器 + 织体 + 情绪**三件。进阶写法:
- **写清主奏与铺底的分工**(「竖琴主奏,电子合成小提琴演奏高音作为 pad」);
- **音乐的变化点单独起一句**,并说清落在哪句台词前后
(「此时音乐转变,竖琴主奏……」「伴随着一阵警报声,音乐停止。」);
- **要它安静就明写「音乐停止」**——不写它会一直铺。
### ③ 逐句演绎段(正文主体)
```
男子1 用严肃且带有质问的语气说道:"钟 sir,你是什么时候被收买的?"
男子2 通过电话回应,声音经过处理,显得有些遥远和失真,他用一种平静而无奈的语气说:"……"
```
骨架恒为:**谁 + 怎么说 + 说什么**。
- 「怎么说」写**语气 + 音量/语速的变化 + 生理细节**(先吸一口气、结尾呈现气声、
略微吞口水、强忍哭泣的吸气、声音因愤怒而拔高、语速变慢有些磕巴)。
- **音效缝进句子里,不另起清单**:用「伴随着 / 夹杂着 / 紧接着 / 句首 / 句尾 / 期间」
把它挂到台词的时间位置上——
「伴随着一声金属质感类似刀光『唰』的特效音」「句尾伴随着几声布鞋急促的跑步声」。
- **拟声词加引号**能显著提高命中率:`类似"咻"的法术闪过特效音`。
- 转场、环境底噪、群众杂音都当"一句"写(「然后出现一声类似『呼』的风声转场特效音」)。
### ④ 时间控制(可选,但对做视频极重要)
```
广告播音员语速慢、平缓地说道:[2.7s:5.7s]"美丽的旅程,值得一个璀璨的开始。"
```
在台词前加 `[起s:止s]`,模型会**按这个时间轴演**。
> **这是音频剧本能对齐分镜的唯一手段**。把每镜的 `dur` 累加成秒段写进去,
> 生成的音轨就落在画面的节拍上,画面一帧都不用改。方法论与
> `kinema-sketchboard` 把 `beats` 编译成「第几秒干嘛」发给视频模型完全同构——
> 一个编画面时间轴,一个编声音时间轴。
纪律:秒段之间**留呼吸**(别首尾相接排满);改了分镜时长,秒段必须同改。
### ⑤ 参考绑定(可选)
```
女主 是青年女子,普通话,音调偏低,有些沙哑,饰演者为【参考录音1】
```
`【参考录音N】` 对应 `references` 数组里第 N 条音频(**顺序即编号**)。
用于"要这个人的声音"。图片参考走另一条路(按形象气质造声音),
**与音频参考互斥**。
> 记号对照:引擎自动追加的绑定行用 `@音频N`(`_score_anchor` 拼的那一行,
> 见第四节示例),与本节手写剧本的 `【参考录音N】` 是**同一件事的两种写法**
> ——都按 `references` 数组下标对位。走 `score` 命令时参考音由引擎随请求
> 附带并自动编号,**手写剧本时绝不要自己贴任何参考音记号**:编号与引擎
> 实发的数组顺序对不上,声音就派给了别人。
---
## 二、四种生成模式(对应引擎的 `doubao` 适配器)
| 模式 | 怎么触发 | 用在哪 |
|---|---|---|
| **纯文本生成** | 只给 `text_prompt`,不发 speaker(引擎 `prompt_only=True`) | **定制生成造音色**:`voice custom` 出的那批候选走这条 |
| 固定音色 | `speaker` = 豆包 2.0 音色 ID | 拿官方音色演一段带音效的戏 |
| 参考音频 | `audio_data` / `audio_url` / `references[]` | **音色锚定**:立档后全片每句都用它,这是不漂移的唯一办法 |
| 参考图片 | `image_data` / `image_url` | 按形象气质造声音;不能与音频参考或 speaker 同用 |
---
## 三、给「定制生成」写声线(当前落地范围)
`voice custom <项目> --name <角色>|--narrator --prompt "<声线描述>"` 的那段描述,
**就是第 ① 段**。引擎会自动拼成:
```
<角色名> 是<你写的声线描述>
<角色名>说道:"<试听台词>"
```
所以你只写第 ① 段的内容,**不要自己带角色名和台词**。描述按**六槽位写 40~80 字**
(性别年龄段 / 音区明暗 / 音质质感 / 语速节奏 / 口音吐字 / 气质,不写情绪词),槽位表与
范例见 `kinema/references/voice-casting.md` 铁律 3;下表是从人设推各槽位的取材口径。
**按人设推声线的对照**(从 `characters[]` 的文字设定推,别凭空想):
| 人设线索 | 落到声线描述 |
|---|---|
| 年龄/身份(少年、老者、帝王、匠人) | 年龄段 + 气质(张扬 / 苍老沉稳 / 威严 / 谦逊) |
| 出身地域、时代 | 口音(标准普通话 / 港式普通话 / TVB 普通话 / 轻微东北口音) |
| 身体状态(旧伤、烟瘾、久病) | 音质(沙哑 / 气泡音 / 略带鼻音 / 气声偏多) |
| 性格(隐忍、暴烈、疏离) | 语速与音调(语速偏慢 / 音调稍低 / 吐字清晰有力) |
**怎么挑**:同一段描述会生成 N 条演绎(生成式,每次都不同)。挑的判据不是
"哪个好听",而是**哪个最像这个角色**——听完问一句「这个人会这样说话吗」。
`voice use --custom --no N` 选中的那条音频**就是这把音色本身**,之后全片每句都拿它
当参考音,所以选错了不是"换个候选",是整个角色的声音都不对。
选中即立一条**音色档案**(音频落 `assets/voices/casts/`,此后不再改动):挑错了、
或想听听上一版,`voice bank <项目>` 看档案、`voice use --cast vc_NNNN` 换回去,
两版都留着。已经有分镜用某把声音配过音时,那条档案删不掉——引擎会点名是哪几镜。
---
## 四、章节级:整片音频剧本(`audio_mode: scored`)
把**整章**的人声、配乐、音效交给音频模型一次生成,回来的是一条**已经混好**的成品轨。
它与缺省的「逐镜 TTS + BGM + 音效三轨确定性混音」是**互斥的两条路**,章节顶层
`audio_mode` 仲裁(`tracks` 缺省 / `scored`),与 `motion`(画面路线)正交。
### 4.1 先决定走不走这条路
| | `tracks`(缺省) | `scored`(音频剧本) |
|---|---|---|
| 声音 | 固定音色逐句合成 + 曲库 BGM + 音效,引擎按数值混音 | 模型按剧本一次演出并混好 |
| 改一个字 | `tts --force --only 3`,只重配那一句 | **整段重生**(最小粒度是段,不是句) |
| 稳定性 | 确定性,重跑一模一样 | 生成式,**每次演绎都不同** |
| 表演 | 语气靠 `emotion` 档位 | 自然语言直接导戏,上限高得多 |
| 计费 | 按字符 | **按秒**(单段可达 115 秒) |
**判据**:要可控、要能逐句返工、要多集音色一致 → `tracks`。
一整场戏的对白/配乐/音效需要浑然一体、且愿意接受"重来就是另一条"→ `scored`。
**切过去会失去什么,先说清楚再切**:这一章不再跑 `tts`(`needs_tts` 为假),
没有逐镜 wav,`tts --only`、逐句 retake、配音审阅那一整套都不在这条路上;
合成段也不再叠 BGM、不做闪避——让路 EQ 与 sidechain 那一层模型已经替你做完了。
确需在整轨之上再铺一层曲库 BGM,在章节顶层显式写 `scored_bgm: true`(缺省关闭,
引擎绝不自作主张叠加)。
**转场音效不归剧本接管**:scored 让开的只有 BGM/逐镜旁白轨/闪避三路,
转场镜的引擎音效与特效环境音照常叠加。段的接缝恰好落在转场镜上,剧本段尾
若已写了转场声(whoosh/riser 一类),要把那个转场镜的音效置 `sound: off`
(网页转场卡可改),否则两声叠响。
### 4.2 分段:转场镜就是段界
**每个转场镜收一段**(`audioscript.plan`,指挥层不自己切):转场即场景切换,
一段戏在那里收束,音乐在那里重新起头是正常听感;转场镜归前一段作收尾,
章节以字卡/黑场冷开场时,开场转场归第一段开头(不切空段)。
- 分几段 = 转场把整章隔成几幕,一幕一段、一段一条完整音轨;
- 段界只认转场——切在一段连贯的戏中间,观众会听到音乐莫名其妙断一次。
单段另有硬上限:单次输出 ≤120 秒(引擎按 **115s** 留余量)。两转场之间超了
115s,引擎**不硬切**,而是点名让你在那段中间补一个 `transition add`——
在一句台词中间断开比多花一次调用更糟。
先看分段(**零成本,一个请求都不发**):
```bash
python3 -m kinema score --chapter x/<ch> --dry-run
```
它给出几段、每段哪几镜、每段多少秒、哪些段剧本还没写、这一次真发几段多少钱。
### 4.3 剧本不是手写的:引擎起稿 → 你改写
**先起稿,别对着空框写**:
```bash
python3 -m kinema score --chapter x/<ch> --draft # 零成本·不调模型·已写的段不覆盖
```
引擎按分镜确定性拼出**声线定义段 + 逐句「谁·[段内秒段]·台词原文」**——它只做
能确定的那部分,而那恰好是最容易错、错了最贵的两件:台词逐字取 `narration`/`lines`
(字幕与它同源,差一个字成片就是「念的和写的不一样」)、段内秒段按各句字数比例切
(每段各自一次请求、模型时间轴从 0 起,手算必错)。声线描述取材两级:
取**在用**那把定制音色的原话(造出这把声音的那段描述)→ 没有则给中性底并点名给你。
**你的活是在底稿上改写,不是重写**:
**音色不用你在剧本里操心**:凡是已经启用过音色(`voice use`,模版或定制都算)的
说话人,引擎发请求时会把那把声音的参考音一并带上,并在正文最前面补一行**文案与参考音
配套**的绑定:
```
旁白 是55 岁左右的中年女性,嗓音端庄优雅,威严,饰演者为@音频1。
```
描述取的是**注册过的那一份**(在用档案登记的那段原话,判据 `voicebank.voice_desc`),与外部选定/
定制时用的文案同源。两件缺一不可:只给参考音是给了声音却没给气质约束,只给描述则音色
每段重造——这条生成式路线**不逐段漂移**就靠这一行加那条参考音。
所以你只管把声线定义段写得贴人设,**不要自己往剧本里贴参考音标记**。单段最多锚三把
声音(接口上限),锚不上的引擎会点名,那几个人只能靠文字描述。
| 底稿已有 | 你要补 |
|---|---|
| ① 声线定义段(可能是中性底) | 按 `characters[]` 人设改具体:年龄/性别/口音/音质/气质五维 |
| ③ 逐句台词 + ④ 时间控制 | 逐句语气与生理细节(吸气/停顿/音量变化) |
| — | ② 音乐描述段(配器+情绪,变化点单独起句) |
| — | 句内音效(用「伴随着/紧接着/句尾」缝进台词,不另起清单) |
网页入口在章节页「AU 音频剧本」台:「✎ 按分镜起草」填框(**不落盘**,改完点存稿),
「⧉ 音频剧本指令」把底稿连同人设一起复制给 Claude Code。
剧本落在章节顶层 `audio_script.segments[]`,**一段一条,条数必须等于分段数**
(对不上引擎拒发——分镜时长或转场改过而剧本没跟着改,硬发出去只会烧钱出错片)。
改写时两条铁律:
1. **时间控制用「段内相对秒」,不是全片秒。** 每段是各自一次请求,模型的时间轴
每次都从 0 起。引擎在分段表里直接给出逐镜的段内秒段(`spans`),照抄即可:
```
第 2 段(90s)段内秒段:镜4 [0s:30s] 镜5 [30s:60s] 镜6 [60s:90s]
→ 旁白低沉地说:[1.2s:6.4s]"……" ← 落在镜4 的窗口内
```
照 `start/end` 的全片秒去写,第二段往后会整体偏移一整段的长度。
2. **台词逐字取分镜的 `narration`/`lines`,一个字都不许改。** 字幕是从 `narration`
逐字渲染的,剧本里改一个字,成片就是"念的和写的不一样"。要改台词就改分镜,
改完剧本跟着改。
音乐与音效照第一节写:配器+情绪一段,变化点单独起句并说清落在哪句前后;
音效用「伴随着/紧接着/句尾」缝进台词,不另起清单。
### 4.4 生成与返工
```bash
python3 -m kinema score --chapter x/<ch> --draft # 起草(零成本),再按 4.3 改写
python3 -m kinema score --chapter x/<ch> --dry-run # 看分段与报价
python3 -m kinema score --chapter x/<ch> # 只补缺的段
python3 -m kinema score --chapter x/<ch> --only 2 # 第 2 段剧本改了,只重生这一段
python3 -m kinema assemble --chapter x/<ch>
```
**幂等按段不按片**:已在盘的段直接复用。改了某段剧本后普通重跑**只告警不重生**——
这条路按秒计费,"自动跟上最新剧本"在这里等于自动扣款;要跟上就点名 `--only N`。
**同一段连出几版挑一版**(生成式模型每次演绎都不同,这是正常用法而不是返工):
重生成前引擎自动把现存那版入段版本栈,`--dry-run` 的分段表会显示「当前 v00N(历史 M 版可切)」,
`score --switch <段号> --to-v N` 切回任意一版——**互换而非覆盖,来回切不丢任何一版**,
切完引擎自动重拼整轨。网页在每段右上角「⏱ N 版」里逐版试听、一键切回。
网页入口是章节页的 **「AU 音频剧本」台**(与 3D 导演台、简笔分镜台并列的第三个工作台):
逐段编辑框带段内秒段与字数计,一个按钮切路线,「⧉ 音频剧本指令」把分段坐标连同
写法要求一起复制给 Claude Code。
### 4.5 这一节最容易踩的四个
| 症状 | 根因 | 改法 |
|---|---|---|
| 第 2 段往后声音整体错位 | 时间控制写成了全片绝对秒 | 改成段内相对秒(照 `spans`) |
| 引擎报「segments 有 N 段,而按转场切出来是 M 段」 | 改过分镜时长/转场,剧本没跟着改 | 重跑 `--dry-run` 看新分段,逐段补齐 |
| 改了剧本重跑,听着没变化 | 普通重跑只复用不重生(防重复计费) | `score --only <段号>` 或 `--force` |
| 字幕与念出来的不一样 | 剧本里顺手改了台词 | 台词以分镜 `narration` 为准,两边同改 |
---
## 五、常见写坏的三种
| 症状 | 根因 | 改法 |
|---|---|---|
| 出来的声音平淡,像念稿 | 只写了声线、没写"怎么说" | 每句补语气副词与生理细节(吸气/停顿/音量变化) |
| 音效没出现 | 音效另起了一段清单,脱离台词 | 用「伴随着/紧接着/句尾」缝回台词的时间位置上 |
| 同一角色前后不像一个人 | 走了纯文本或 speaker 模式逐句合成 | 锁定一条参考音,全片走参考音频模式(引擎的音色锚定已默认这么做) |
## 何时不用
定制是缺省路;模版是显式例外——要一把官方固定音色作账号品牌声纹(跨项目完全可复现)时,
走 `kinema` SKILL 的 `voice audition` → `voice use`,句级表演提示不进那条路。
Files in this skill
- SKILL.md
- skill.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.