소스 정보
- 저장소
- chillzhuang/Kinema
- 최근 소스 활동
- 2026년 9월 5일 16:55
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 20
- 포크
- 7
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/chillzhuang/Kinema --skill kinema-audio명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
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,句级表演提示不进那条路。