AnyVoice.cn
首页
AI音色库
创建声音模型
声音克隆
声音设计
AI降噪
API
常见问题
AnyVoice.cn
首页
AI音色库
创建声音模型
声音克隆
声音设计
AI降噪
API
REST · OpenAPI 3.0 · Agent 技能包 · 一次接入

让 AI 直接调用 AnyVoice 语音接口

语音克隆 API:文本进、音频 URL 出。上传 3–60 秒参考音频即可克隆音色(推荐 3–10 秒清晰干声), 支持普通话、英语、14 种中文方言、7 种民族语言与 100+ 语种;提供 REST 接口与机读 OpenAPI 3.0 规范, 扣子、Dify、n8n、WorkBuddy、OpenClaw、ComfyUI、Claude Code、Codex 均可直接接入。

文档版本 1.2发布 2026-09-01更新 2026-09-20AnyVoice 开发者团队

这是什么:AnyVoice 语音开放接口,10 个 REST 端点覆盖声音克隆、语音合成、8 维情绪向量控制与音频降噪。

适合什么:短剧多角色批量配音、方言口播、有声书长文本——需要把「文本变成某个人的声音」自动化的场景。

谁能用:旗舰会员。密钥即请求头 sign;API 不另收费,与套餐共享字符额度。

怎么接:扣子 / Dify / n8n 导入 openapi.json;WorkBuddy / Claude Code / Codex 导入官方技能包;ComfyUI 走 HTTP 节点。

100+语种:14 中文方言 + 7 民族语言 + 40 独立语言,枚举外可试传
10个 REST 端点,四组
8 维情绪向量控制
10000字符 / 次(旗舰会员)
获取 API Keyopenapi.json

我该走哪条路新增

按你的情况选一条,每条都能在 10 分钟内跑通。

会接 API,但不想写代码

用扣子、Dify、n8n、WorkBuddy 工作流。导入 openapi.json 做自定义工具,鉴权选自定义请求头 sign。

去智能体接入 →

不写代码,让 AI 助手替我接

把下面那段说明复制给你的 AI,它会自己读文档、要密钥、生成音频。

去给 AI 助手的说明 →

写代码,用 Claude Code / Codex / Python

导入官方技能包,一条命令完成取音色 → 合成 → 落盘;也可直接调 REST。

去官方 Skill →

账号与密钥

API 能力面向旗舰会员开放,密钥即请求头中的 sign。全部功能均支持 API 接口调用, API 不额外收费,与套餐共享字符额度。下面的文档可先通读,无需登录。

未开通:点右侧按钮开通旗舰会员,开通即生效。已开通:点右侧按钮直接显示密钥,可复制。

按钮按账号状态自动变化:未登录 → 「登录后开通」;已登录未开通 → 「立即开通」;已开通 → 「查看我的密钥」, 点开后在本区域显示 sk_****9970、复制、本月已用字符。

AnyVoice 网页端注册即送 150,000 字符、声音克隆次数与声音模型不限量;API 面向旗舰会员(¥279.90/年,50 万字符/月), 额度与套餐共享,不含在免费赠送内。密钥泄露请联系客服重置。

快速开始

两步跑通:取音色 ID → 同步合成。

  1. 拿到音色 ID:调 GET /api/third/reference/list,取 list[].roleId;也可先用 /reference/upload 上传 3–60 秒干声创建自己的音色。
  2. 合成语音:调 POST /api/third/tts/syncaudioId 填上一步的 roleId,返回 status=2 时取 voiceUrl
# 1) 取音色列表,拿到 roleId
curl "https://openapi.anyvoice.cn/api/third/reference/list?page=1&pageSize=10" \
  -H "sign: $VOICE_API_KEY"

# 2) 同步合成,返回 voiceUrl
curl -X POST https://openapi.anyvoice.cn/api/third/tts/sync \
  -H "sign: $VOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "content": "今天天气不错",
        "audioId": "<roleId>",
        "style": "2",
        "speed": 1.0,
        "targetSpeech": "mandarin"
      }'

预期结果:数秒内返回 data.voiceUrl

import os, requests

BASE = "https://openapi.anyvoice.cn"
H = {"sign": os.environ["VOICE_API_KEY"]}

