前言说明
CosyVoice 声音复刻服务依托生成式语音大模型,仅需 10–20 秒音频样本,即可生成高度相似、自然流畅的定制音色,无需传统训练流程。声音设计支持通过文本描述生成专属音色,可自定义多语言及多维度音色特征,适用于广告配音、角色塑造、有声内容创作等场景。声音复刻 / 设计与语音合成为前后衔接的两个环节,本文档重点说明声音复刻 / 设计相关参数及语音合成接口详情。
接口概览
| 接口 | 路由 | 说明 |
|---|---|---|
| 声音克隆/设计 | 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 元
计费流程
- 计算字符数
- 根据模型计算基础费用
- 应用会员折扣
- 使用免费额度(如有)
- 扣除余额(如需要)
- 调用 API
- 失败自动退款
错误码说明
| 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: 是的,免费额度每月初自动重置。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)