前言说明

CosyVoice 声音复刻服务依托生成式语音大模型,仅需 10–20 秒音频样本,即可生成高度相似、自然流畅的定制音色,无需传统训练流程。声音设计支持通过文本描述生成专属音色,可自定义多语言及多维度音色特征,适用于广告配音、角色塑造、有声内容创作等场景。声音复刻 / 设计与语音合成为前后衔接的两个环节,本文档重点说明声音复刻 / 设计相关参数及语音合成接口详情。

CosyVoice 开发者API对接文档 1

接口概览

接口 路由 说明
声音克隆/设计 POST https://www.yuntts.com/api/v1/cosyvoice-create-voice 创建自定义音色(支持声音克隆和声音设计两种模式)
语音合成 POST https://www.yuntts.com/api/v1/cosyvoice-synthesize 使用指定模型和音色进行语音合成
删除音色 POST https://www.yuntts.com/api/v1/cosyvoice-delete-voice 删除已创建的自定义音色

模型说明

支持的模型列表

模型名称 说明 支持声音克隆 支持声音设计 语音合成
cosyvoice-v3.5-plus v3.5 增强版(推荐)
cosyvoice-v3.5-flash v3.5 极速版
cosyvoice-v3-plus v3 增强版
cosyvoice-v3-flash v3 极速版
cosyvoice-v2 v2 经典版
cosyvoice-v1 v1 基础版

注意事项

  • 声音设计 支持 v3 和 v3.5 系列模型(v3-plus、v3-flash、v3.5-plus、v3.5-flash)
  • 本文档不涉及实时语音合成功能
  • 创建的音色只能在指定的目标模型中使用

接口认证

所有接口都需要在请求头中携带 API Key:

Authorization: Bearer YOUR_API_KEY

API Key 可在网站主题设置中获取。


声音克隆接口

通过上传音频文件或提供音频 URL 来创建自定义音色。

接口地址

POST https://www.yuntts.com/api/v1/cosyvoice-create-voice

请求格式

使用 multipart/form-data 格式

请求参数

参数名 类型 必填 说明
name string 音色名称,最多 20 字符
target_model string 目标模型,见模型说明
file file 音频文件(与 url 二选一)
url string 音频 URL(与 file 二选一)
description string 音色描述
language_hints string 语言(根据模型传递)
prefix string 音色前缀,默认 yuntts
enable_preprocess boolean 是否启用音频预处理
max_prompt_audio_length int 最大音频长度(秒),默认 30

language_hints 参数说明

该参数用于辅助模型识别样本音频(原始参考音频)的语种,从而更准确地提取音色特征,提升复刻效果。若设置的语言提示与实际音频语言不符(例如为中文音频设置 en),系统将忽略此提示,并依据音频内容自动检测语言。

取值范围(因模型而异):

模型 取值 说明
cosyvoice-v3-plus zh 中文(默认值)
en 英文
fr 法语
de 德语
ja 日语
ko 韩语
ru 俄语
cosyvoice-v3.5-plus
cosyvoice-v3.5-flash
cosyvoice-v3-flash
zh 中文(默认值)
en 英文
fr 法语
de 德语
ja 日语
ko 韩语
ru 俄语
pt 葡萄牙语
th 泰语
id 印尼语
vi 越南语
对于中文方言(例如东北话、粤语等),建议仍将 language_hints 设置为 zh,方言风格应在后续语音合成调用中通过文本内容或 instruct 等参数进行控制,可查看《CosyVoice语音合成指令控制教程说明》。

音频文件要求

  • 支持格式:MP3、WAV、M4A
  • 文件大小:最大 10MB
  • 音频时长:建议 10-30 秒
  • 音频质量:建议 16kHz 以上采样率

响应示例

{
  "code": 200,
  "message": "创建成功",
  "data": {
    "voice_id": "yuntts_xxxxxx",
    "model": "cosyvoice-v3.5-plus",
    "name": "我的音色",
    "created_at": "2024-01-01 12:00:00"
  }
}

错误响应

{
  "code": 400,
  "message": "错误信息"
}

声音设计接口

通过文字描述来设计自定义音色。

接口地址

POST https://www.yuntts.com/api/v1/cosyvoice-create-voice

请求格式

使用 application/json 格式

请求参数

参数名 类型 必填 说明
name string 音色名称,最多 20 字符
target_model string 目标模型,支持 v3 和 v3.5 系列,具体见模型说明
voice_prompt string 声音描述,如:温柔的女声、专业的主持人
preview_text string 预览文本,至少 15 个字符
description string 音色描述
language_hints string 语言提示
prefix string 音色前缀,默认 yuntts
sample_rate int 采样率:16000/22050/24000/44100

声音描述示例

  • "温柔的女声,像主持人一样专业"
  • "低沉有磁性的男声,适合讲故事"
  • "活泼开朗的童声"
  • "成熟稳重的中年男声"

响应示例

{
  "code": 200,
  "message": "创建成功",
  "data": {
    "voice_id": "yuntts_xxxxxx",
    "model": "cosyvoice-v3.5-plus",
    "name": "我的音色",
    "created_at": "2024-01-01 12:00:00"
  }
}

语音合成接口