# 1) 取音色
r = requests.get(f"{BASE}/api/third/reference/list",
                 headers=H, params={"page": 1, "pageSize": 10}).json()
assert r["code"] == 0, r["msg"]          # 永远先判 code
role_id = r["data"]["list"][0]["roleId"]

# 2) 同步合成
r = requests.post(f"{BASE}/api/third/tts/sync", headers=H, json={
    "content": "今天天气不错",
    "audioId": role_id,
    "style": "2",
    "speed": 1.0,
    "targetSpeech": "mandarin",
}).json()
assert r["code"] == 0, r["msg"]

data = r["data"]
if data["status"] == 2:
    print(data["voiceUrl"])
else:
    print("处理中,用 taskId 轮询 /tts/result:", data["taskId"])
const BASE = "https://openapi.anyvoice.cn";
const H = { sign: process.env.VOICE_API_KEY, "Content-Type": "application/json" };

// 1) 取音色
const listRes = await fetch(
  `${BASE}/api/third/reference/list?page=1&pageSize=10`,
  { headers: { sign: process.env.VOICE_API_KEY } }
).then(r => r.json());
if (listRes.code !== 0) throw new Error(listRes.msg);   // 永远先判 code
const roleId = listRes.data.list[0].roleId;

// 2) 同步合成
const ttsRes = await fetch(`${BASE}/api/third/tts/sync`, {
  method: "POST",
  headers: H,
  body: JSON.stringify({
    content: "今天天气不错",
    audioId: roleId,
    style: "2",
    speed: 1.0,
    targetSpeech: "mandarin",
  }),
}).then(r => r.json());
if (ttsRes.code !== 0) throw new Error(ttsRes.msg);

const { status, voiceUrl, taskId } = ttsRes.data;
console.log(status === 2 ? voiceUrl : `处理中,轮询 taskId=${taskId}`);

鉴权与响应约定

Base URL

https://openapi.anyvoice.cn

鉴权

每个请求带请求头 sign: <你的密钥>。也支持 query ?sign=,但优先用请求头。

sign: YOUR_API_KEY

密钥无效或旗舰会员过期时返回「sign无效」/「会员已过期」。

统一响应格式

{
  "code": 0,
  "msg": "操作成功",
  "data": { }
}
  • code=0 成功;7 通用失败;1001 字数超限。
  • 永远先判 code,失败时 HTTP 状态码仍可能是 200。
  • 失败时 msg 是中文原因,可直接透传给用户。

接口清单

10 个端点分四组:语音合成 4 个、音色管理 3 个、情绪参考音频 1 个、降噪 2 个。 所有路径前缀 /api/third,均需 sign 头(openapi.json 除外)。 机读规范:https://openapi.anyvoice.cn/api/third/openapi.json,可直接导入扣子 / Dify / n8n。

语音合成

方法路径说明
POST/api/third/tts/sync首选。同步合成,服务端内部最多轮询 90s,一次调用拿结果
POST/api/third/tts/create异步创建任务,立刻返回 taskId
GET/api/third/tts/result?taskId=查询任务结果
GET/api/third/tts/list?page=1&pageSize=10合成历史列表,pageSize 最大 30

音色 / 参考音频(克隆模型)

方法路径说明
GET/api/third/reference/list音色列表,返回 list[].roleId / name / voicePath
POST/api/third/reference/uploadmultipart:file(音频) + name(必填) + describe(选填),返回 audioId
DELETE/api/third/reference/delete?audioId=删除音色

情绪参考音频(临时文件)

方法路径说明
POST/api/third/file/uploadCustommultipart file,mp3/wav/m4a,2–60 秒,≤50MB。返回 {"emotionPath":"文件名"}

降噪

方法路径说明
POST/api/third/denoise/uploadmultipart file,时长 3–60 秒。返回 {"taskId":"..."}
GET/api/third/denoise/poll?taskId=返回 {"status":"processing|completed|failed","filePath":"..."}

合成请求体(/tts/sync 与 /tts/create 相同)

