文章目录
1. 前情提要
- 系统版本:Windows下WSL安装的Ubuntu22.4
- 版本:CosyVoice2-2024/12
- python环境:miniconda3 > python3.10
注:
- CosyVoice2的本地安装部署文档参考
- 所有的接口请求前缀以实际部署请求接口为准,本示例参考官方文档端口用50000
2. API调用详解
注意注意注意: 每个接口都是分成两次请求,第一次POST请求,得到$event_id后带入同地址的第二次GET请求可得音频下载地址
1. 音频合成接口
请求地址
- 第一次:/call/generate_audio/
- 第二次:/call/generate_audio/$event_id
请求方式
- 第一次:POST
- 第二次:GET
参数说明
POST请求参数说明:
不同的推理模式有不同推理操作步骤以及对应的推理模型。根据你所选的推理模式查看对应操作步骤,再去传对应的参数。
参数 | 类型 | 必填 | 示例 | 备注 |
---|---|---|---|---|
Headers | 头部参数 | |||
content-type | String | 是 | application/json | 内容格式 |
PayLoad | ||||
data | Array | 是 | 数组存放10个参数 | |
— [0] | String | 是 | 我是生成式语音大模型 | 待转写文本内容 |
— [1] | String | 是 | 预训练音色 | 推理模式: 预训练音色 3s极速复刻 跨语种复刻 自然语言控制 |
— [2] | String | 是 | 中文女 | 预训练音色 |
— [3] | String | 根据对应操作步骤确定是否必填 | prompt文本 | |
— [4] | String | 根据对应操作步骤确定是否必填 | {“path”:“http://xxx/test.wav”} | prompt 上传音频,path指向在线访问地址即可 |
— [5] | String | 根据对应操作步骤确定是否必填 | 格式同[4] | prompt录音音频 |
— [6] | String | 根据对应操作步骤确定是否必填 | instruct文本 | |
— [7] | number | 是 | 0 | 推理种子 |
— [8] | String | 是 | false | 是否流式推送 |
— [9] | number | 是 | 1 | 速度调节(仅支持非流式推理模式下的设置) |
参数示例
POST请求参数示例
{
"data": [
"我是通义实验室语音团队全新推出的生成式语音大模型,提供舒适自然的语音合成能力。",
"预训练音色",
"中文女",
"",
null,
null,
"",
0,
"false",
1
]
}
结果说明
POST结果:
参数 | 类型 | 示例 | 说明 |
---|---|---|---|
event_id | String | 828f4c88b5a743c08980a1e38fa63cd5 | 事件ID |
GET结果:
参数 | 类型 | 示例 | 说明 |
---|---|---|---|
data | Array | 数组 | |
— path | String | ${event_id)/140706251637808/21 | 文件请求相对路径 |
— url | String | http://ip:port/stream/${path} | 文件请求全路径 |
— size | String | ||
— orig_name | String | audio.wav | 合成音频文件名称 |
— mime_type | String | 协议类型 | |
— is_stream | Boolean | true | 是否流式推送 |
— meta | Object | {“_type”: “gradio.FileData”} | 元数据 |
结果示例
event: generating
data: [{"path": "828f4c88b5a743c08980a1e38fa63cd5/140706251637808/21", "url": "http://ip:port/call/gen/stream/828f4c88b5a743c08980a1e38fa63cd5/140706251637808/21", "size": null, "orig_name": "audio.wav", "mime_type": null, "is_stream": true, "meta": {"_type": "gradio.FileData"}}]
event: complete
data: [{"path": "828f4c88b5a743c08980a1e38fa63cd5/140706251637808/21", "url": "http://127.0.0.1:50000/call/gen/stream/828f4c88b5a743c08980a1e38fa63cd5/140706251637808/21", "size": null, "orig_name": "audio.wav", "mime_type": null, "is_stream": true, "meta": {"_type": "gradio.FileData"}}]
**注意一下:**结果示例中返回的url实际上是错误的,真正的url格式请参考【结果说明】中的url说明
2. 获取操作步骤
请求地址
- 第一次:/call/change_instruction/
- 第二次:/call/change_instruction/$event_id
请求方式
- 第一次:POST
- 第二次:GET
参数说明
POST请求参数说明:
参数 | 类型 | 必填 | 示例 | 备注 |
---|---|---|---|---|
Headers | 头部参数 | |||
content-type | String | 是 | application/json | 内容格式 |
PayLoad | ||||
data | Array | 是 | [] | 传推理模式 |
——[0] | String | 是 | “预训练音色” |
参数示例
POST请求参数示例
{
"data": [
"预训练音色"
]
}
结果说明
POST结果:
参数 | 类型 | 示例 | 说明 |
---|---|---|---|
event_id | String | 828f4c88b5a743c08980a1e38fa63cd5 | 事件ID |
GET结果:
参数 | 类型 | 示例 | 说明 |
---|---|---|---|
data | Array | 数组,字符串,Unicode编码 |
结果示例
event: complete
data: ["1. \u9009\u62e9\u9884\u8bad\u7ec3\u97f3\u8272\n2. \u70b9\u51fb\u751f\u6210\u97f3\u9891\u6309\u94ae"]
3. 获取推理种子
请求地址
- 第一次:/call/generate_seed/
- 第二次:/call/generate_seed/$event_id
请求方式
- 第一次:POST
- 第二次:GET
参数说明
POST请求参数说明:
参数 | 类型 | 必填 | 示例 | 备注 |
---|---|---|---|---|
Headers | 头部参数 | |||
content-type | String | 是 | application/json | 内容格式 |
PayLoad | ||||
data | Array | 是 | [] | 传空数组即可 |
参数示例
POST请求参数示例
{
"data": []
}
结果说明
POST结果:
参数 | 类型 | 示例 | 说明 |
---|---|---|---|
event_id | String | 828f4c88b5a743c08980a1e38fa63cd5 | 事件ID |
GET结果:
参数 | 类型 | 示例 | 说明 |
---|---|---|---|
data | Array | 数组 | |
— value | number | 54349340 | 推理种子 |
— type | String | “update” | 含义暂未可知 |
结果示例
event: complete
data: [{"value": 54349340, "__type__": "update"}]