使用指定的模型和音色进行语音合成。

接口地址

POST https://www.yuntts.com/api/v1/cosyvoice-synthesize

请求格式

使用 application/json 格式

请求参数

参数名 类型 必填 默认值 说明
model string - 合成模型,见模型说明
voice string - 音色 ID(预设音色或自定义音色)
text string - 要合成的文本内容
sample_rate int 22050 采样率:8000/16000/22050/24000/44100
response_format string mp3 输出格式:mp3/wav/pcm/ogg
volume int 50 音量,范围 0-100
speech_rate float 1.0 语速,范围 0.5-2.0
pitch_rate float 1.0 音调,范围 0.5-2.0
bit_rate int 32 比特率:16/24/32/64/128
instruction string - 指令控制(仅 v3.5 模型支持,最多 100 字符)
language_hints string - 目标语言提示
enable_ssml boolean false 是否启用 SSML

响应示例

{
  "code": 200,
  "message": "语音合成成功",
  "data": {
    "audio": {
      "url": "https://example.com/audio.mp3",
      "sample_rate": 22050,
      "format": "mp3"
    }
  },
  "char_count": 100,
  "cost": 0.01
}

响应字段说明

字段 类型 说明
data.audio.url string 音频文件 URL
char_count int 实际消耗的字符数
cost float 实际扣费金额(元)

删除音色接口

删除已创建的自定义音色。

接口地址

POST https://www.yuntts.com/api/v1/cosyvoice-delete-voice

请求格式

使用 application/json 格式

请求参数

参数名 类型 必填 说明
modelId string 音色 ID(也支持 voice 参数名)

权限说明

  • 只有音色创建者和管理员可以删除
  • 删除前会验证权限

响应示例

{
  "code": 200,
  "message": "删除成功"
}

计费说明

字符计费规则

  • 汉字按 2 个字符计算
  • 其他字符(英文、数字、符号等)按 1 个字符计算

模型价格(元/万字符)

模型 价格
cosyvoice-v3.5-plus 2.5
cosyvoice-v3.5-flash 1.8
cosyvoice-v3-plus 2
cosyvoice-v3-flash 3
cosyvoice-v2 3
cosyvoice-v1 2

会员折扣

  • 永久会员: 8 折
  • VIP会员: 9 折

免费额度

  • 仅会员用户可享受
  • 每月免费额度可在后台设置
  • 免费额度用完后正常计费

最低扣费

  • 每次合成最低扣费 0.01 元

计费流程

  1. 计算字符数
  2. 根据模型计算基础费用
  3. 应用会员折扣
  4. 使用免费额度(如有)
  5. 扣除余额(如需要)
  6. 调用 API
  7. 失败自动退款

错误码说明

HTTP 状态码 错误码 说明
400 model_required 模型参数不能为空
400 voice_required 音色参数不能为空
400 text_required 文本参数不能为空
400 insufficient_balance 余额不足
400 instruction_too_long 指令长度超过限制
401 - 未授权或 API Key 无效
403 permission_denied 没有权限删除该音色
404 voice_not_found 音色不存在
500 api_request_failed API 请求失败
500 balance_deduction_failed 余额扣除失败
500 order_creation_failed 订单创建失败
500 synthesis_failed 语音合成失败

代码示例

JavaScript - 声音克隆

const formData = new FormData();
formData.append('name', '我的音色');
formData.append('target_model', 'cosyvoice-v3.5-plus');
formData.append('file', audioFile);

fetch('https://www.yuntts.com/api/v1/cosyvoice-create-voice', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
})
.then(res => res.json())
.then(data => console.log(data));

JavaScript - 声音设计

const params = {
  name: '我的音色',
  target_model: 'cosyvoice-v3.5-plus',
  voice_prompt: '温柔的女声',
  preview_text: '欢迎使用我们的声音设计服务'
};

fetch('https://www.yuntts.com/api/v1/cosyvoice-create-voice', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify(params)
})
.then(res => res.json())
.then(data => console.log(data));

JavaScript - 语音合成

const params = {
  model: 'cosyvoice-v3.5-plus',
  voice: 'longxiaochun',
  text: 'Hello World',
  speech_rate: 1.0
};

fetch('https://www.yuntts.com/api/v1/cosyvoice-synthesize', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify(params)
})
.then(res => res.json())
.then(data => {
  if (data.code === 200) {
    const audio = new Audio(data.data.audio.url);
    audio.play();
  }
});

Python - 语音合成

import requests

url = "https://www.yuntts.com/api/v1/cosyvoice-synthesize"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "model": "cosyvoice-v3.5-plus",
    "voice": "longxiaochun",
    "text": "Hello World"
}

response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result)

常见问题

Q: 声音克隆和声音设计有什么区别?

A: 声音克隆需要上传音频文件,声音设计只需要文字描述。声音设计仅支持 v3.5 系列模型。

Q: 创建的音色可以在其他模型中使用吗?

A: 不可以,创建音色时指定的目标模型决定了该音色只能在哪个模型中使用。

Q: 合成失败会扣费吗?

A: 不会,合成失败会自动退款。

Q: 免费额度是每月重置吗?

A: 是的,免费额度每月初自动重置。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。