PRE-CS-ADAPTER API DOC #
SVC 请求 #
POST /api/v3/svc/request
Request:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| audio_url | string | true | - | 待转换的音频文件URL |
| sid | string | true | - | SVC 音色 ID |
| with_bgm | boolean | false | true | 音频文件是否包含背景音乐,如包含背景音乐,将进行声源分离,并分别返回转换后的干音与背景音乐 |
| auto_key | boolean | false | true | 是否自动进行音高检测并使用检测到的音高进行转换,如果设置为 false,则需要手动设置 pitch |
| pitch | int | false | 0 | 音高,数值越大越尖锐,越小越低沉;默认0 |
| timeout | int | false | 0 | 同步等待SVC任务完成的时间,单位为ms。如任务在时限内完成,直接返回 SVC 结果,否则返回 request_id |
{
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"sid": "sid1",
"with_bgm": true,
"auto_key": true,
"pitch": 0,
"timeout": 0
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | SVC 结果,如任务在超时时间内完成,返回此字段,否则此字段为空{} |
| data.result.vocal_track_url | string | SVC 结果音频文件 URL |
| data.result.original_instrumental_track_url | string | 声源分离后的背景音乐文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.original_vocal_track_url | string | 声源分离后的原始人声文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.original_reverb_url | string | 声源分离后的混响文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.shifted_instrumental_track_url | string | 音高转换后的背景音乐文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.pitch | int | SVC 转换使用的音高 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"original_instrumental_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_acc.mp3",
"original_vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_vocal.mp3",
"original_reverb_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_reverb.mp3",
"shifted_instrumental_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_bgm.mp3",
"pitch": 0
}
}
}
SVC 状态查询接口 #
POST /api/v3/svc/result
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| request_id | string | true | 请求 ID |
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | SVC 结果,如任务在超时时间内完成,返回此字段,否则此字段为空{} |
| data.result.vocal_track_url | string | SVC 结果音频文件 URL |
| data.result.original_instrumental_track_url | string | 声源分离后的背景音乐文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.original_vocal_track_url | string | 声源分离后的原始人声文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.original_reverb_url | string | 声源分离后的混响文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.shifted_instrumental_track_url | string | 音高转换后的背景音乐文件 URL,仅当 with_bgm 为 true 时返回 |
| data.result.pitch | int | SVC 转换使用的音高 |
case1:还在处理
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2: 已处理完毕
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"original_instrumental_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_acc.mp3",
"original_vocal_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_vocal.mp3",
"original_reverb_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_reverb.mp3",
"shifted_instrumental_track_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1_bgm.mp3",
"pitch": 0
}
}
}
获取 QID 详情 #
GET /api/v3/tts/qid/{qid}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.result | object | QID 详情 |
| data.result.pitch | boolean | 是否支持调节音调 |
| data.result.speed | boolean | 是否支持调节语速 |
| data.result.volume | boolean | 是否支持调节音量 |
| data.result.phone | string | 是否支持返回音素 |
| data.result.subtitle | string | 是否支持返回字幕、句级别时间戳、字级别时间戳 |
| data.result.ussml | object | 是否支持使用 USSML 语法 |
| data.result.ussml.break | boolean | USSML 停顿是否生效 |
| data.result.ussml.phoneme | string list | 支持的 USSML phoneme alphabet 值列表,当列表为空时表示不支持使用 <phoneme> 标签 |
| data.result.ussml.sub | boolean | USSML 替换文本是否生效 |
| data.result.ussml.sayas | string list | 支持的 USSML say-as interpret-as 值列表,当列表为空时不支持 <say-as> 标签 |
| data.result.languages | string list | 支持的语言列表 |
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": {
"pitch": true,
"speed": true,
"volume": true,
"phone": true,
"subtitle": true,
"ussml": {
"break": true,
"phoneme": ["pinyin"],
"sub": true,
"sayas": ["cardinal", "digit", "phone", "address", "date", "clock"]
},
"languages": [
"zh-CN",
"en-US"
]
}
}
}
获取 QID 列表 #
GET /api/v3/tts/config
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码 |
| message | string | 状态说明 |
| data | object list | 结果数据 |
| data.qid | string | QID,表示预配置 QuickID。此字段的长度较长,建议以 VARCHAR(512) 类型进行存储 |
| data.name | string | 音色名称 |
| data.language | string | 音色语言 |
{
"code": 0,
"message": "ok",
"data": [
{
"qid": "mwvA2f:AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK",
"name": "小妍",
"language": "zh-CN"
},
{
"qid": "ihWNP_:ACAKRZJZkmWFkYpaanGuompJkm6lkYWJrrJFkmWuqmmiRbJ5mZpugXlusllzowSwH0ZTAMYjQ10QxhzEotLUv0Syx11g0N081LCg",
"name": "Charles",
"language": "en-US"
}
]
}
Voice ID 迁移至 QID #
主动迁移已有的 Voice ID 表示的旧音色至 Quick ID 表示的新音色,并返回对应的 QID 取值,建议对 QID 进行存储,用于后续推理请求。
POST /api/v3/tts/migrate
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| voice_id | string | true | 旧音色ID |
{
"voice_id": "xiaoning",
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.result | string | QID,表示预配置 QuickID。此字段的长度较长,建议以 VARCHAR(512) 类型进行存储 |
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": "JQb7Qv:AEA_Z10Mqp9GYwDGdLzMvPzEzIqwo"
}
}
使用 QID 的 TTS 请求 #
POST /api/v3/tts/request
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| qid | string | true | 发音人ID |
| query | string | true | 待合成语音的文本内容 |
| ssml | boolean | false | 是否使用SSML |
| phoneme | boolean | false | 是否需要返回音素文件URL |
| timeout | int | false | 等待中控返回的超时时间,单位为ms。如中控在超时时间内返回,直接返回TTS结果,否则返回 request_id |
| pitch_offset | float | false | 音调,数值越大越尖锐,越低越低沉,支持范围 [-10, 10];默认0 |
| speed_ratio | float | false | 语速,数值越大语速越慢,支持范围 [0.5, 2];默认1.0 |
| volume | int | false | 音量,数值越大声音越大,支持范围 [1, 100];默认100 |
| subtitle_max_length | int | false | 每行字幕最大长度,默认为0,即不限制长度 |
| subtitle_cut_by_punc | boolean | false | 是否根据标点符号对字幕进行换行,默认为false,即不切分 |
| subtitle_custom_punc | string list | false | 自定义用于字幕换行的标点符号,仅在subtitle_cut_by_punc为true时生效。 |
| subtitle_punc_keep | boolean | false | 是否保留字幕换行的标点符号,默认为false,不保留。 |
| word_time | boolean | false | 是否返回字级别时间戳,默认为false,不返回 |
{
"qid": "mwvA2f:AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK",
"query": "待合成语音的文本内容xxxxxx",
"ssml": false,
"phoneme": true,
"timeout": 3000,
"pitch_offset": 0.0,
"speed_ratio": 1.0,
"volume": 100,
"subtitle_max_length": 0,
"subtitle_cut_by_punc": false,
"word_time": true
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | TTS 合成结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.audio_url | string | TTS 合成音频 MP3 文件 URL |
| data.result.srt_url | string | TTS 音频字幕 SRT 文件 URL |
| data.result.phone_url | string | TTS 音频音素文件 URL |
| data.result.duration_ms | int | TTS音频时长,单位为ms |
| data.result.word_times | list | TTS音频字级别时间戳,单位为ms |
| data.result.word_times.begin_ms | int | 字开始时间戳,单位为ms |
| data.result.word_times.end_ms | int | 字结束时间戳,单位为ms |
| data.result.word_times.text | string | 字文本 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
"phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
"duration_ms": 1000,
"word_times": [
{
"begin_ms": 2080,
"end_ms": 2560,
"text": "字"
},
{
"begin_ms": 2560,
"end_ms": 3040,
"text": "级"
},
{
"begin_ms": 3040,
"end_ms": 3520,
"text": "别"
},
{
"begin_ms": 3520,
"end_ms": 4000,
"text": "时"
},
{
"begin_ms": 4000,
"end_ms": 4480,
"text": "间"
},
{
"begin_ms": 4480,
"end_ms": 4960,
"text": "戳"
}
]
}
}
}
使用 QID 的 TTS 状态查询接口 #
POST /api/v3/tts/result
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| request_id | string | true | 请求 ID |
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | TTS 合成结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.audio_url | string | TTS 合成音频 MP3 文件 URL |
| data.result.srt_url | string | TTS 音频字幕 SRT 文件 URL |
| data.result.phone_url | string | TTS 音频音素文件 URL |
| data.result.duration_ms | int | TTS音频时长,单位为ms |
| data.result.word_times | list | TTS音频字级别时间戳,单位为ms |
| data.result.word_times.begin_ms | int | 字开始时间戳,单位为ms |
| data.result.word_times.end_ms | int | 字结束时间戳,单位为ms |
| data.result.word_times.text | string | 字文本 |
case1:还在处理
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2: 已处理完毕
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
"phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
"duration_ms": 1000,
"word_times": [
{
"begin_ms": 2080,
"end_ms": 2560,
"text": "字"
},
{
"begin_ms": 2560,
"end_ms": 3040,
"text": "级"
},
{
"begin_ms": 3040,
"end_ms": 3520,
"text": "别"
},
{
"begin_ms": 3520,
"end_ms": 4000,
"text": "时"
},
{
"begin_ms": 4000,
"end_ms": 4480,
"text": "间"
},
{
"begin_ms": 4480,
"end_ms": 4960,
"text": "戳"
}
]
}
}
}
使用 QID 的 TTS 请求音色语言校验 #
根据传入的语言和音色,判断是否匹配,并返回 query 检测到的 language code
POST /api/v3/tts/validate
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| qid | string | true | 音色ID |
| query | string | true | 文本 |
| ssml | boolean | false | 是否使用SSML,默认不使用 |
{
"qid": "mwvA2f:AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK",
"query": "待合成语音的文本内容xxxxxx"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.result | object | 校验结果 |
| data.result.valid | boolean | 是否匹配 |
| data.result.language | string | 检测到的语言代码,参考标准 ISO 639-1 |
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": {
"valid": true,
"language": "zh"
}
}
}
多音字 请求 #
POST /api/v1/request/polyphony
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | true | 文本 |
| format | string | false | 返回格式,支持 “pinyin” 和 “bopomofo”,默认为 “pinyin” |
| timeout | int | false | 等待中控返回的超时时间,单位为ms。如中控在超时时间内返回,直接返回多音字结果,否则返回 request_id |
{
"query": "待合成语音的文本内容xxxxxx",
"timeout": 3000
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求ID |
| data.result | object list | 多音字结果,如中控在超时时间内返回,返回此字段,否则此字段为空[] |
| data.result.text | string | 多音字文本 |
| data.result.polyphony | string list | 多音字的可选发音,推荐读音在前,候选读音在后 |
| data.result.polyphony_assist | list of string list | 多音字的可选发音拼音及对应注音,推荐读音在前,候选读音在后。仅当 format 为 bopomofo 时返回 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status":1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": []
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status":0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": [
{
"text":"待",
"polyphony":["dai4","dai1"]
},
{
"text":"的",
"polyphony":["de5","di4","di1","di2"]
}
]
}
}
case3:请求注音,未超时成功
{
"code": 0,
"data": {
"request_id": "66d043c7-adbd-4a12-a52e-aa7c3c226a05",
"result": [
{
"polyphony": [
"lv4",
"lu4"
],
"polyphony_assist": [
["lv4", "ㄌㄩˋ"],
["lu4", "ㄌㄨˋ"]
],
"text": "绿"
},
{
"polyphony": [
"le5",
"liao3"
],
"polyphony_assist": [
["le5", "˙ㄌㄜ"],
["liao3", "ㄌㄧㄠˇ"]
],
"text": "了"
}
],
"status": 0
},
"message": "ok"
}
多音字 状态查询接口 #
POST /api/v1/result/polyphony
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| request_id | string | true | 请求ID |
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求ID |
| data.result | object list | 多音字结果,如中控在超时时间内返回,返回此字段否则此字段为空[] |
| data.result.text | string | 多音字文本 |
| data.result.polyphony | string list | 多音字的可选发音,推荐读音在前,候选读音在后 |
| data.result.polyphony_assist | list of string list | 多音字的可选发音拼音及对应注音,推荐读音在前,候选读音在后。仅当 format 为 bopomofo 时返回 |
case1:还在处理
{
"code": 0,
"message": "created",
"data": {
"status":1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": []
}
}
case2: 已处理完毕
{
"code": 0,
"message": "ok",
"data": {
"status":0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": [
{
"text":"待",
"polyphony":["dai4","dai1"]
},
{
"text":"的",
"polyphony":["de5","di4","di1","di2"]
}
]
}
}
case3:请求注音,完毕
{
"code": 0,
"data": {
"request_id": "66d043c7-adbd-4a12-a52e-aa7c3c226a05",
"result": [
{
"polyphony": [
"lv4",
"lu4"
],
"polyphony_assist": [
["lv4", "ㄌㄩˋ"],
["lu4", "ㄌㄨˋ"]
],
"text": "绿"
},
{
"polyphony": [
"le5",
"liao3"
],
"polyphony_assist": [
["le5", "˙ㄌㄜ"],
["liao3", "ㄌㄧㄠˇ"]
],
"text": "了"
}
],
"status": 0
},
"message": "ok"
}
使用 OpenAI GPT4o 的 Query 语言检测 #
根据传入的文本,返回对应的language code,返回全部检测到的语言。仅返回 ISO 639-1 及 ISO 639-2 标准中的语言代码。
POST /api/v3/nlp/langdetect
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | true | 待检测语言的文本,最大长度为 20,000 字符 |
{
"query": "待合成语音的文本内容xxxxxx"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.result | string list | 语言代码,参考标准 ISO 639-1, ISO 639-2。当语言存在于 ISO 639-1 标准中时,优先返回 ISO 639-1 标准中的语言代码 |
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": ["zh"]
}
}
使用微软检测接口的 Query 语言检测 #
根据传入的文本,返回对应的language code,仅返回一个占比最高的语言。
POST /api/v1/nlp/language
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | true | 文本 |
{
"query": "待合成语音的文本内容xxxxxx"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.result | string | 语言代码,参考标准 ISO 639-1 |
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": "zh"
}
}
TTS 请求音色语言校验 #
根据传入的语言、音色和供应商ID,判断是否匹配,并返回检测到的language code
POST /api/v1/tts/validate
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | true | 文本 |
| voice_id | string | true | 音色ID |
| language | string | true | 语言,支持 BCP 47 格式,如 “en-US”、“zh-CN” |
| vendor_id | int | true | 供应商ID |
| ssml | boolean | false | 是否使用SSML,默认不使用 |
{
"query": "待合成语音的文本内容xxxxxx",
"voice_id": "xiaoning",
"language": "zh",
"vendor_id": 3
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.result | object | 校验结果 |
| data.result.valid | boolean | 是否匹配 |
| data.result.language | string | 检测到的语言代码,参考标准 ISO 639-1 |
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": {
"valid": true,
"language": "zh"
}
}
}
TTS 请求 #
POST /api/v1/request/tts
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| voice_id | string | true | 发音人ID |
| language | string | false | 语言 |
| query | string | true | 待合成语音的文本内容 |
| ssml | boolean | false | 是否使用SSML |
| phoneme | boolean | false | 是否需要返回音素文件URL |
| timeout | int | false | 等待中控返回的超时时间,单位为ms。如中控在超时时间内返回,直接返回TTS结果,否则返回 request_id |
| pitch_offset | float | false | 音调,数值越大越尖锐,越低越低沉,支持范围 [-10, 10];默认0 |
| speed_ratio | float | false | 语速,数值越大语速越慢,支持范围 [0.5, 2];默认1.0 |
| volume | int | false | 音量,数值越大声音越大,支持范围 [1, 100];默认100 |
| subtitle_max_length | int | false | 每行字幕最大长度,默认为0,即不限制长度 |
| subtitle_cut_by_punc | boolean | false | 是否根据标点符号对字幕进行换行,默认为false,即不切分 |
| subtitle_custom_punc | string list | false | 自定义用于字幕换行的标点符号,仅在subtitle_cut_by_punc为true时生效。 |
| subtitle_punc_keep | boolean | false | 是否保留字幕换行的标点符号,默认为false,不保留。 |
| word_time | boolean | false | 是否返回字级别时间戳,默认为false,不返回 |
{
"voice_id": "xiaoling",
"query": "待合成语音的文本内容xxxxxx",
"phoneme": true,
"timeout": 3000,
"pitch_offset": 0.0,
"speed_ratio": 1.0,
"volume": 100,
"word_time": true
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | TTS 合成结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.audio_url | string | TTS 合成音频 MP3 文件 URL |
| data.result.srt_url | string | TTS 音频字幕 SRT 文件 URL |
| data.result.phone_url | string | TTS 音频音素文件 URL |
| data.result.duration_ms | int | TTS音频时长,单位为ms |
| data.result.word_times | list | TTS音频字级别时间戳,单位为ms |
| data.result.word_times.begin_ms | int | 字开始时间戳,单位为ms |
| data.result.word_times.end_ms | int | 字结束时间戳,单位为ms |
| data.result.word_times.text | string | 字文本 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
"phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
"duration_ms": 1000,
"word_times": [
{
"begin_ms": 2080,
"end_ms": 2560,
"text": "字"
},
{
"begin_ms": 2560,
"end_ms": 3040,
"text": "级"
},
{
"begin_ms": 3040,
"end_ms": 3520,
"text": "别"
},
{
"begin_ms": 3520,
"end_ms": 4000,
"text": "时"
},
{
"begin_ms": 4000,
"end_ms": 4480,
"text": "间"
},
{
"begin_ms": 4480,
"end_ms": 4960,
"text": "戳"
}
]
}
}
}
TTS 状态查询接口 #
POST /api/v1/result/tts
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| request_id | string | true | 请求 ID |
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | TTS 合成结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.audio_url | string | TTS 合成音频 MP3 文件 URL |
| data.result.srt_url | string | TTS 音频字幕 SRT 文件 URL |
| data.result.phone_url | string | TTS 音频音素文件 URL |
| data.result.duration_ms | int | TTS音频时长,单位为ms |
| data.result.word_times | list | TTS音频字级别时间戳,单位为ms |
| data.result.word_times.begin_ms | int | 字开始时间戳,单位为ms |
| data.result.word_times.end_ms | int | 字结束时间戳,单位为ms |
| data.result.word_times.text | string | 字文本 |
case1:还在处理
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2: 已处理完毕
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
"phone_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.phone",
"duration_ms": 1000,
"word_times": [
{
"begin_ms": 2080,
"end_ms": 2560,
"text": "字"
},
{
"begin_ms": 2560,
"end_ms": 3040,
"text": "级"
},
{
"begin_ms": 3040,
"end_ms": 3520,
"text": "别"
},
{
"begin_ms": 3520,
"end_ms": 4000,
"text": "时"
},
{
"begin_ms": 4000,
"end_ms": 4480,
"text": "间"
},
{
"begin_ms": 4480,
"end_ms": 4960,
"text": "戳"
}
]
}
}
}
ASR 请求 #
POST /api/v1/request/asr
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| audio_url | string | true | 待识别文本的音频文件URL |
| timeout | int | false | 等待中控返回的超时时间,单位为ms。如中控在超时时间内返回,直接返回ASR结果,否则返回 request_id |
| subtitle_max_length | int | false | 每行字幕最大长度,默认为0,即不限制长度 |
| subtitle_cut_by_punc | boolean | false | 是否根据标点符号对字幕进行换行,默认为false,即不切分 |
| subtitle_custom_punc | string list | false | 自定义用于字幕换行的标点符号,仅在subtitle_cut_by_punc为true时生效。 |
| subtitle_punc_keep | boolean | false | 是否保留字幕换行的标点符号,默认为false,不保留。 |
| word_time | boolean | false | 是否返回字级别时间戳,默认为false,不返回 |
{
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"timeout": 3000
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | ASR 请求结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.srt_url | string | ASR 音频字幕 SRT 文件 URL |
| data.result.text | string | ASR 识别结果 |
| data.result.word_times | list | ASR音频字级别时间戳,单位为ms |
| data.result.word_times.begin_ms | int | 字开始时间戳,单位为ms |
| data.result.word_times.end_ms | int | 字结束时间戳,单位为ms |
| data.result.word_times.text | string | 字文本 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
"text": "ASR识别结果",
"word_times": [
{
"begin_ms": 2080,
"end_ms": 2560,
"text": "字"
},
{
"begin_ms": 2560,
"end_ms": 3040,
"text": "级"
},
{
"begin_ms": 3040,
"end_ms": 3520,
"text": "别"
},
{
"begin_ms": 3520,
"end_ms": 4000,
"text": "时"
},
{
"begin_ms": 4000,
"end_ms": 4480,
"text": "间"
},
{
"begin_ms": 4480,
"end_ms": 4960,
"text": "戳"
}
]
}
}
}
ASR 状态查询接口 #
POST /api/v1/result/asr
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| request_id | string | true | 请求 ID |
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.result | object | ASR 请求结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.srt_url | string | ASR 音频字幕 SRT 文件 URL |
| data.result.text | string | ASR 识别结果 |
| data.result.word_times | list | ASR音频字级别时间戳,单位为ms |
| data.result.word_times.begin_ms | int | 字开始时间戳,单位为ms |
| data.result.word_times.end_ms | int | 字结束时间戳,单位为ms |
| data.result.word_times.text | string | 字文本 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"result": {
"srt_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.srt",
"text": "ASR识别结果",
"word_times": [
{
"begin_ms": 2080,
"end_ms": 2560,
"text": "字"
},
{
"begin_ms": 2560,
"end_ms": 3040,
"text": "级"
},
{
"begin_ms": 3040,
"end_ms": 3520,
"text": "别"
},
{
"begin_ms": 3520,
"end_ms": 4000,
"text": "时"
},
{
"begin_ms": 4000,
"end_ms": 4480,
"text": "间"
},
{
"begin_ms": 4480,
"end_ms": 4960,
"text": "戳"
}
]
}
}
}
NLP 请求 #
POST /api/v1/request/nlp
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| platform | string | true | NLP 引擎选项。包括:"chatgpt"、"sensechat" |
| query | string | true | 用户问题的文本内容 |
| session_id | string | false | 如需要保留会话设置与上下文,使用 session_id 作为会话 ID。会话闲置超过 1 小时失效。 |
| prompt_header | string | false | 首句提示词,默认为"你是我的AI助理,助理乐于助人、富有创意、聪明而且非常友好。" |
| max_reply_token | int | false | 最大回复字数,默认 500 字。可调整范围为 50-4000 |
| timeout | int | false | 等待中控返回的超时时间,单位为 ms。如中控在超时时间内返回,直接返回 NLP 结果,否则返回 request_id |
注意:platform、prompt_header 与 max_reply_token 设置仅在开启一个新的会话时生效。后续使用同一个 session_id 时,无法改变相关配置。
{
"platform": "chatgpt",
"query": "写一个500字主题是春天的作文",
"session_id": "129e5e6c-60d0-4385-9b23-d9e1e507ad82",
"prompt_header": "你是一个语文非常优秀的学生,你的老师给你布置了一些作文作业。",
"max_reply_token": 1000,
"timeout": 20000
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.session_id | string | 会话 ID |
| data.result | object | NLP 请求结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.text | string | NLP 返回的展示文本 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"session_id": "129e5e6c-60d0-4385-9b23-d9e1e507ad82",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"session_id": "129e5e6c-60d0-4385-9b23-d9e1e507ad82",
"result": {
"text": "作为爱因斯坦的助理,我会帮助他完成各种任务,包括:\n\n1. 协助他进行研究和实验,为他提供所需的物品和工具。\n2. 帮助他管理日程安排,确保他能够按时参加会议和其他活动。\n3. 组织和整理他的笔记和文件,以确保他的研究工作得以顺利进行。\n4. 回答来自其他学者和媒体的问题,代表他参加一些会议和讲座。\n5. 协助他完成写作和出版工作,包括校对和编辑。\n6. 在他需要的时候,提供支持和帮助,以确保他的工作顺利进行。\n\n当然,这只是我的一些职责,具体的任务会根据爱因斯坦的需要而不同。"
}
}
}
NLP 状态查询接口 #
POST /api/v1/result/nlp
Request:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| request_id | string | true | 请求 ID |
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
Response:
| 字段 | 类型 | 说明 |
|---|---|---|
| code | int | code 码,见状态表 |
| message | string | 状态说明 |
| data | object | 结果数据 |
| data.status | int | 状态,见状态表 |
| data.request_id | string | 请求 ID |
| data.session_id | string | 会话 ID |
| data.result | object | NLP 请求结果,如中控在超时时间内返回,返回此字段,否则此字段为空{} |
| data.result.text | string | NLP 返回的展示文本 |
case1:请求超时
{
"code": 0,
"message": "created",
"data": {
"status": 1000,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"session_id": "129e5e6c-60d0-4385-9b23-d9e1e507ad82",
"result": {}
}
}
case2:请求未超时,请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7",
"session_id": "129e5e6c-60d0-4385-9b23-d9e1e507ad82",
"result": {
"text": "作为爱因斯坦的助理,我会帮助他完成各种任务,包括:\n\n1. 协助他进行研究和实验,为他提供所需的物品和工具。\n2. 帮助他管理日程安排,确保他能够按时参加会议和其他活动。\n3. 组织和整理他的笔记和文件,以确保他的研究工作得以顺利进行。\n4. 回答来自其他学者和媒体的问题,代表他参加一些会议和讲座。\n5. 协助他完成写作和出版工作,包括校对和编辑。\n6. 在他需要的时候,提供支持和帮助,以确保他的工作顺利进行。\n\n当然,这只是我的一些职责,具体的任务会根据爱因斯坦的需要而不同。"
}
}
}
状态表 #
TTS 相关状态 #
TTS 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 处理成功 |
| 1000 | 处理中 |
| 1002 | 拒绝:必填参数缺失 |
| 1003 | 拒绝:非法的参数–发音人为空 |
| 1004 | 拒绝:非法的参数–合成文本为空 |
| 1005 | 拒绝:非法的参数–发音人不存在 |
| 1102 | 请求失败,未超时:未连接到中控 |
| 1103 | 请求失败,未超时:中控繁忙 |
| 1104 | 请求失败,未超时:中控内部错误 |
| 1105 | 请求失败,未超时:中控请求超时 |
TTS 请求查询状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 1000 | 处理中 |
| 1102 | 失败:未连接到中控 |
| 1103 | 失败:中控繁忙 |
| 1104 | 失败:中控内部错误 |
| 1105 | 失败:请求超时 |
| 1106 | 失败:未知的 request ID |
ASR 相关状态 #
ASR 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 请求成功 |
| 1000 | 请求超时,已创建了新的中控请求 |
| 2001 | 拒绝:必填参数缺失 |
| 2002 | 拒绝:非法的参数–音频 URL 为空 |
| 2102 | 请求失败,未超时:未连接到中控 |
| 2103 | 请求失败,未超时:中控繁忙 |
| 2104 | 请求失败,未超时:中控内部错误 |
| 2105 | 请求失败,未超时:请求超时 |
| 2106 | 请求失败,未超时:下载音频错误 |
ASR 请求查询状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 1000 | 处理中 |
| 2102 | 失败:未连接到中控 |
| 2103 | 失败:中控繁忙 |
| 2104 | 失败:中控内部错误 |
| 2105 | 失败:请求超时 |
| 2106 | 失败:下载音频错误 |
| 2107 | 失败:未知的 request ID |
| 2108 | 失败:音频格式错误 |
NLP 相关状态 #
NLP 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 请求成功 |
| 1000 | 请求超时,已创建了新的中控请求 |
| 3001 | 拒绝:必填参数缺失 |
| 3002 | 拒绝:非法的参数–请求文本为空 |
| 3003 | 拒绝:非法的参数–NLP 引擎为空 |
| 3004 | 拒绝:非法的参数–未知的 NLP 引擎 ID |
| 3102 | 请求失败,未超时:未连接到中控 |
| 3103 | 请求失败,未超时:中控繁忙 |
| 3104 | 请求失败,未超时:中控内部错误 |
| 3105 | 请求失败,未超时:请求超时 |
NLP 请求查询状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 1000 | 处理中 |
| 3102 | 失败:未连接到中控 |
| 3103 | 失败:中控繁忙 |
| 3104 | 失败:中控内部错误 |
| 3105 | 失败:请求超时 |
| 3106 | 失败:未知的 request ID |
语言检测相关状态 #
v1 语言检测 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 3201 | 拒绝:必填参数缺失 |
| 3202 | 拒绝:非法的参数–请求文本为空 |
| 3301 | 请求失败:未能检测到语言 |
v3 语言检测 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 86013201 | 拒绝:必填参数缺失 |
| 86013202 | 拒绝:非法的参数–请求文本为空 |
| 86013203 | 拒绝:非法的参数–请求文本过长 |
| 86013301 | 请求失败:未能检测到 ISO 639-1 或 ISO 639-2 列表中的语言 |
| 86013302 | 请求失败:语言检测失败 |
音色语言校验相关状态 #
音色语言校验 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 1201 | 拒绝:必填参数缺失 |
| 1202 | 拒绝:非法的参数–音色ID为空 |
| 1203 | 拒绝:非法的参数–请求文本为空 |
| 1204 | 拒绝:非法的参数–语言为空 |
| 1205 | 拒绝:非法的参数–供应商ID为空 |
| 1206 | 拒绝:非法的参数–音色ID不存在 |
| 1207 | 拒绝:非法的参数–未知的语言 |
| 1208 | 拒绝:非法的参数–未知的供应商 |
| 1301 | 请求失败:未能检测到语言 |
多音字 相关状态 #
多音字 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 处理成功 |
| 1000 | 处理中 |
| 5002 | 拒绝:必填参数缺失 |
| 5004 | 拒绝:非法的参数–合成文本为空 |
| 5102 | 请求失败,未超时:未连接到中控 |
| 5103 | 请求失败,未超时:中控繁忙 |
| 5104 | 请求失败,未超时:中控内部错误 |
| 5105 | 请求失败,未超时:中控请求超时 |
多音字 请求查询状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 成功 |
| 1000 | 处理中 |
| 5102 | 失败:未连接到中控 |
| 5103 | 失败:中控繁忙 |
| 5104 | 失败:中控内部错误 |
| 5105 | 失败:请求超时 |
| 5106 | 失败:未知的request ID |
Voice ID 迁移 相关状态 #
Voice ID 迁移 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 处理成功 |
| 86016001 | 失败:必填参数缺失 |
| 86016002 | 失败:非法的参数–源发音人为空 |
| 86016102 | 失败:内部错误 |
获取 QID 详情 相关状态 #
获取 QID 详情 请求响应状态 #
| code | 说明 |
|---|---|
| 0 | 成功 |
| x | 失败 |
| status | 说明 |
|---|---|
| 0 | 处理成功 |
| 86016103 | 失败:QID 不存在 |