与我司商务合作后,我司会给客户硅语账号进行授权并且给出开放平台的AccessKey和SecretKey,客户可以通过AccessKey和SecretKey进行接入,请妥善保存。
调用流程如下图
硅语平台生产地址:https://meta.guiji.cn (opens new window)
开放平台支持查询和回调两种方式来监听音频合成的最终结果。
(1)、查询
音频合成请求提交成功后,客户端可通过“3.4 音频合成结果列表查询”或“3.5 音频合成结果详情查询”进行对音频合成状态的更新。
(2)、回调
音频合成接口提供了callbackUrl回调地址的属性,客户端只需要传公网可访问的回调地址即可,开放平台音频合成成功或失败后都会通过该地址通知客户端,回调参数请参考“3.3 音频合成接口”中异步回调报文示例设计。
硅语平台获取签名的规则为:通过AccessKey、时间戳、加密生成得到的签名【MD5(AccessKey+时间戳+SecretKey)】,MD5结果取32位小写值,然后通过该签名请求硅语平台获取token,后续接口都需要加上该token进行请求,具体接口信息见第三部分API详细信息。
硅语平台得到token和其他请求数据集合后,会先进行安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求,平台返回的参数格式如下:
| 字段 | 类型 | 是否必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| message | string | N | 成功/错误的描述信息 |
| data | object | N | 返回的具体内容 |
| 错误码 | 描述 |
|---|---|
| 0 | 正常 |
| 40001 | 内部异常 |
| 40002 | token无效 |
| 40003 | token超时 |
| 40010 | 余额不足 |
| 40011 | 不合法的音频地址 |
| 40012 | 不合法的音频时长 |
| 40013 | 不合法的文件大小 |
| 40014 | 缺少必要文件 |
| 40015 | 缺少必要参数 |
| 40016 | 文件上传失败 |
| 40017 | 文件下载失败 |
| 40018 | 文件不存在 |
| 40019 | 超出并发 |
| 40020 | 不支持的背景图片格式 |
| 40021 | 提交训练视频失败 |
| 40022 | 不合法的码率值 |
| 40023 | 不合法的分辨率值 |
| 40024 | 不合法的fps值 |
| 40025 | 模特不存在 |
| 40026 | 模特已过期 |
| 40027 | 不合法的视频格式 |
| 40028 | 文件上传失败 |
| 40030 | 背景地址不能访问 |
| 40031 | 音频地址不能访问 |
| 40032 | 发言人不存在 |
| 40033 | 文件地址不能访问 |
| 40040 | 声音合成失败 |
| 40041 | 视频解析失败 |
| 40042 | 不合法的MP3 |
| 40045 | 发言人已过期 |
| 40046 | 不合法的URL |
| 40056 | 内容检测不通过 |
| 50010 | 扣款失败 |
/openapi/oauth/token
GET
| 字段 | 类型 | 是否必须 | 备注 |
|---|---|---|---|
| appId | string | Y | Access key |
| timestamp | string | Y | 当前时间戳,精确到毫秒 |
| sign | string | Y | 生成的签名 |
| grant_type | string | Y | 认证类型(固定值‘sign’) |
示例:
https://meta.guiji.cn/openapi/oauth/token?grant_type=sign×tamp=1648429269823&sign=3fe58596ec5edc297876e00f4e4b1a49&appId=TPbMPQeD4U2dJgRY62PCRnSz
| 字段 | 类型 | 是否必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| success | boolean | Y | 成功/错误 |
| data | json | N | 返回的JSONObject |
| access_token | string | N | 返回的token值 |
| expires_in | integer | N | Token过期时间,单位“秒” |
示例:
{
"code": "0",
"success": true,
"data": {
"access_token": "99568c59-eb7e-4feb-b546-078f2fe9d5c6",
"expires_in": 7199
}
}
/openapi/speaker/v2/list?access_token=55d1bc37-f960-4a9d-8c7d-5dc8c991c245
GET
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| 无 |
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| message | string | Y | 成功/错误的描述信息 |
| data | jsonArray | N | 返回的jsonArray |
| id | string | N | 发言人ID |
| ttsName | string | N | 发言人名 |
| ttsIntroduction | string | N | 介绍 |
| ttsScenes | string | N | 使用场景 |
| ttsSpeaker | string | N | 发言人标识 |
| ttsFeatures | string | N | 特色 |
| ttsAudition | string | N | 示例音频地址 |
| ttsCover | string | N | 封面地址 |
| languages | jsonArray | N | 支持的语言类型列表 cn-中文 en-英文 |
| sex | integer | N | 性别 1: 男,2:女 |
| phonemeFlag | integer | N | 多音字标识,0:不支持 1:支持 |
| ttsExtendJson | string | N | 扩展属性 |
示例:
{
"code": "0",
"message": "请求成功",
"success": true,
"data": [{
"id": 158,
"ttsName": "梦田甜",
"ttsIntroduction": "梦田甜",
"ttsScenes": "新闻播报|专题宣传",
"ttsSpeaker": "yujie_meet",
"ttsFeatures": "自然流畅、成熟知性",
"ttsAudition": "http://172.16.17.21:8000/nfs/tts-market/cmww/tts_case/yujie_meet_0.wav",
"ttsCover": "http://172.16.17.21:8000/nfs/tts-market/cmww/moqiusha_mengtiantian.png",
"languages": [
"cn",
"en"
],
"sex": 2
}
]
}
/openapi/speaker/v2/tts?access_token=ae4dad61-0dc5-47ad-be20-c51245db2769
POST(Content-Type: application/json)
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| speakerId | string | Y | 发言人ID不能为空 |
| volume | integer | N | 音量,取值区间:[0-1] |
| speechRate | integer | N | 语速,取值区间:[0-1] |
| content | string | Y | 文本内容不能为空,文本支持以下标签: 插入停顿(单位:秒):<delay value="0.5"/> 自定义读音:<grammar type="custom" value="十万">100000</grammar> 多音字标注:<grammar type="pinyin" value="hang2">行</grammar> |
| srtFlag | string | N | 否需要字幕文件 0-不需要 1-需要 |
| async | boolean | N | 是否异步处理,true-异步返回(推荐使用异步接口,同步调用后期可能会废弃) |
| callbackUrl | string | N | 异步处理回调地址,若无回调地址,也可通过tts查询接口查询 |
| sampleRate | string | N | 采样率:来自3.5接口的ttsExtendJson |
| morse | string | N | 是否给音频产物末尾加摩斯码: 0-不加 1-加(默认不加) |
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| message | string | Y | 成功/错误的描述信息 |
| data | json | Y | 返回的jsonobject |
| id | integer | Y | 唯一标识 |
| ttsUrl | integer | N | 音频地址 |
| srtUrl | integer | N | srt文件地址('srtFlag'=1时返回) |
| duration | list | N | 音频时长(单位:毫秒) |
| status | integer | N | 状态 0-准备中 1-合成中 2-合成成功 3-合成失败 |
返回报文示例
{
"code": "0",
"data": {
"id": 1,
"duration": 0,
"srtUrl": "",
"ttsUrl": ""
},
"message": "",
"success": true
}
异步回调报文示例
{
"taskType": "tts-synthesis",
"data": {
"duration": 0, //音频时长
"srtUrl": "", //字幕文件地址
"ttsUrl": "", //音频地址
"id": 1, //唯一标识
"status": 2 //状态 0-准备中 1-合成中 2-合成成功 3-合成失败
}
}
/openapi/speaker/v2/tts/pageList?access_token=ae4dad61-0dc5-47ad-be20-c51245db2769
POST(Content-Type: application/json)
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| page | integer | Y | 请求页数 |
| size | integer | Y | 每页 |
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| message | string | Y | 成功/错误的描述信息 |
| data | json | N | 返回的jsonobject |
| pageSize | integer | N | 页尺寸 |
| pageNo | integer | N | 页号 |
| totalRecord | integer | N | 总记录数 |
| records | list | N | 记录列表 |
| id | integer | Y | 唯一标识 |
| ttsUrl | integer | N | 音频地址 |
| srtUrl | integer | N | srt文件地址('srtFlag'=1时返回) |
| duration | list | N | 音频时长(单位:毫秒) |
| status | integer | N | 状态 0-准备中 1-合成中 2-合成成功 3-合成失败 |
| downloadEndTime | string | N | 音频下载截止时间 |
返回报文示例
{
"code": "0",
"message": "请求成功",
"success": true,
"data": {
"pageSize": 100,
"pageNo": 1,
"totalRecord": 2,
"records": [
{
"id": 20,
"ttsUrl": "http://127.0.0.1/1105667226071080960.wav",
"srtUrl": "http://127.0.0.1/1105667226071080960.srt",
"duration": 1539,
"status": 2,
"downloadEndTime": "2025-11-16 00:00:00"
},
{
"id": 19,
"ttsUrl": "http://127.0.0.1/1105667111205871616.wav",
"srtUrl": "http://127.0.0.1/1105667111205871616.srt",
"duration": 601,
"status": 2,
"downloadEndTime": "2025-11-16 00:00:00"
}
]
}
}
/openapi/speaker/v2/tts/{id}?access_token=ae4dad61-0dc5-47ad-be20-c51245db2769
GET
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| id | integer | Y | TTS提交时返回的ID(路径参数) |
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| message | string | Y | 成功/错误的描述信息 |
| data | json | Y | 返回的jsonobject |
| id | integer | Y | 唯一标识 |
| ttsUrl | integer | N | 音频地址 |
| srtUrl | integer | N | srt文件地址('srtFlag'=1时返回) |
| duration | list | N | 音频时长(单位:毫秒) |
| status | integer | N | 状态 0-准备中 1-合成中 2-合成成功 3-合成失败 |
| downloadEndTime | string | N | 音频下载截止时间 |
返回报文示例
{
"code": "0",
"message": "请求成功",
"success": true,
"data": {
"id": 17,
"ttsUrl": "http://127.0.0.1/1104702054431072256.wav",
"srtUrl": "http://127.0.0.1/1104702054431072256.srt",
"duration": 2012,
"status": 2,
"downloadEndTime": "2025-11-16 00:00:00"
}
}
/openapi/user/v2/get?access_token=55d1bc37-f960-4a9d-8c7d-5dc8c991c245
GET
无
| 字段 | 类型 | 必须 | 备注 |
|---|---|---|---|
| code | string | Y | 返回的状态码,为0表示成功 |
| message | string | Y | 成功/错误的描述信息 |
| data | string | N | 返回的jsonobject |
| user | json | N | 用户信息 |
| id | string | N | 用户ID |
| username | string | N | 用户名 |
| nickname | string | N | 昵称 |
| corpId | string | N | 企业ID |
| corpName | string | N | 企业名称 |
| primaryOrgId | string | N | 一级组织ID |
| primaryOrgName | string | N | 一级组织名称 |
| secondaryOrgId | string | N | 二级组织ID |
| secondaryOrgName | string | N | 二级组织名称 |
| roleId | string | N | 角色ID |
| roleName | string | N | 角色名称 |
| mobile | string | N | 手机号 |
| string | N | 邮箱地址 | |
| account | json | N | 账户信息 |
| balance | float | N | 账户钻石余额 |
| duration | integer | N | 剩余时长(秒) |
| durationCost | integer | N | 消耗市场(秒) |
| giftBalance | float | N | 赠送钻石余额 |
| privateDuration | integer | N | 模特私有市场汇总(秒) |
| totalCost | float | N | 总消费额度 |
| universalDuration | integer | N | 通用时长汇总(秒) |
| ttsDuration | integer | N | 音频合成剩余时长(单位:秒) |
| trainTime | integer | N | 剩余专业训练次数 |
| totalAmount | integer | N | 合同总金额 |
| aiPanting | integer | N | Ai绘画(单位:次) |
| aiCartoon | integer | N | Ai漫画(单位:次) |
| e0LevelAmount | integer | N | E级形象克隆剩余次数 |
| s0LevelAmount | integer | N | S级形象克隆剩余次数 |
| s1LevelAmount | integer | N | S级-超清版形象克隆剩余次数 |
示例:
{
"code": "0",
"message": "请求成功",
"success": true,
"data": {
"user": {
"id": 1,
"userId": null,
"username": "admin",
"email": null,
"nickname": "硅基超级管理员",
"corpId": 1000000,
"corpName": null,
"mobile": "admin",
"primaryOrgId": null,
"primaryOrgName": null,
"secondaryOrgId": null,
"secondaryOrgName": null
},
"account": {
"balance": 1,
"duration": 0,
"durationCost": 0,
"giftBalance": 1,
"privateDuration": 0,
"totalCost": 1,
"universalDuration": 0,
"ttsDuration": 0,
"trainTime": 3,
"totalAmount": null,
"aiPanting": 95,
"aiCartoon": 0
}
}
}
(1)我们将依据相关法律法规,对人工智能生成合成内容添加相应标识(如在生成合成内容或者交互场景界面中添加的显式标识,采用技术措施在生成合成内容的文件元数据中添加的隐式标识)。您应确保您已仔细阅读并理解《人工智能生成合成内容标识办法》及其他相关的标识管理要求。您不得使用或尝试使用任何技术手段或其他方法删除、篡改、伪造、隐匿该等生成合成内容标识,不得为他人实施删除、篡改、伪造、隐匿该等生成合成内容标识行为提供工具或者服务,不得通过不正当标识手段损害他人合法权益。
(2)在特定场景下,为更好地满足您的使用需求,我们可能根据您的申请为您提供没有添加显式标识的人工智能生成合成内容。如您申请我们提供没有添加显式标识的生成合成内容的,您需承诺并保证:
①不利用该内容发布、传播任何虚假信息或从事其他任何违法违规活动;
②在发布或传播基于深度学习、虚拟现实、深度合成、生成式人工智能等新技术制作的非真实信息,或其他可能引发公众误解或混淆的信息内容时,应当以显著方式标识;
③在向第三方分享该内容或使用网络信息内容传播服务发布该内容或以其他方式使用该内容时,主动声明其为人工智能生成合成内容;
④遵守其他相关法律、法规、政策、办法的规定。
(3)如您违反上述约定,您应自行承担由此引起的所有责任,并赔偿由此给我们及第三方造成的全部损失(包括但不限于直接损失、间接损失、诉讼费、仲裁费、公证费、鉴定费、律师费、差旅费、保全费用、保全保险费、向任何第三方承担的责任、行政处罚、罚款等)。