用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/chillzhuang/Kinema --skill kinema-audio命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| 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"} |
这份 skill 管「声音的提示词怎么写」,不管流程——流程仍在
../kinema/SKILL.md(节点③ 配音)。
服务它的模型是 seed-audio-1.0:吃一段自然语言 text_prompt,吐一条已经混好的
音轨(人声 + 音乐 + 音效同在一条里)。这与固定音色 TTS 是两种东西——那边你给它文本、
它念出来;这边你给它一场戏、它演出来。
硬边界(写之前先知道):单次输出 ≤120 秒;最多 3 条参考音频(每条 ≤30s、
≤10MB)或 1 张参考图片(≤10MB),音频参考与图片参考不能混用;text_prompt
≤3000 字符。
范例读下来结构高度一致,按这五段写就不会散:
男子1 是中青年男性,标准普通话,嗓音低沉,浑厚,富有磁性,气泡音,成熟
太后 是 55 岁左右的中年女性,嗓音端庄优雅,威严
调查员 是 35 岁左右的青年男性,声音温和,轻微鼻音,TVB 普通话,探案类电视剧风格
五个维度,缺一个就少一层控制:年龄段 · 性别 · 口音/语言 · 音质(低沉/沙哑/明亮/ 偏尖细/气泡音/略带鼻音)· 气质(成熟/威严/张扬/谦逊/温柔/凶狠冷酷)。
写法纪律:
音乐以马林巴为主奏乐器,加入 pad 铺底、弦乐组、合成器 lead、电贝斯、打击乐,
整体情绪紧张悬疑。
配器 + 织体 + 情绪三件。进阶写法:
男子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(画面路线)正交。
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
(网页转场卡可改),否则两声叠响。
每个转场镜收一段(audioscript.plan,指挥层不自己切):转场即场景切换,
一段戏在那里收束,音乐在那里重新起头是正常听感;转场镜归前一段作收尾,
章节以字卡/黑场冷开场时,开场转场归第一段开头(不切空段)。
单段另有硬上限:单次输出 ≤120 秒(引擎按 115s 留余量)。两转场之间超了
115s,引擎不硬切,而是点名让你在那段中间补一个 transition add——
在一句台词中间断开比多花一次调用更糟。
先看分段(零成本,一个请求都不发):
python3 -m kinema score --chapter x/<ch> --dry-run
它给出几段、每段哪几镜、每段多少秒、哪些段剧本还没写、这一次真发几段多少钱。
先起稿,别对着空框写:
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[],一段一条,条数必须等于分段数
(对不上引擎拒发——分镜时长或转场改过而剧本没跟着改,硬发出去只会烧钱出错片)。
改写时两条铁律:
时间控制用「段内相对秒」,不是全片秒。 每段是各自一次请求,模型的时间轴
每次都从 0 起。引擎在分段表里直接给出逐镜的段内秒段(spans),照抄即可:
第 2 段(90s)段内秒段:镜4 [0s:30s] 镜5 [30s:60s] 镜6 [60s:90s]
→ 旁白低沉地说:[1.2s:6.4s]"……" ← 落在镜4 的窗口内
照 start/end 的全片秒去写,第二段往后会整体偏移一整段的长度。
台词逐字取分镜的 narration/lines,一个字都不许改。 字幕是从 narration
逐字渲染的,剧本里改一个字,成片就是"念的和写的不一样"。要改台词就改分镜,
改完剧本跟着改。
音乐与音效照第一节写:配器+情绪一段,变化点单独起句并说清落在哪句前后; 音效用「伴随着/紧接着/句尾」缝进台词,不另起清单。
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。
| 症状 | 根因 | 改法 |
|---|---|---|
| 第 2 段往后声音整体错位 | 时间控制写成了全片绝对秒 | 改成段内相对秒(照 spans) |
| 引擎报「segments 有 N 段,而按转场切出来是 M 段」 | 改过分镜时长/转场,剧本没跟着改 | 重跑 --dry-run 看新分段,逐段补齐 |
| 改了剧本重跑,听着没变化 | 普通重跑只复用不重生(防重复计费) | score --only <段号> 或 --force |
| 字幕与念出来的不一样 | 剧本里顺手改了台词 | 台词以分镜 narration 为准,两边同改 |
| 症状 | 根因 | 改法 |
|---|---|---|
| 出来的声音平淡,像念稿 | 只写了声线、没写"怎么说" | 每句补语气副词与生理细节(吸气/停顿/音量变化) |
| 音效没出现 | 音效另起了一段清单,脱离台词 | 用「伴随着/紧接着/句尾」缝回台词的时间位置上 |
| 同一角色前后不像一个人 | 走了纯文本或 speaker 模式逐句合成 | 锁定一条参考音,全片走参考音频模式(引擎的音色锚定已默认这么做) |
定制是缺省路;模版是显式例外——要一把官方固定音色作账号品牌声纹(跨项目完全可复现)时,
走 kinema SKILL 的 voice audition → voice use,句级表演提示不进那条路。
基于 SOC 职业分类