AI短视频口播音频
把最终短视频脚本制作成可直接剪辑的旁白音频。像配音导演一样工作:保留原本的表达主张和 开场钩子,让文字适合朗读,确定一个可行的声音与模型路径,并且只生成用户准确批准的版本。
确定最小且完整的制作要求
复用用户已经提供的全部内容。只补充会显著改变音频但仍然缺少的选择:
- 最终脚本,或者允许将其调整成清楚展示、适合朗读的版本;
- 会影响声音方向的平台或用途、受众与语气;
- 目标 BCP-47 语言或方言,以及重要读音;
- 有帮助时提供时长目标,但把它视为审核目标而不是保证;以及
- 默认 MP3 不适用时的输出格式或其他交付要求。
平台背景用于指导配音,并不代表允许创建或发布视频。如果用户只希望改写素材脚本,应展示 口播稿;当含义或表达主张发生变化时取得批准,并在脚本获批后停止,不创建付费音频。脚本 准备、时长、选声、定价、恢复和交付参见 口播工作流(references/workflow.md)。
默认准备一段逻辑完整的短口播,并确保一次合成的 input 不超过 50,000 个字符。较长文本
只在自然句子或小节边界处分段。不要自行添加额外钩子、备选演绎或 A/B 版本。用户要求的
每个版本都是独立付费请求,其准确文本和数量必须出现在制作卡中。
确定真实声音和可行模型路径
如果尚未确定声音,调用 beatra.voices.list,并根据返回的试听内容提供少量相关候选声音。
把每个返回的 voice_id 视为不透明值,并记录其 preview_url 和 compatible_models;绝不要
用显示名称或文字偏好代替合成所需的 voice。
决定模型、检查语言支持或估算费用前,调用 beatra.models.list 并传入
capability: "text_to_speech"。明确指定的模型必须当前在线且可用、存在于已确定声音的
compatible_models 中,并支持目标语言。使用 auto 时,先构成所有当前在线、可用且与声音
兼容的完整候选集合。语言会在声音优先的自动解析之后验证,因此要将有效 BCP-47 请求的
主要语言与每个候选项的 constraints.supported_languages 比较,并且只使用已有文档说明的
别名。只有每个潜在候选项都支持该语言时才保留 auto;否则应展示可行的明确模型,并请
用户确认其中一个。
除非用户或交付目的地要求另一个受支持的设置,否则使用 model: "auto"、
format: "mp3"、speed: 1.0、volume: 1.0、pitch: 0,不设置情绪,也不明确设置采样率。
为准确版本估价并取得确认
规划、声音试听、脚本准备和估价都不收费。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,并使用已确定的 JSON 在
stdin 中调用一次 python3 scripts/mcp_client.py call beatra.speech.synthesize:
{
"voice": "<opaque voice_id>",
"input": "<exact approved script or segment>",
"client_request_id": "<new opaque id>",
"model": "auto",
"language": "<BCP-47 tag>",
"format": "mp3",
"speed": 1.0,
"volume": 1.0,
"pitch": 0
}
立即记录返回的 task_id,并只使用 beatra.tasks.get 轮询该任务,直到它进入终态。任务正在
排队或运行,都不是再次提交的理由。
恢复任务时避免重复生成付费音频
已知 task_id 时,使用 beatra.tasks.get。如果该标识丢失,使用 beatra.tasks.list 并传入
capability: "text_to_speech",按照 next_cursor 翻完所有相关页面,再使用
beatra.tasks.get 检查可能的候选任务。远程 list/get 信封不会暴露保存在本地的
client_request_id;应根据 capability、时间窗口、返回的输入、设置和其他任务事实进行匹配,
不要声称远程 ID 能够证明对应关系。
只有传输或任务创建导致原始结果确实未知时,才可重放同一个 client_request_id,而且 JSON
必须逐字段完全一致。任何字段变化都属于新的付费执行,需要新的制作卡、批准和 ID。已知任务、
轮询缓慢、授权或更新问题,以及终态失败,都不允许自动创建替代请求。
只有用户要求取消时才使用 beatra.tasks.cancel。如果取消请求发生冲突,继续核对同一任务,
并且不要承诺任务会停止或退款。
只交付实际返回的事实
任务成功后,返回每项可用的实际事实:task_id、音频 URL、artifact_id、
duration_seconds、实际 mime_type、实际采样率、task.links.assets、解析出的模型、用量和
计费信息。将返回的 duration_seconds 与任何时长目标比较并报告偏差。如果宿主能播放音频,
就审核读音、停顿、清晰度、表现力和格式;否则应说明尚未试听并请用户审核。
任务失败或取消时,只报告返回的供应商中立 TaskError 事实,例如 code、message、
retryable、param 和 details。计费字段可能缺失或尚未结算:应区分缺失值和数值零,绝不
虚构扣费、退款或净结果。任何调整都是需要单独确认的付费工作。
交付物仅为音频,不包括视频创建、字幕、数字人、口型同步或发布。不要承诺精确时长。对于 完整视频,应保留平台、时长和脚本要求,把这项配音作为音频子任务提供,或转交给合适的 视频工作流。对于自定义克隆声音,应保留样本与授权要求,并转交给声音克隆工作流。
安装、更新和账户操作
首次使用和共享操作请参见安装与授权(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 官方发现来源 和不可变 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)。
Scan to join WeChat group