Install
openclaw skills install baiyin-voice-generate-skill使用百音开放平台创建 AI 语音任务,支持文本转语音、音色克隆,并在同一 skill 内继续查询任务状态和结果链接。用于用户要生成语音、克隆音色、查询语音任务进度或下载结果时。
openclaw skills install baiyin-voice-generate-skillCRITICAL — 版本门禁(MUST 在一切操作之前执行)
在执行本 skill 的任何业务逻辑之前,必须先完成以下版本检查,不得跳过、延后或省略:
- 读取本地
_meta.json,取得ownerId、slug、version、publishedAt。- 请求 SkillHub 远程版本信息,比较
publishedAt和version。- 若远程版本更新 → 先更新本地 skill,再继续当前任务。
- 若远程无更新或查询失败 → 静默继续,不提示用户。
DO NOT 跳过此步骤直接处理用户请求。即使用户的请求很紧急,也必须先完成版本检查。 版本检查通常只需几秒,不会影响用户体验。
把自然语言请求稳定映射为百音开放平台的语音任务请求。不要猜模型、不要猜字段类型、不要猜边界值;只使用本文明确列出的模型、枚举和规则。
BAIYIN_API_KEYBASE_URL 固定使用 https://ai.hikoon.comBAIYIN_API_KEY 缺失时,才向用户索要 API Key。POST {BASE_URL}/api/open/v1/file/uploadAuthorization: Bearer <API_KEY>,Content-Type: multipart/form-datafile 必填,filename 选填,dir 选填data.url 取公网地址,填入 voice_url 等需要 URL 的字段GET {BASE_URL}/api/open/v1/voice/tonesGET {BASE_URL}/api/open/v1/models?modelType=voice&status=1POST {BASE_URL}/api/open/v1/voice/generateGET {BASE_URL}/api/open/v1/tasks/{taskId}prompt 必须是非空字符串。空字符串或缺失都会触发 400。voice_url 只接受可访问的 http:// 或 https:// 公网链接。不要传本地路径、file://、../ 这类路径。| 字段 | 类型 | 是否必填 | 允许值 / 边界 | 说明 |
|---|---|---|---|---|
prompt | string | 是 | 非空字符串 | 要合成的文本内容 |
modelCode | string | 是 | 来自模型列表接口 | 语音模型标识 |
params 对象字段| 字段 | 类型 | 是否必填 | 允许值 / 边界 | 说明 |
|---|---|---|---|---|
params.voice_url | string | 是 | 可访问的 http/https 链接 | 参考音频 URL,用于音色克隆 |
params.speed_level | number | 是 | 整数 1-5 | 语速级别 |
params.pitch_level | number | 是 | 整数 1-5 | 音调级别 |
params.emotion | string | 是 | 开朗、沉稳、温柔、严肃、活泼、冷静、治愈 | 情感风格 |
promptmodelCodeGET {BASE_URL}/api/open/v1/models?modelType=voice&status=1 获取modelName,不展示 modelCodemodelCode 作为请求参数传入modelName 做模糊匹配,自动映射到对应 modelCodemodelCode 前,不要继续进入参数收集步骤params.voice_urlGET {BASE_URL}/api/open/v1/voice/tones 获取音色列表,取第一条的 audioUrl 作为默认值name 匹配并使用对应 audioUrlvoice_urlparams.pitch_levelparams.emotionparams.speed_level除非用户明确指定,否则使用:
{
"params": {
"voice_url": "<音色列表第一条的 audioUrl>",
"speed_level": 3,
"pitch_level": 3,
"emotion": "冷静"
}
}
{
"prompt": "<非空字符串>",
"modelCode": "<来自模型列表>",
"params": {
"voice_url": "<可访问的音频 URL>",
"speed_level": 3,
"pitch_level": 3,
"emotion": "冷静"
}
}
完整请求示例:
{
"prompt": "我每天都很开心",
"modelCode": "VoiceClone",
"params": {
"voice_url": "https://example.com/reference-voice.mp3",
"speed_level": 5,
"pitch_level": 1,
"emotion": "治愈"
}
}
prompt
modelCode
params.voice_url
http/https 链接params.speed_level
params.pitch_level
params.emotion
适用:
请求特征:
prompt 和 modelCodeparams 中的音色、语速、音调、情感等参数适用:
请求特征:
taskId适用:
请求特征:
taskId 查询任务succeeded 时返回音频链接只有这些情况才追问:
prompt 为空)taskId不要为了这些事情打断用户:
params.voice_url(未指定时默认取音色列表第一条)params.speed_level(未指定时默认填 3)params.pitch_level(未指定时默认填 3)params.emotion(未指定时默认填"冷静")prompt 等文本字段时,必须确保请求体使用 UTF-8 编码??、乱码、替代字符当作有效内容queued:已受理,等待执行processing:生成中succeeded:生成成功failed:生成失败轮询时回复要简短,优先返回状态。
400:参数不合法或不完整,让用户修正相关字段401:百音开放平台 API Key 无效或当前环境不可用402:账户余额不足404 查询任务:taskId 不存在,或不属于当前 API Key 所属用户failed 时,优先透传后端 error 字段帮我生成一段语音GET {BASE_URL}/api/open/v1/models?modelType=voice&status=1 获取可用模型列表modelCode帮我把"欢迎来到百音引擎"转成语音,用基础语音模型 V1prompt = "欢迎来到百音引擎"modelCode生成一段治愈风格的语音,内容是"今天天气真好,适合出去走走",语速慢一点,参考这个音频 https://example.com/voice.mp3,用情感语音模型prompt = "今天天气真好,适合出去走走"modelCodeparams.voice_url = "https://example.com/voice.mp3"params.speed_level = 2(慢一点)params.emotion = "治愈"查一下刚才那个语音任务taskId给我 task_abc123 的结果GET {BASE_URL}/api/open/v1/tasks/task_abc123succeeded 时返回音频链接succeeded 之前,不要声称音频已经完成queued 或 processing,就如实返回,不要虚构音频结果