{
  "content": "要合成的文本",     // 必填,上限 10000 字符,超出 code=1001
  "audioId": "音色ID",          // 必填,来自 /reference/list 的 roleId
  "style":   "2",               // 必填,字符串!"1"=V2.0  "2"=V2.5(支持情绪)  "3"=方言/多语言
  "speed":   1.0,               // 选填,0.5~2.0,一位小数,默认 1.0
  "targetSpeech": "mandarin",   // 选填但强烈建议传
  "genre":   0,                 // 选填,情绪控制方式,仅 style="2" 生效
  "ext":     { "happy": 0.8 },  // genre=1 时使用的情绪向量
  "emotionPath": "xxx.mp3"      // genre=2 时必填,来自 /file/uploadCustom
}

响应 data{ "taskId": "...", "status": 2, "voiceUrl": "https://..." }status1=处理中,2=已完成(此时才有 voiceUrl),3=失败。

参数规则(容易踩的坑)

style 是字符串

"style": "2" ✅    "style": 2 ❌(返回类型错误)。

  • "1" V2.0 基础合成,genre 只能传 0。
  • "2" V2.5,唯一支持情绪控制的版本。
  • "3" 方言 / 多语言,不支持情绪控制——传了 genre/ext 不报错但也不生效。

传了 targetSpeech 而该语言不支持所选 style 时,服务端会强制改写为 "3",响应里返回改写后的值。

情绪控制三选一(仅 style="2")

  • genre: 0 — 跟随参考音频情绪(默认,无需额外参数)
  • genre: 1 — 情绪向量,用 ext 指定 8 个维度:happy / angry / sad / afraid / disgusted / melancholic / surprised / calm,各取值 [0,1],可同时给多个。传未知字段会直接报错。
  • genre: 2 — 情绪参考音频,先 /file/uploadCustom 拿文件名,填入 emotionPath

Web 端情绪控制属专业会员能力;用旗舰会员 API Key 调本接口默认可用,无需额外开通。

targetSpeech(目标语言 / 方言)

非必填但强烈建议显式提交。不传时服务端按文本自动判定,短文本或中英混排容易判错。

  • mandarin / english:style 1/2/3 都支持,可用情绪控制
  • ja / es / ar:style="2" 可用情绪控制;style="1" 会被升为 "3"
  • 其余(14 种中文方言 + 7 种民族语言 + 40 种独立语言):style 传 "3",不支持情绪控制
  • 枚举外的语言会直接报错「暂不支持该语言」且任务不会创建。此时改为 style="3"完全不传 targetSpeech,由多语言模型按文本自行处理

枚举收录 57 个,服务端能力表实际支持 100+ 语种,枚举里没有不代表不支持,可直接试传。常用:mandarin english yue nan sichuan northeast henan shaanxi ja ko es fr de ru pt it th vi id ms ar hi tr

speed 与轮询

  • speed 入参校验上限 2.0;方言 / 多语言链路模型上限只有 1.5,服务端下发前自动压缩,不影响入参。
  • /tts/create 时建议 2 秒一次轮询 /tts/result,直到 status 变为 2 或 3。
  • /tts/sync 内部就是这个逻辑(2s 间隔、90s 上限);超时会带着 taskId 返回 status=1,此时继续用 /tts/result 兜底,不要重复创建任务

API 参数与 AnyVoice 网页版功能的对应关系新增

