AI 导演
先让 AI 导演读懂文字、安排演绎,再交给语音合成,让声音像真人在讲。
先让 AI 导演读懂文字、安排演绎,再交给语音合成,让声音像真人在讲。
AI 导演会读懂原文和用户的要求,按目标声音能执行的写法,安排情绪、表演、音效、停顿和读音, 返回一份可以直接合成的配音稿。它只添加演绎,不改动原文的任何一个字。没有指定声音时, 它还会推荐一个合适的声音和模型,并说明理由。
Agent 主路径
通过 Universal Skill 使用 MCP 工具 beatra.speech.prepare_script。该工具计费,返回异步任务。
- 把原文交给
input,用户对效果的要求(如有)交给instructions。用户指定了声音或模型就一并传入; 没有就省略,让 AI 导演推荐。 - 创建一个不透明的
client_request_id,只提交一次;用beatra.tasks.get轮询到终态。 - 把结果里每一稿的
synthesis原样作为beatra.speech.synthesize的参数,另加你自己的client_request_id。synthesis为null的稿子不能直接合成,原因见提示。 - 用户想调整时(例如"第二段再紧张一点"),把这句话加进
instructions(保留之前的要求)再调用一次,然后重新合成。
AI 指南
给 AI 的集成说明
接入自有应用时,可以把这份 API 指南复制给 Claude、Codex 或其他编程助手。
工具参数
input:原文,任何支持的语言,最多 50,000 字符。原文里已经写好的标记(如{pause 0.5})会原样保留, AI 导演只在此基础上添加。原文超出所指定声音或模型的单次上限时(ElevenLabs 为 10,000 字符), 会直接返回与语音合成相同的 422 错误,不产生费用。instructions:可选,用户的要求,自然语言,任何语言,最多 2,000 字符。传了就以要求为准, 要求没提到的部分按文字本身的意思自然演绎;不传时整篇按文字的意思自然演绎。voice、model:可选,含义和默认规则与beatra.speech.synthesize相同。都不传时由 AI 导演推荐; 只传声音时在它支持的模型里选;只传模型时在这个模型可用的声音里推荐。language:可选,通常不传(默认auto,自动识别)。只有用户指定了语言,或者文字本身看不出来的方言 (如粤语yue)时才传。context:可选,进阶用法。分段导演长文时,传入这一段前后的文字{"before": "…", "after": "…"}, 各最多 2,000 字符。只用来理解语气,不会被标注、朗读或返回;目标模型支持时,before的结尾会作为建议的上文 放进synthesis.previous_text,让前后语气接得上。
结果
任务成功后,output 里是一组配音稿:
scripts:每一稿对应一次合成调用。目前总是一稿;以后会有多稿(例如多人分配),请逐稿处理。synthesis:这一稿的合成参数,原样作为beatra.speech.synthesize的参数即可(另加client_request_id)。input是写好标记的配音稿,另有voice、model、language,以及目标声音确实执行的整段参数emotion、direction、previous_text(不执行的不会出现)。这一稿不能直接合成时为null: 没有可用的声音、声音读不了这份稿子,或这次没能完成预检(稍后重试即可),原因见提示。summary:一句话演绎说明,可以直接讲给用户听,不含参数名和标记。语言跟随instructions; 没有要求时跟随原文。voice_selection:这一稿用的声音,包括voice、model、声音名字name和试听链接preview_url。source为recommended时由 AI 导演推荐,reason是推荐理由;为given时是你指定的声音,reason为null。没有声音时整个字段为null。alternatives:推荐声音时另给最多 3 个备选,字段与voice_selection相同(没有source); 指定了声音时为空列表。estimate:用这一稿合成的准确价格,与免费预检一致;synthesis为null时它也为null。directed:为false时 AI 导演这次没能完成演绎,稿子是原文,导演部分不收费;有synthesis时仍可以直接合成。- 没有可推荐的声音时(提示
no_voice_available),synthesis、voice_selection和estimate都为null: 请用beatra.voices.list选一个声音,带上voice再调用一次。
想换成备选声音时,在 2 天内只改 voice(需要时连同 model),其余参数不变,用新的 client_request_id
再调用一次。AI 导演会复用上次的理解,同一份理解不会重复收费,只按新声音重新安排写法。这次调用同样要满足余额预估和
同时最多 2 个的限制,但复用的理解不会再收费。
不同模型上的演绎
AI 导演只写目标模型能执行的写法:
- ElevenLabs:逐句切换情绪,支持耳语、大喊等表演,以及笑声、叹气等音效。
- MiniMax:整段一种情绪,支持停顿、指定读音和音效。
- 豆包:整段一种情绪,支持停顿和指定读音;是否跟随情绪、表演指令和上文因音色而异。
用户明确要求的效果所选声音做不到时,AI 导演会完成其余部分,并在提示里说明做不到什么、用了什么代替。 需要逐句演绎时,可以换一个能逐句表演的声音。
提示
顶层 warnings 是 AI 导演给用户的说明,需要转告用户;每一稿的 warnings 是免费预检对这一稿的提示,通常为空。
code | 含义 |
|---|---|
direction_unavailable | AI 导演没能完成全部或部分演绎,这些句子按原文返回,这部分不收费。field 为 voice 时表示你指定的声音读不了这一稿(例如文字的语言与声音不一致),请换一个声音 |
effect_unavailable | 所选声音做不到用户要求的某个效果,或文字接近单次长度上限、这个效果没能保留。effect 写明哪个效果,substitute 写明用了什么代替(没有代替时为 null);effect 为 voice_gender 时表示这种语言暂无符合要求性别的声音,已推荐最合适的其他声音 |
instruction_unsupported | 要求里有暂不支持的操作,例如翻译、改写原文或分配多个说话人,这部分已忽略 |
no_voice_available | 没有可推荐的声音:没有声音能读这种语言、指定的模型没有能读这种语言的声音、文字超出所有声音的单次上限,或能读的声音暂时都不可用。稿子照常返回 |
计费与任务状态
AI 导演先推理再标注,按实际输入、输出和推理 token 后付费。价格和每千字的预估费用见
能力目录 GET /v1/catalog/capabilities/speech_script。提交时,余额需不低于这段文字的预估费用(不足 1,000 字按
1,000 字计);如果本账号还有一个 AI 导演任务正在进行,还要加上它的预估费用。按每千字 146 积分计算,1 万字需要
1,460 积分。余额不足时返回 402 insufficient_balance,details.reason 为 director_estimate,不会创建任务。
最终按实际用量扣费,通常低于预估。directed 为 false,或复用了 2 天内的同一份理解时,
导演部分不收费。directed 为 true 时按实际 token 计费;AI 导演读完后判断原文已经合适、没有添加演绎时也是如此。
合成另按语音合成计费,价格见每一稿的 estimate。
每个账号同时最多 2 个 AI 导演任务在进行,全平台同时进行的数量也有上限。第 3 个请求返回 429 rate_limited,
details.reason 为 director_inflight_limit(通过 MCP 调用时,套餐的同时进行上限可能先生效);AI 导演当前繁忙时
返回 429,details.reason 为 director_busy。两种情况都不会开始任务,也不扣费。遇到 director_inflight_limit
时,请等本账号的一个 AI 导演任务结束后再提交;遇到 director_busy 时,请在 details.retry_after_seconds 秒后
重试(REST 的 Retry-After 响应头给出相同的秒数)。AI 导演暂时不可用时返回 503 model_unavailable;这项能力
不用选模型,请稍后重试。
queued 与 running 不是失败,请持续轮询同一个 task_id。创建响应丢失时,用同一个 client_request_id
原样重试;任何输入变化都要换新 ID。任务列表(GET /v1/tasks)里只显示结果的摘要:标有 truncated: true,
不含 synthesis;要拿到可以合成的配音稿,请按任务 ID 读取(beatra.tasks.get 或 GET /v1/tasks/{task_id})。
AI 导演的结果是一份配音稿,不是作品,不会出现在作品墙;在控制台的动态和账单里显示为"AI 导演"。
通过 REST 调用
直连协议集成可使用 POST /v1/audio/speech/scripts 与共享任务端点:把每一稿的 synthesis 原样作为
POST /v1/audio/speech 的请求体。参数见生成的
接口定义。
推荐通过 Skill + MCP 接入;REST 适合自定义应用直连。
最后更新