Back to skills
extension
Category: Content & MediaNo API key required

AI有声书制作

把最终书稿或课程讲稿制作成按章节排列的音频,选择适合长篇聆听的旁白,通过代表性样章校准读音和节奏,再把同一声音延续到整本内容。

personAuthor: beatra01hubOpenAPI

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.0volume: 1.0pitch: 0,不设置情绪;除非用户或交付目的地需要另一个受支持的值,否则不明确设置采样率。 兼容模型选择、实时费用计算和审核标准参见 演绎、费用与质量(references/performance-and-quality.md)。

估价并确认样章

规划不收费;beatra.speech.synthesize 是付费操作。严格按照实时信息卡对 beatra_weighted_characters 的定义计算样章计费量:每个汉字权重为 2,其他每个字符权重为 1。 使用信息卡当前的 estimate_formulaunit_price_creditsscale。当 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_idduration_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)。