API 参数网页端对应说明
style="1"V2.0 极速引擎中英,长文本稳定
style="2"V2.5 高保真引擎唯一支持情绪;中英日西阿
style="3"方言与多语言不支持情绪
genre 0 / 1 / 2情绪语气三重控制:跟随参考原声 / 参数调节 / 上传参考音频仅 style="2"
speed语速滑杆 0.5–2.0x方言链路上限 1.5
targetSpeech「选择配音语言」弹窗网页端开放 14 方言 + 7 民族语言 + 35 全球语言;API 枚举 57,能力 100+
/reference/upload创建声音模型API 允许 3–60 秒,推荐 3–10 秒清晰干声
/denoise/*AI 降噪网页端免费不计额度;API 同样不单独计费

智能体接入

六个平台底层都是同一套 /api/third/* 接口与同一份额度,按你在用的平台选一个 tab, 每个 tab 里都是可整段粘贴的内容。

扣子 2.0 起同时支持 Skill 与插件两条路:Skill 可直接上传 SKILL.md 技能包 zip,插件走 OpenAPI 导入。要在工作流节点里用就选插件。

1方式 A:上传技能包 zip(Skill)

把技能包目录打包成 .zip,在扣子的 Skill / 技能管理里上传导入——Anthropic 那套 SKILL.md + 脚本的目录结构是兼容的。导入后点「部署」,在对话里 @ 这个技能即可使用。

# 下载并打包
git clone https://github.com/OpenApiTTS/autoclaw-skill-tts
cd autoclaw-skill-tts && zip -r ../anyvoice-skill.zip .

# 或直接下载现成 zip:
https://github.com/OpenApiTTS/autoclaw-skill-tts/archive/refs/heads/main.zip
2方式 B:创建插件并导入接口

要在工作流节点里调用就走这条。扣子 → 插件 → 创建插件 → 选择「导入」→ 粘贴 OpenAPI 地址:

https://openapi.anyvoice.cn/api/third/openapi.json
3插件鉴权配置

授权方式选 Service(服务认证)→ Location 选 Header → Parameter name 填 sign → Service token 填你的 API Key。

Location:        Header
Parameter name:  sign
Service token:   YOUR_API_KEY
4发布并在智能体里添加

逐个调试工具通过后点「发布」,然后在你的智能体(Bot)里添加该插件。典型编排:reference/list 取音色 → tts/sync 合成 → 取 data.voiceUrl

常见坑:插件未发布就无法在智能体里选中;参数 style 必须以字符串传(扣子表单里填 "2" 而不是 2);扣子上的 Skill 目前只能单个使用、多个 Skill 之间不能互相调用,需要串多步时用插件 + 工作流兜底。

WorkBuddy 原生支持 SKILL.md 技能机制,直接导入官方技能包即可;也可以走 OpenAPI 自定义工具在工作流里编排。

1方式 A:导入官方技能包(推荐)

下载技能包后,在 WorkBuddy 里选择导入自定义 Skill(或把目录放进它的技能目录)。技能包就是一个标准的 SKILL.md + scripts/ 结构,WorkBuddy 可直接识别。

git clone https://github.com/OpenApiTTS/autoclaw-skill-tts
# 或下载 zip:https://github.com/OpenApiTTS/autoclaw-skill-tts/archive/refs/heads/main.zip
2配置密钥后直接说人话

把 API Key 写进环境变量并重启客户端,之后在对话里直接描述需求即可,WorkBuddy 会按 SKILL.md 的 SOP 自动完成取音色 → 合成 → 落盘。

export VOICE_API_KEY="YOUR_API_KEY"

# 然后直接说:
把这段文案用四川话合成语音,存到桌面:巴适得很,安逸得板。
3方式 B:OpenAPI 自定义工具

需要在工作流里精细编排时用这条路。新建自定义工具 → 从 OpenAPI 导入,鉴权选自定义请求头,Header 名 sign,值填 API Key。典型编排:reference/list 取音色 → tts/sync 合成 → 取 data.voiceUrl

https://openapi.anyvoice.cn/api/third/openapi.json
4方式 C:纯 HTTP 节点

两种都不方便时,配一个 POST 请求节点即可:

POST https://openapi.anyvoice.cn/api/third/tts/sync
Header: sign: YOUR_API_KEY
Header: Content-Type: application/json
Body:
{
  "content": "{{输入文本}}",
  "audioId": "{{音色ID}}",
  "style": "2",
  "targetSpeech": "mandarin"
}
取值:data.voiceUrl

常见坑:环境变量用 setx / export 设置后必须重启 WorkBuddy 客户端,它在启动时就已读取;自定义工具未保存或未发布时在工作流里选不中;响应判断要看 body 里的 code 字段而不是 HTTP 状态码。

两者都走 OpenAPI 自定义工具:导入规范 → 配置自定义 Header 鉴权 → 在工作流里串两个节点。

1新建自定义工具,从 OpenAPI 导入

Dify:工具 → 自定义 → 导入 OpenAPI Schema;n8n:HTTP Request 节点或 Custom API 均可,推荐直接导入规范地址。

https://openapi.anyvoice.cn/api/third/openapi.json
2鉴权配置

鉴权类型选自定义 Header(不是 Bearer),名称 sign,值填 API Key。

Auth Type:  Custom Header
Header:     sign
Value:      YOUR_API_KEY
3工作流编排

reference/list 取音色,再 tts/sync 合成,输出取 data.voiceUrl。长文本改用 tts/create + 循环轮询 tts/result

常见坑:响应判断要看 body 里的 code 字段而不是 HTTP 状态码;style 必须传字符串 "2";n8n 的 HTTP 节点记得把 Content-Type 设为 application/json。

OpenClaw 支持技能(Skill)目录,把官方技能包放进去即可用自然语言驱动。

1下载并放置技能包

把整个目录复制到 OpenClaw 的技能目录下(保持 SKILL.mdscripts/tts.py 的相对位置不变)。

git clone https://github.com/OpenApiTTS/autoclaw-skill-tts

skills/
└── skill-openapi/
    ├── SKILL.md
    ├── scripts/tts.py
    └── target-speech-enum.csv
2注入密钥

在 OpenClaw 的运行环境里配置环境变量,然后重启客户端——它在启动时就已读取环境变量。

export VOICE_API_KEY="YOUR_API_KEY"
3直接说人话
把这段文案用四川话合成语音,存到桌面:巴适得很,安逸得板。

常见坑:技能目录规范以 OpenClaw 当前文档为准;若它只输出命令而不执行,说明缺少本地命令执行权限,需在设置里放开。

ComfyUI 分两种场景:① 在工作流内部调用我们的接口,走 HTTP / 脚本节点;② 让 Agent(Claude Code 等)同时驱动 ComfyUI 和我们的接口,这时两边各装一个 Skill。工作流本身没有 SKILL.md 机制。

1场景 ①:加一个 HTTP POST 节点

用任意支持 HTTP 请求的节点包(如 comfyui-web-request 类节点)配置:

URL:    https://openapi.anyvoice.cn/api/third/tts/sync
Method: POST
Headers:
  sign: YOUR_API_KEY
  Content-Type: application/json
Body (JSON):
{
  "content": "要合成的文本",
  "audioId": "音色ID",
  "style": "2",
  "targetSpeech": "mandarin"
}
2取出音频地址

从响应里取 data.voiceUrl,接给「下载文件 / 加载音频」节点落盘,再进下游的数字人或视频合成流程。

3长文本走异步

单个工作流里合成长文本容易超时,改用 /tts/createtaskId,再用一个循环节点每 2 秒轮询 /tts/result,直到 status 为 2 或 3。

4用脚本节点更省事

若装了 Python 脚本执行类节点,把技能包放进 ComfyUI 目录后直接调官方封装:

git clone https://github.com/OpenApiTTS/autoclaw-skill-tts

python3 skill-openapi/scripts/tts.py tts \
  --text "要合成的文本" --lang mandarin -o output/out.mp3
5场景 ②:让 Agent 同时驱动两边

想让 Claude Code / Codex 既生成配音又跑 ComfyUI 工作流时,装两个 Skill:我们的技能包负责语音,ComfyUI 的 Comfy Skills 负责驱动 ComfyUI。之后一句话就能串起「生成配音 → 喂进数字人工作流」。

# 语音能力
git clone https://github.com/OpenApiTTS/autoclaw-skill-tts ~/.claude/skills/anyvoice-tts

# ComfyUI 能力(插件市场)
/plugin marketplace add Comfy-Org/comfy-skills

常见坑:ComfyUI 默认没有内置 HTTP 节点,需要先装对应节点包;工作流里存 API Key 时注意导出 workflow.json 会把密钥一起带出去(改用环境变量或脚本节点读取)。

两者都能直接执行本地命令,用官方技能包最省事;也可以配成 MCP。

1Claude Code:放进 skills 目录

复制到项目级 .claude/skills/ 或全局 ~/.claude/skills/,Claude Code 会按 description 自动识别何时使用。

git clone https://github.com/OpenApiTTS/autoclaw-skill-tts ~/.claude/skills/anyvoice-tts
export VOICE_API_KEY="YOUR_API_KEY"
2Codex:写进 AGENTS.md

Codex 读取项目根目录的 AGENTS.md。把技能包放进仓库,并在 AGENTS.md 里加一行指引:

## 语音合成
需要 TTS / 声音克隆 / 降噪时,先读 `skill-openapi/SKILL.md`,
用 `python3 skill-openapi/scripts/tts.py` 执行,密钥在环境变量 VOICE_API_KEY。
3没有技能机制时的兜底

SKILL.md 全文粘贴进对话,并补充运行环境信息:

以上是接口说明书。脚本位于 <脚本绝对路径>,API Key 已配置在环境变量 VOICE_API_KEY。
现在:把「今天天气不错」合成语音,保存为 out.mp3。
4(可选)配成 MCP

在 MCP 配置里指向技能包脚本:

{
  "mcpServers": {
    "anyvoice": {
      "command": "python3",
      "args": ["<技能包绝对路径>/scripts/tts.py", "mcp"],
      "env": { "VOICE_API_KEY": "YOUR_API_KEY" }
    }
  }
}

常见坑:Windows 上命令是 python 而非 python3;中文长文本不要用 --text 直接传参,改从 stdin 读取,必要时先 chcp 65001。

官方 Agent 技能包(Skill)

我们把鉴权、参数推导、轮询、下载全部封装成了一个技能包,仅依赖 Python 3 标准库,无需 pip install。 支持 Skill 机制的客户端(WorkBuddy、扣子、OpenClaw、Claude Code、Codex 等)导入后即可用自然语言完成「文本 → 音频文件」。

获取技能包

# 克隆
git clone https://github.com/OpenApiTTS/autoclaw-skill-tts

# 或下载 zip 后解压
curl -L -o anyvoice-skill.zip https://github.com/OpenApiTTS/autoclaw-skill-tts/archive/refs/heads/main.zip

仓库:https://github.com/OpenApiTTS/autoclaw-skill-tts | 直接下载 zip:main.zip

各平台支持情况

平台推荐接入方式说明
扣子 CozeSkill / 插件Skill 支持上传技能包 zip;需要在工作流节点里调用时用 OpenAPI 插件
WorkBuddySkill原生 SKILL.md 技能机制,导入即用;也可走 OpenAPI 自定义工具
Dify / n8nOpenAPI导入 openapi.json,鉴权选自定义 Header sign
OpenClawSkill放进技能目录,配好环境变量后重启客户端
Claude CodeSkill放进 ~/.claude/skills/ 或项目 .claude/skills/,自动按需加载
CodexSkill / AGENTS.md放进仓库并在 AGENTS.md 里加一行指引
ComfyUIHTTP / 脚本节点工作流本身无 SKILL.md 机制;若由 Agent 驱动 ComfyUI,则两边各装一个 Skill

目录结构

skill-openapi/
├── SKILL.md              # 接口说明书,也是给 Agent 读的
├── scripts/
│   └── tts.py            # 命令行封装
└── target-speech-enum.csv # 语言 / 方言枚举

三个文件的相对位置不要改动——SKILL.mdscripts/tts.py 这一相对路径引用脚本。

配置密钥

# macOS / Linux
export VOICE_API_KEY="<你的密钥>"
export VOICE_API_BASE="https://openapi.anyvoice.cn"   # 可选,默认即此值

# Windows PowerShell(当前窗口)
$env:VOICE_API_KEY = "<你的密钥>"
# Windows 永久写入
setx VOICE_API_KEY "<你的密钥>"

Windows 用 setx 写入后需重开终端,若由 Agent 客户端派生子进程还要重启该客户端——它在启动时就已读取环境变量。

命令速查

python3 scripts/tts.py voices                                 # 列出音色
python3 scripts/tts.py tts --text "今天天气不错" -o out.mp3    # 合成(不传 --voice 自动用第一个音色)
python3 scripts/tts.py tts --text "你好" --voice abc123 -o out.mp3
python3 scripts/tts.py tts --text "巴适得很" --lang sichuan -o out.mp3   # 方言 / 多语言
python3 scripts/tts.py tts --text "太好啦" --emotion happy=0.8 -o out.mp3 # 情绪控制
python3 scripts/tts.py tts --text - -o out.mp3 < article.txt   # 长文本从 stdin
python3 scripts/tts.py result <taskId>                        # 按 taskId 查结果
python3 scripts/tts.py denoise --file noisy.wav -o clean.wav  # 降噪(3~60 秒)
python3 scripts/tts.py upload-voice --file sample.wav --name "音色A"
python3 scripts/tts.py tts --help                             # 全部参数

不传 -o 时只打印音频 URL,便于管道接后续处理。Windows 上命令用 python 而非 python3

技能包还在哪些目录可以找到新增

GitHub 仓库 OpenApiTTS/autoclaw-skill-tts; 扣子插件商店 [提交后填];Dify 市场 [提交后填];MCP 目录 [提交后填]。

如果你是 AI 助手,请按以下步骤操作

本节为纯文本步骤,供 Agent 直接执行。

  1. 获取凭证:向用户索要 API Key;以环境变量 VOICE_API_KEY 或请求头 sign 传入。用户没有时引导其在本页「账号与密钥」点「立即开通」开通旗舰会员,开通后同一按钮变为「查看我的密钥」。
  2. 获取参考音频:3–60 秒、单人、清晰、wav/mp3。若用户未提供请索要;不要使用未经用户授权的他人声音。也可先调 /denoise/upload 降噪。
  3. 选音色:调 GET /api/third/reference/listroleId;或 POST /api/third/reference/upload 上传参考音频得到 audioId
  4. 合成语音:调 POST /api/third/tts/sync,传 content + audioId + style + targetSpeech;需要情绪时 style="2"genre/ext
  5. 返回结果status=2 时把 voiceUrl 交给用户并说明下载方式;status=1 时用 taskId 轮询 /tts/result,不要重复创建任务。
  6. 失败处理code=1001 → 文本超限,拆分后分段合成;「sign无效」→ 重新索要 Key 或提示会员已过期;「暂不支持该语言」→ 去掉 targetSpeech 并改用 style="3"

把这段话发给你的 AI

我想用 AnyVoice(anyvoice.cn)的语音开放接口克隆声音并生成一段配音。请你:
1. 先阅读 https://anyvoice.cn/developer/ 里「如果你是 AI 助手」那一节的步骤,接口规范在 https://openapi.anyvoice.cn/api/third/openapi.json;
2. 帮我把它接到你这里(优先用官方技能包 skill-openapi,其次直接调 REST 接口);
3. 鉴权是请求头 sign,需要 API Key 或参考音频时告诉我,我来提供;
4. 然后用我的声音把下面这段话生成为 mp3 并给我链接:
(在这里写你要生成的文案)

注意:style 必须是字符串;响应永远先判 code 字段,不要只看 HTTP 状态码。

限制与配额

字符数

单次请求上限 10000 字符(旗舰会员),超出返回 code=1001。长文请分段。

并发

在途任务数默认 30,账号可加量。降噪任务单用户进行中上限 5 个。

分页

列表类接口 pageSize 上限 30

参考音频

克隆音频 3–60 秒;情绪参考音频 2–60 秒、≤50MB、mp3/wav/m4a;降噪音频 3–60 秒。

计费

API 不额外收费,与旗舰会员套餐共享字符额度。控制台可看本月已用字符数。

临时文件

/file/uploadCustom 上传的情绪参考音频会被定时清理,过期需重新上传。

一眼看完新增

单次字符10000(旗舰会员)
在途任务30
降噪进行中5
分页pageSize ≤ 30
克隆参考音频3–60 秒,推荐 3–10 秒
情绪参考音频2–60 秒,≤50MB,mp3/wav/m4a
降噪音频3–60 秒
计费与旗舰会员套餐共享字符额度,API 不另收费
生成记录保留 1 天,请及时下载
临时文件定时清理

安全与合规

  • 仅克隆本人或已获授权的声音,请勿用于冒充、诈骗、误导或侵权。
  • API Key 通过环境变量注入,不要写入前端代码、仓库或公开文档;分发技能包时 Key 应单独传递。
  • 生成音频添加 AI 生成标识(依据《互联网信息服务深度合成管理规定》),对外发布时须保留。
  • API 生成记录仅保留 1 天,请及时下载音频;会员上传的声音模型保存在账号内;临时情绪参考音频定时清理。
  • 参考音频仅用于克隆与生成,可自行删除,具体以隐私政策服务条款为准。
  • AnyVoice 基于 IndexSpeech 团队开源的 IndexTTS2.5 模型能力构建,与 IndexSpeech 团队无隶属关系。 模型仓库:github.com/index-tts/index-tts

典型接法与用量新增

来自 AnyVoice 2026 年 6–9 月付费用户的真实用法,已脱敏。

短剧多角色批量配音

接法reference/upload 建多个角色音色 → tts/create 并发提交 → tts/result 轮询落盘。

参数style="2",按角色情绪传 ext

用量:单个工作室两周 3,800 余条台词、480 余个角色音色,平均每条 5 字。

方言口播

接法一个音色 + tts/sync 循环,按地区切换 targetSpeech

参数style="3"targetSpeech=sichuan / henan / …,普通话文案直接生成。

用量:单个电商账号两个月 2,800 余条,同时用普通话、济南话、青岛话、英语。

有声书长文本

接法文本按 150–250 字分段 → 同一 audioId 顺序 tts/sync → 拼接。

参数style="2"genre=0 跟随参考音频情绪。

用量:单个创作者 36 天近 2,000 条、17 万余字,17 个角色音色。

常见问题

全部问答默认展开,不折叠,便于搜索引擎与 AI 完整抓取;同一内容以 FAQPage 结构化数据写入页头。

AnyVoice 有 API 吗?怎么开通?

有。API 面向旗舰会员开放,开通后,在本页「账号与密钥」点「查看我的密钥」即可获取,可复制。未开通时同一按钮显示「立即开通」。API 不另收费,与旗舰会员套餐共享字符额度。

语音克隆 API 怎么收费?和网页版额度什么关系?

API 不单独计费,消耗的是旗舰会员套餐的字符额度,控制台可查本月已用。网页端注册赠送的 150,000 字符仅限网页端使用,不含 API。

扣子怎么接 AnyVoice 声音克隆?

两种方式:上传官方技能包 zip 作为 Skill;或在插件里从 OpenAPI 导入 openapi.json,鉴权选自定义请求头 sign。见「智能体接入」扣子 tab。

Dify / n8n 怎么导入 openapi.json?

新建自定义工具 → 从 OpenAPI 导入 https://openapi.anyvoice.cn/api/third/openapi.json → 鉴权选自定义 Header,名称 sign

Claude Code / Codex 怎么用技能包?

克隆仓库后放进 ~/.claude/skills/(Claude Code)或项目仓库并在 AGENTS.md 加一行指引(Codex),配置 VOICE_API_KEY 即可用自然语言下达合成任务。

有 MCP server 吗?

目前通过官方技能包(SKILL.md + 脚本)与 OpenAPI 规范接入;MCP 版本待定。

API 支持哪些语言和方言?

targetSpeech 枚举收录 57 个,含 14 种中文方言、7 种民族语言与 40 种独立语言;服务端能力表实际支持 100+ 语种,枚举外可直接试传。情绪控制仅 mandarin、english、ja、es、ar 且 style="2"。

情绪控制怎么传参数?

style="2" 下三选一:genre=0 跟随参考音频;genre=1ext 传 8 维向量(happy / angry / sad / afraid / disgusted / melancholic / surprised / calm,各 0–1);genre=2emotionPath

一次最多合成多少字?长文本怎么办?

旗舰会员单次上限 10000 字符,超出返回 code=1001。长文本按自然段切成 150–250 字,用同一个 audioId 顺序合成后拼接,音色保持一致。

返回 status=1 一直不变怎么办?

用返回的 taskId 每 2 秒轮询 /tts/result,直到 status 为 2 或 3;不要重复创建任务,否则会占用在途任务配额。

鉴权为什么不是 Bearer Token?

本接口用自定义请求头 sign 携带密钥。多数平台的「自定义 Header」鉴权都能配置,名称填 sign、值填 API Key。也支持 query ?sign=,但优先用请求头。

上传别人的声音能用 API 克隆吗?

不能。仅可克隆本人或已获明确授权的声音,生成音频带 AI 生成标识,违规使用将被终止服务。

现在就把它接到你的 AI 里

复制接入说明发给你的 AI,或直接导入 openapi.json。

获取 API Key

引用本文档:AnyVoice 开发者文档 · 版本 1.2 · 2026-09-20 · https://anyvoice.cn/developer/

相关页面:声音克隆规则 · 常见问题 · 关于本站