AI有声书制作
把最终书稿或课程讲稿制作成按章节排列的音频。像有声书制作人一样工作:保留书稿原意, 指导一位旁白持续稳定地演绎,先用有代表性的样章验证方向,并只在样章获认可后继续制作。
从最小且完整的准备信息开始
复用用户已经提供的全部内容。开始旁白前,只补齐仍然缺少的必要信息:
- 至少用于样章的最终可朗读文本;
- 章节或小节顺序,以及目标 BCP-47 语言或方言;
- 任何必须遵循的读音表;以及
- 会影响结果的用途、输出格式和交付偏好。
建立章节与片段台账。保留预期聆听顺序,标记每个片段,并在章节、小节、场景、段落或句子
边界处分段。绝不从句子中间切分,并确保每次提交的 input 不超过 50,000 个字符。只移除
用户不希望朗读的纯页面内容。文本准备、选声和样章边界参见
章节制作(references/chapter-production.md)。
确定真实声音和可行模型路径
尚未确定旁白时,使用 beatra.voices.list。只有返回的不透明 voice_id 才能作为合成时
voice 的有效值;绝不要用显示名称、文字偏好或记忆中的标签代替。把选定的 voice_id、
试听内容、声明的语言信息和 compatible_models 记入台账。使用现有试听内容选声,无需创建
付费音频。
决定模型、检查语言支持或估算费用前,调用 beatra.models.list 并传入
capability: "text_to_speech"。如果用户明确指定模型,必须确认它有一张当前可用的实时信息卡、
同时出现在已确定声音的 compatible_models 中,并确认该信息卡支持目标语言。语言不是
auto 路由的输入:服务先根据声音解析 auto,然后验证语言。用所有当前可用且与声音兼容的
候选项构成 auto 集合。将有效 BCP-47 请求的主要语言与每个候选项的
constraints.supported_languages 比较,并且只使用已有文档说明的别名。只要任一潜在候选项
不支持目标语言,就不要使用 auto;展示可行的明确选项,并请用户确认一个既兼容声音又支持
该语言的模型。只有所有潜在候选项都支持目标语言时才使用 auto,并按完整候选集合估价。
默认使用 model: "auto"、format: "mp3"、speed: 1.0、volume: 1.0、
pitch: 0,不设置情绪;除非用户或交付目的地需要另一个受支持的值,否则不明确设置采样率。
兼容模型选择、实时费用计算和审核标准参见
演绎、费用与质量(references/performance-and-quality.md)。
估价并确认样章
规划不收费;beatra.speech.synthesize 是付费操作。严格按照实时信息卡对
beatra_weighted_characters 的定义计算样章计费量:每个汉字权重为 2,其他每个字符权重为 1。
使用信息卡当前的 estimate_formula、unit_price_credits 和 scale。当 auto 可能解析到多个
适用且与声音兼容的信息卡时,展示费用区间或清楚标注的上限。
开始付费旁白前,用一张制作卡说明:
- 样章范围、按顺序排列的片段数和加权字符总数;
- 已确定的
voice_id、模型选择或适用的auto区间、BCP-47 语言、格式、已设置的采样率、 语速、音量、音高和已设置的情绪; - 实时定价依据、公式、单价或区间,以及预计积分;以及
- 清楚说明批准后会严格创建卡片中列出的付费请求。
等待用户明确批准当前制作卡。如果用户已经批准完全相同的当前制作卡,不要再次确认。 任何新提出的付费执行都必须获得对当前制作卡的明确确认;绝不自动重试付费调用。样章批准 只涵盖样章。审核完成后,把剩余章节作为增量批次估价,展示其片段数及费用估算或区间,并在 继续前另行取得批准。
每个获批片段只执行一次
所有远程 Beatra 操作只能使用本 Skill 随包提供的 scripts/mcp_client.py。工具名称作为 CLI
参数,其 JSON 参数通过 stdin 发送。不要配置、调用或使用宿主 Beatra Connector,也不要使用
REST/OpenAPI 作为降级或回退方案。准确的客户端命令和故障排查方法参见
随包 MCP Client 连接诊断(references/mcp-connection.md)。
随包客户端会进行尽力而为且不计费的安装注册。对每个新获批准的片段,创建一个新的不透明
client_request_id,并且只提交一次 beatra.speech.synthesize。JSON 必须明确包含已确定的
声音、准确片段文本和请求标识,随后列出已确定的可选控制项:
{
"voice": "<opaque voice_id>",
"input": "<exact approved segment text>",
"client_request_id": "<new opaque id>",
"model": "auto",
"language": "<BCP-47 tag>",
"format": "mp3",
"speed": 1.0,
"volume": 1.0,
"pitch": 0
}
通过 python3 scripts/mcp_client.py call beatra.speech.synthesize 调用,并在 stdin 中发送上述
JSON。立即把返回的 task_id 与对应片段和请求标识记录在一起,然后只使用
beatra.tasks.get 轮询该任务,直到它进入终态。
恢复任务时避免重复付费
如果已知任务存在,使用 beatra.tasks.get 读取。如果 task_id 丢失,调用
beatra.tasks.list 并传入 capability: "text_to_speech",按照所有返回的 next_cursor 翻页,
直至搜索完相关时间窗口,再使用 beatra.tasks.get 验证候选任务。tasks.list 不按
client_request_id 筛选,远程 list/get 任务信封也不返回 client_request_id;该标识只保留在
本地台账中。根据 capability、相关时间窗口、返回的输入与设置,以及任务事实匹配远程候选项。
绝不要声称能从远程任务还原本地请求标识。
只有传输或任务创建导致原始结果确实未知时,才可重放相同请求标识,而且 JSON 必须逐字段 完全一致。文本、声音、模型、语言、格式或其他控制项的任何变化都属于新的付费执行,需要 新的 ID 和新的批准。轮询缓慢、授权问题、更新失败或终态失败,都不允许自动创建替代请求。 任务翻页、终态错误、取消和计费事实参见 交付与恢复(references/delivery-and-recovery.md)。
审核并交付实际返回的内容
对于每个成功片段,交付所有实际存在的返回事实:task_id、音频 URL、artifact_id、
duration_seconds、实际 mime_type、实际采样率、task.links.assets、解析出的模型、用量和
计费信息。按照聆听顺序保留章节,并标明仍待审核的内容。如果宿主能够播放或检查音频,
就审核读音、停顿、节奏、声音适配度和跨章节一致性。如果无法播放或检查,应说明尚未试听
音频并请用户审核;绝不要虚构试听结论。
只修正受影响的最小片段。修正属于新的付费工作,使用同样的制作卡和确认边界。
用户要求准确时长时,把该时长保留为审核目标。使用受支持的语速和演绎控制项,在确认后
生成最小且有用的片段,将返回的 duration_seconds 与目标比较并报告偏差。然后只提出最小且
有效的调整,供用户重新确认。试听结果之前绝不要保证精确命中时长。
用户要求多人演绎时,先确认是否接受由一位旁白使用一个已确定的声音、受支持的控制项和 精心设计的节奏来演绎对白。如果接受,把该要求保留在演绎方向中,并沿用正常样章流程。 如果用户确实需要混合多人声音、按声音分别制作或编辑,应保留该要求,并转交给另一套能够 混合和编辑多个声音的合适工作流;不要削弱请求,也不要声称这套单旁白工作流已经完成该任务。 从最终可朗读文本开始。如果项目还需要源文件导入、翻译、多人配音混音、M4B 组装、母带处理 或发布支持,请保留这些要求,并把相应准备或收尾步骤转交给合适的工作流。
安装、更新和账户操作
首次使用和共享操作请参见安装与授权(references/installation-and-auth.md)、 安装注册(references/installation-registration.md)、任务与结果(references/tasks-and-results.md)、 计费、错误与恢复(references/billing-errors-and-recovery.md)以及 卸载与断开连接(references/uninstall-and-disconnect.md)。
默认启用自动更新。执行公开命令时,随包客户端会静默检查,每 24 小时最多一次。发现更高版本时, 它会在不另行确认的情况下自动安装更新。它只使用为当前安装固定配置的 Beatra 官方发现地址 和不可变 Beatra CDN 路径。替换前,它会根据身份、大小和 SHA-256 校验压缩包、清单、 发现文档以及包内每个文件。它只替换当前 Skill 目录中本包拥有的文件,并拒绝不安全的重定向、 降级或来自不同渠道或语言区域的内容。如果任何检查、下载、替换或回滚失败,更新会以开放 方式失败:当前安装仍然可用,用户原本请求的命令也会继续执行。
用户的更新设置会对当前安装持续生效,直到再次更改:
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check
固定来源、完整性校验、替换边界、失败行为和持久控制的完整说明参见 自动更新与安全(references/automatic-updates-and-safety.md)。
微信扫一扫