多角色配音工作室
给剧本配上一套角色声音。每个角色固定一个音色,每句台词都用所属角色的声音录,再按剧本顺序把音频编好号、标好是谁说的交回来,这场戏就可以在用户自己的编辑器里组装和发布。
你会拿到什么
一次完成的运行会交回:
- 每一条台词一段编号音频,标好说话角色,顺序跟剧本一致
- 一张角色表:每个说话人、他们彼此之间声音怎么拉开,以及整部作品沿用的音色
- 模型实际返回的每段时长、大小和格式
它不把这些片段合成一集成品。组装留在用户的编辑器里。成品格式由模型决定,交付时如实报告。
可以怎么跑
- 定角色并录制 — 默认。读剧本,每个角色固定一个音色,逐条合成,交付带标签的片段。
- 加入自有音色 — 可选。克隆用户拥有或已获授权的样本,再像其他音色一样放进角色表。
定角色和拆剧本免费。合成付费。克隆是另一次付费,有自己的确认。
适用范围与路线选择
当剧本或一段对白里不止一个说话人时,使用本 Skill:有声剧与广播剧、小说改编的演播、有声小说里的具名角色、双人或圆桌节目、以对白推进的课程或培训情景、两个及以上角色的脚本广告,以及有明确角色的互动故事。
单人旁白的书或课程请使用 ai-audiobook-narration。单人主播的播客单集请使用 ai-podcast-voiceover,短视频口播请使用 short-form-voiceover-audio。如果用户要的只是用一段样本做一个可复用音色这件事本身,请使用 voice-cloning-studio。如果本剧角色表里某个角色需要克隆音色,就在本 Skill 内完成。一般的单音色工作请使用 beatra-ai-voice-studio。带画面的旁白视频请使用 novel-promo-video-maker。
输入与默认值
唯一的硬性输入是剧本文本。复用对话中已有的题材、年代、语气、角色设定、语言和已经选好的音色。
只有当答案会改变付费结果时才询问:这段是没有标注说话人的正文、文本本身也定不下来时,问哪几句是谁说的。
避免多余提问的默认值:
- 每个有名字的角色一个音色;剧本里有旁白时,旁白再单独占一个。
- 说话顺序跟着剧本走,不做任何重排。
- 省略
model,交给 Beatra 路由,除非用户点名。 - 省略
language走自动识别,除非用户指定了语言或剧本里混着好几种。 - 每条台词一次合成调用,这样改一句时不必为整场戏重新付费。
标准流程
- 读完剧本,建一张角色表:每个有台词的角色、他的年龄与性格,有旁白的话再加上旁白。把剧本拆成一条条台词,每一条只属于一个角色。把这张编号角色表和台词列表给用户看。这张表就是免费可见的结果。规划不是批准。
- 只有在还缺音色、或者用户要求浏览比较时,才调用
beatra.voices.list。然后给每个角色分配一个音色 ID,这个分配在整部作品里保持不变。 - 读取实时的
text_to_speech卡片,通过beatra.models.list:
bash
python3 scripts/mcp_client.py call beatra.models.list
json
{"capability": "text_to_speech"}
价目以返回的卡片为准。语音按加权字符线性计费,以每 1,000 加权字符为计价单位:每个汉字算两个字符、其他字符各算一个;不足 1,000 加权字符的台词按实际加权字符计费,不按整 1,000 计。
4. 为整场戏出示一张当前制作卡并等待。用户若在这里停住,免费角色表仍然可用。
5. 用 beatra.speech.synthesize 逐条合成,一条台词一次调用,每条只提交一次并轮询它自己的任务。
6. 按剧本顺序交付,编好号并标注是谁说的。每一条都报告实际返回的时长、大小、MIME 类型和 URL 或 artifact,以及解析出的模型和 billing.net_charged_credits。
7. 只复核宿主 Agent 确实能播放的部分:每条台词是不是用了分配给它的音色、发音和节奏是否贴合这句话、顺序和剧本是否一致。
改动的单位是一条台词,不是整场戏:只用新的请求 ID 重录改动的那一条,已经认可的台词原样保留。角色表怎么写、确切载荷、每个角色的音色纪律、故障恢复与交付复核见有声剧配音工作流。
需要确认的决策
规划、角色表和实时报价都免费。它们不是批准。
第一次付费提交 beatra.speech.synthesize 之前,为这场戏出示一张当前制作卡并等待:
- 工作 — 用用户的话说这场戏,并说明这是对列出的台词做一次生成调用。
- 积分 — 刚从
text_to_speech卡片读到的实时价格。不要复用记住的数字。 - 次数 — 每条台词一次付费调用。改一句就是另一次调用。
- 身份 — 每条台词一个新的不透明
client_request_id。剧本、说话人、音色、语言或模型若有变化,就发一个新 ID。绝不在台词之间或不同参数上复用同一个 ID。 - 若在这里停住 — 角色表和拆好的剧本仍然可用。
- 若余额不足 — 原样转述官方文案和充值 URL。正文可翻译,充值地址保持原样。用户说已经充值之前不要重试。
通过随包的 scripts/mcp_client.py 提交一次。用 beatra.tasks.get 轮询。交付实际字节以及 billing.net_charged_credits。不要把预估说成最终扣费。
克隆音色需要它自己的明确授权确认,以及它自己的六项制作卡,与合成分开。合成确认绝不授权 beatra.voices.clone。
使用克隆音色
只有当用户想用一段样本做一个可复用的音色、并且明确确认这个声音归他所有或已获得该声音所有者的授权时,才使用 beatra.voices.clone。手上有音频文件不等于已获授权。先拿到这个确认再上传,之后才设置 consent_attested: true,并且只提交一次。
报价前先读取实时的 voice_clone 卡片:
python3 scripts/mcp_client.py call beatra.models.list
{"capability": "voice_clone"}
出示克隆制作卡并等待:
- 工作 — 为角色表上一个具名角色提交一份已获授权的声音样本(
beatra.voices.clone)。 - 积分 — 刚读到的实时
voice_clone价格。不要复用记住的数字。 - 次数 — 这份样本一次付费克隆调用。
- 身份 — 一个新的不透明
client_request_id。 - 若在这里停住 — 角色表仍可用目录音色。
- 若余额不足 — 原样转述官方文案和充值 URL。正文可翻译,充值地址保持原样。用户说已经充值之前不要重试。
不要提供免费克隆,也不要用免费样音替代克隆。克隆成功的结果就是一个已激活的音色,会返回一个 voice_id,可以像其他音色一样进这张角色表。样本限制和实时卡片字段见有声剧配音工作流。
账户余额
用户问还剩多少积分,或某次实时估价够不够时,调用 beatra.wallet.get。问已经扣了多少时,调用 beatra.wallet.ledger。两者都是只读的。不要臆造查余额或充值的工具。也不要把 wallet.get 变成每次付费提交前的必需步骤。
模型卡返回里带 top_up 块时,按卡片给出的档位和顺序原样转述。不要给档位排高低,不要贬低其中任何一档,也不要替用户挑。选哪一档是用户自己的事,钱包页会把整份清单摆在他面前。任何时候都不要凭记忆报档位。
本 Skill 的执行方式
每个远程 Beatra 操作都使用随包的 scripts/mcp_client.py:在 call 后写入 MCP 工具名,并在标准输入中传入一个 JSON 对象。不要配置或调用宿主 Beatra Connector。不要使用 REST/OpenAPI 作为回退。首次使用时通过 beatra.installations.register 注册本包。每次创作都是异步任务:提交一次,然后跟踪该任务直到终态。
故障恢复
任务 ID 一返回就立即保存,并用 beatra.tasks.get 轮询;queued 和 running 表示继续等待。只有在创建请求的响应确实未知、且载荷在同一请求 ID 下逐字节相同时,才重放一次创建。任务 ID 丢失时,用 beatra.tasks.list 按该次调用的能力查找(合成用 text_to_speech,克隆用 voice_clone),沿着返回的每一个 next_cursor 翻完覆盖提交时段所需的页,用 beatra.tasks.get 确认候选,先找回原任务再考虑新的工作。请求 ID 本身丢失时,不要臆造新 ID,也不要重放。只有用户要求时才调用 beatra.tasks.cancel;遇到 409 时继续轮询原任务,只有其终态为 canceled 时才报告已取消。
当某一条台词失败而其余成功时,只恢复那一条。已经交付的台词依然有效,不重新合成。
按任务查阅参考
- 有声剧配音工作流:角色表、台词拆分、确切载荷、每个角色的音色纪律、克隆音色、故障恢复、交付复核,以及余额问题。
- 安装与认证和安装注册:首次使用与共享凭据。
- 任务与结果和计费、错误与恢复:任务、artifact 与计费事实。
- 随包 MCP Client 连接诊断:客户端操作与连接诊断;不要配置宿主 Connector。
- 自动更新与安全:更新行为与开关。
- 卸载与断开连接:停止使用并清理共享凭据。
运行时与安全的自动更新
随包客户端会在每个安装中静默检查更新,最多每 24 小时一次。发现更高版本时,不另行确认地自动安装。它只使用针对本包、渠道和语言环境固定的 Beatra 官方发现地址和不可变 CDN 路径,在替换前校验发现信息、压缩包、清单和每个随包文件,并且只替换本包拥有的文件。更新检查、下载、校验、替换和恢复失败时会 fail open:当前安装仍可使用,原本请求的命令会继续执行。更新失败绝不构成重试付费生成的理由。这个设置会在后续命令中持续生效。
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check
--auto off 会关闭静默检查,--auto on 会恢复静默检查,--check 会报告官方可用版本但不替换文件。详见自动更新与安全。