voice-pack
一个声音的参考集和配音指引,装成一个包。谁拿到,都能用。A voice's reference clips and its dubbing guidance, sealed in one pack. Whoever has it can use it.
voice-pack 是给 agent 用的 skill:音色包的格式,和造声音、配音、做包、验包的一整套工具。流程按所需能力写,模型由你接。voice-pack is a skill for your agent: the voice pack format, plus the tools to make voices, dub scripts, and build and check packs. Every flow is written by the capability it needs; you plug in the model.
版本 2.0.14 · Apache-2.0 · 这一面的两段声音都是合成的Version 2.0.14 · Apache-2.0 · Both voices on this panel are synthetic
这两段声音是怎么来的Where these two voices came from
都是合成的,没有用到任何真人的录音。A 面照一段文字描述设计出来,B 面拿 A 面当参考克隆。Both are synthetic; no real person's recording went into them. Side A was designed from a written description, and side B was cloned from side A.
A 面 · 设计Side A · Designed
- 所需能力Capability
voice-design- 描述(原文)Description, as sent
Female, young adult, moderate pitch. Clear, clean timbre with a little warmth. Natural, unhurried pace. Friendly and professional tone. Standard Mandarin.
- 念的是What it says
你好。我的声音是照一段文字描述设计出来的,没有用到任何真人的录音。把这个 skill 装进你的 agent,它就能设计、克隆、融合声音,给台本配音,还能把一个声音做成音色包,交给别人也能直接用。
Hello. My voice was designed from a written description; no real person's recording was used. Put this skill in your agent and it can design, clone and blend voices, dub scripts, and turn a voice into a voice pack that anyone you hand it to can use right away.
B 面 · 克隆Side B · Cloned
- 所需能力Capability
voice-cloning- 参考Reference
- A 面这一段,和它的逐字文本Side A, with its verbatim text
- 念的是What it says
Hello again. I'm the same voice, cloned from the clip you just heard. The skill writes every step by the capability it needs, so you can plug in whichever model you like.
又见面了。我还是这个声音,从你刚才听到的那段克隆出来。这个 skill 的每一步都按所需能力写,你想接哪个模型都行。
能做什么What it does
流程都按所需能力写,名字取自能力词表:哪一步要什么能力,一眼看得出来。Every flow is written by the capability it needs, named from the capability vocabulary, so you can see what each step asks for.
造声音Make a voice
- 克隆Clone
voice-cloning - 一段 5–20 秒、不带伴奏的干净参考,加它的逐字文本。One clean 5–20 s reference with no music under it, plus its verbatim text.
- 设计Design
voice-design - 从设计词表挑属性(性别、年龄、音高、风格、英语口音、中文方言,或者 8 个预设角色之一),写成一段描述,合成试听;满意的锁定成参考。Pick attributes from the design vocabulary (gender, age, pitch, style, English accent, Chinese dialect, or one of 8 preset characters), write them as a description and audition it; lock the take you like as a reference.
- 融合Blend
voice-cloning - 两段以上参考,各带权重;权重是加起来始终为 1 的份额。Two or more references, each with a weight; the weights are shares that always add up to 1.
让它说话Make it speak
- 配音Dub
dub - 用音色包给台本配音:每句挑语言、情绪、风格最对得上的那段参考,读音词表(W3C PLS)换掉容易读错的词,配音指引一起交给模型。Dub a script with a voice pack: each line gets the reference that best matches its language, emotion and style, the pronunciation lexicon (W3C PLS) fixes words that get misread, and the dubbing guidance goes along.
- 有声书和长文Audiobooks, long text
- 台本标记:
# 标题分章,[pause 0.6s]停顿,[slow]、[fast]、[emphasis]、[spell]、[voice:名字],舞台提示(耳语)、*笑*;新闻、播客、有声书、本地化配音、短视频等 12 个场景,各有台本润色的规则。Script markup:# Titlefor chapters,[pause 0.6s],[slow],[fast],[emphasis],[spell],[voice:name], and stage cues such as(whispers)and*laughs*; 12 scenes, from news and podcasts to audiobooks, localization and short video, each with its own script-polishing rules. - 批量Batches
- 长文本按单次的字数上限切开、并发生成;失败的句子单独重做(
--only),做好的原样沿用,不重复付费。Long text is split at the per-call limit and generated in parallel; failed lines are redone on their own (--only) while finished ones are kept, so nothing is paid for twice. - 变声和唱歌Convert, sing
convert - 把一段音频换成音色包的声音;
--singing是唱歌,输入是人声分轨。Turn a recording into the pack's voice;--singingfor singing, from a vocal stem.
听Listen
- 转写Transcribe
automatic-speech-recognition - 给克隆和做包补逐字文本。长录音先切段(运行环境有
voice-activity-detection就按说话区间切,没有就按能量切),再一段一段地转写。Verbatim text for clones and packs. Long recordings are cut first (by speech regions when the runtime hasvoice-activity-detection, by energy otherwise), then transcribed one segment at a time.
音色包Voice packs
- 做包Make
make-pack - 读切好的片段或整段长录音:打标签,挑参考集和留出录音,响度统一到 −20 LUFS(峰值不超过 −1 dBFS),试合成,量还原度,告诉你还缺什么素材;
--previous发新版本。From cut clips or whole long recordings: tags them, picks the reference set and the holdout, evens loudness to −20 LUFS (peaks at most −1 dBFS), runs a trial synthesis, measures fidelity and tells you what material is still missing;--previousmakes a new version. - 检查Check
check - 清单对得上文件,签名,基础部分和角色部分互相校验,SKILL.md、音频、外部资源。Manifest against files, signatures, the base and role parts checked against each other, SKILL.md, audio, external resources.
- 补全Complete
complete - 只有角色部分的包,取回官方的基础部分,验过签再放进包里。A pack that has only its role part fetches the official base part, verifies the signature and puts it in.
- 放进环境Install a pack
install - 检查通过才放进项目的
.agents/skills/和.claude/skills/;已有同名目录就拒绝,不覆盖。Only after the check passes, into the project's.agents/skills/and.claude/skills/; a directory that already has the name is refused, never overwritten. - 分享Share
- 打成一个
.voicepack.zip分享文件,里面带一张自己就能打开、能试听的预览卡片。Packs it as one.voicepack.zipshare file, with a preview card inside that opens and plays on its own. - 净室和查重Clean room
clean-room - 照一个已有的包做你自己的:新包的文字交给看不到来源包的新会话写;
--source-pack在花钱之前比对文字和录音,重合太多就停下。Make your own pack after an existing one: a fresh session that cannot see the source pack writes the new text, and--source-packcompares text and recordings before anything is billed, stopping if too much is reused.
量Measure
- 还原度Fidelity
fidelity - 说话人相似度跟真人基线的比值,加盲听;量不了的写明量不了,没听成的可以只补做那几条。Speaker similarity against a same-person baseline, plus blind listening; what can't be measured is reported as such, and items that weren't heard can be redone on their own.
盒子里有什么What's in the box
一个标准的 Agent Skill 目录,入口是 SKILL.md。A standard Agent Skill directory, with SKILL.md as the entry point.
- SKILL.md入口:流程按所需能力写,不点名模型the entry point: flows written by capability, with no model names
- protocol/协议核心:格式说明(第三方照着就能读写音色包)、官方签名、读写和检查包的程序the protocol core: the format spec (enough for anyone to read and write packs), the official signature, and the library that reads, writes and checks packs
- vocab/词表:17 项所需能力,设计词表(6 类属性、8 个预设角色),12 个场景,6 种台本标记,舞台提示vocabularies: 17 capabilities, the design vocabulary (6 attribute groups, 8 preset characters), 12 scenes, 6 script markers, stage cues
- lib/流程层:配音、变声、做包、量还原度、查重the flow layer: dubbing, conversion, pack making, fidelity, duplicate checks
- tools/官方小工具:台本标记解析、分句、音质检查、按能量切段、音频指纹,只做计算official tools: markup parser, sentence splitter, audio quality check, energy-based cutting, audio fingerprints; computation only
- adapters/适配器框架,和通用的 process 适配器the adapter framework and the generic process adapter
- cli.mjs命令行:
node cli.mjs help列出所有命令the command line:node cli.mjs helplists every command
库只用平台自带的 API,不依赖任何第三方库,浏览器和 Node 里都能跑。The library uses only built-in platform APIs and no third-party packages, so it runs in browsers and in Node.
接任何模型Plug in any model
流程只说要什么能力,不点名模型。模型从适配器接进来:一个适配器把所需能力对到一个运行环境里的具体模型。Flows only say which capability they need, never which model. Models come in through adapters: an adapter maps capabilities to the concrete models of one runtime.
已经有一个程序You already have a program
process 适配器把每次能力调用变成对你程序的一次请求:经标准输入输出,一行一个 JSON。程序可以是任何语言写的。The process adapter turns each capability call into a request to your program over stdin and stdout, one JSON object per line. The program can be written in any language.
node cli.mjs dub my-voice/ script.txt --out out/ --adapter process --command "python my_tts.py"还没有程序:生成一个骨架No program yet: generate a skeleton
生成 adapter.mjs 和 program.py(要本机有 Python 3):Write adapter.mjs and program.py (needs Python 3):
node cli.mjs adapter new my-tts --kind process --capabilities text-to-speech,voice-cloning把 program.py 里每项能力「还没有实现」的那一行,换成真的调用。每项能力上面的注释写着参数和返回值。In program.py, replace each capability's "not implemented yet" line with the real call. The comment above each one gives its parameters and return value.
每项能力真调一次,核对返回(调之前会说明调哪几项):Call each capability once for real and check what comes back (it says what it will call first):
node cli.mjs adapter check ./my-tts --live用
--adapter ./my-tts交给 dub、convert、make-pack、fidelity。Hand it to dub, convert, make-pack and fidelity with--adapter ./my-tts.
写一个模块Write a module
一个 ES 模块,默认导出一个工厂,返回 { capabilities, billing, limits, … },每一项都可选。约定只写在 skill 的 adapters/README.md 里。An ES module whose default export is a factory returning { capabilities, billing, limits, … }, every key optional. The contract lives in one place: the skill's adapters/README.md.
适配器在本进程里直接运行,不隔离:只接你信得过的。Adapters run in-process, without a sandbox: plug in only what you trust.
开始Get started
对你的 agent 说Say to your agent
- 看看这个音色包里有什么,检查一下签名。Check this voice pack and tell me what's in it.
- 用这个音色包给 script.txt 配音,先给我看规划,别花钱。Dub script.txt with this pack. Show me the plan first, and don't spend anything.
- 帮我把本机的 python my_tts.py 接成适配器,跑一遍检查。Wire up my local python my_tts.py as an adapter and run the check.
- 照设计词表写一段声音描述:中年男声,低沉,纪录片旁白。Use the design vocabulary to write a voice description: middle-aged man, low pitch, documentary narrator.
或者在 skill 的目录里跑Or run these in the skill's directory
node cli.mjs help列出所有命令;
node cli.mjs help <命令>看用法lists every command;node cli.mjs help <command>shows its usagenode cli.mjs check my-voice.voicepack.zip检查一个音色包,不用接模型checks a voice pack; no model needed
node cli.mjs dub my-voice/ script.txt --out out/ --dry-run配音的规划:每句说什么、挑哪段参考、还缺什么能力the dubbing plan: what each line says, which reference it gets, which capability is still missing