# 语音处理
平台在多元素整合的视频合成基础能力之外,还另外提供语音处理的相关能力,支持用户对于视频合成的语音相关内容进行预处理,提供多项能力,TTS、ASR、NLP、多音字、音色迁移等,此外提供USSML(Unified Speech Synthesis Markup Language)能力,归一化各TTS供应商的 SSML(Speech Synthesis Markup Language)语法格式。
# 能力介绍
- TTS语音合成
- 根据用户选择的发音人音色结合传入的文本内容将文本朗读出来,支持调节朗读声音的音调,语速和音量。需要注意所有语言的发音人都可以合成英文文本;所有语言的发音人都可以合成自己语言的文本;粤语、沪语等中文方言发音人可以合成中文文本。
- ASR语音识别
- 根据用户传入的音频内容进行解析,将其转写为相应的文本内容。
- NLP自然语言理解
- 根据用户传入的文字内容进行词义及语义分析,并进行有效的理解和拓展,进一步反馈用户预期的文本内容。
- 多音字处理
- 根据用户传入的文字内容进行多音字检索,反馈给用户可能出现的多音字以及对应的发音备选。
- 音色迁移
- 根据用户传入的音频内容以及指定的音色,将原音频内容迁移至对应的音色合成后返回结果音频。
# API说明
用户调用平台全部API服务,皆需要访问服务接入点:aigc.softsugar.com,并在请求头中加上token信息。
# TTS语言检测
# 接口描述
根据用户传入的文本内容识别所属的语言,并返回对应的language code。
# 请求地址
POST
/api/voice/v1/nlp/language
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
query | String | True | 文本内容 |
# 请求样例
{
"query": "待合成语音的文本内容xxxxxx"
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.result | String | 语言代码,参考标准 ISO 639-1 (opens new window). 目前支持检测:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu |
# 响应样例
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": "zh"
}
}
# TTS语言校验(Qid)
# 接口描述
根据用户传入的文本内容以及语言、QID,判断各元素之间是否匹配,并返回检测结果的language code。
# 请求地址
POST
/api/voice/v3/tts/validate
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
query | String | True | 文本内容 |
qid | String | True | 音色-Qid |
ssml | Boolean | False | 是否使用SSML,默认为否 |
# 请求样例
{
"query": "待合成语音的文本内容xxxxxx",
"qid": "AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK"
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.result | String | 校验结果 |
data.result.valid | Boolean | 是否匹配 |
data.result.language | String | 检测到的语言代码,参考标准 ISO 639-1 (opens new window). 目前支持检测:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu |
# 响应样例
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": {
"valid": true,
"language": "zh"
}
}
}
# TTS语言校验(旧)
注:该接口目前处理维护状态,不在更新新功能。建议使用Qid接口。
# 接口描述
根据用户传入的文本内容以及语言、音色、供应商ID,判断各元素之间是否匹配,并返回检测结果的language code。
# 请求地址
POST
/api/voice/v1/tts/validate
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
query | String | True | 文本内容 |
voice_id | String | True | 音色ID |
language | String | True | 语言,支持 BCP47 (opens new window).格式,如 "en-US"、"zh-CN" |
vendor_id | Integer | True | 供应商ID |
ssml | Boolean | False | 是否使用SSML |
# 请求样例
{
"query": "待合成语音的文本内容xxxxxx",
"voice_id": "xiaoling",
"language": "zh-CN",
"vendor_id": 3
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.result | String | 校验结果 |
data.result.valid | Boolean | 是否匹配 |
data.result.language | String | 检测到的语言代码,参考标准 ISO 639-1 (opens new window). 目前支持检测:af, am, an, ar, as, az, be, bg, bn, br, bs, ca, cs, cy, da, de, dz, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gl, gu, he, hi, hr, ht, hu, hy, id, is, it, ja, jv, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mk, ml, mn, mr, ms, mt, nb, ne, nl, nn, no, oc, or, pa, pl, ps, pt, qu, ro, ru, rw, se, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, ug, uk, ur, vi, vo, wa, xh, zh, zu |
# 响应样例
case1:请求成功
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": {
"valid": true,
"language": "zh"
}
}
}
# Voice ID 迁移至 QID
# 接口描述
主动迁移已有的 Voice ID 表示的旧音色至 Qid 表示的新音色,并返回对应的 Qid 取值,建议对 Qid 进行存储,用于后续推理请求。
# 请求地址
POST
/api/voice/v3/tts/migrate
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
voice_id | String | True | 需要进行转换的音色id |
# 请求样例
{
"voice_id": "xiaoning"
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.result | String | Qid,表示预配置 Qid。此字段的长度较长,建议以 VARCHAR(512) 类型进行存储 |
# 响应样例
{
"code": 0,
"message": "ok",
"data": {
"status": 0,
"result": "JQb7Qv:AEA_Z10Mqp9GYwDGdLzMvPzEzIqwo"
}
}
# QID详情接口
# 接口描述
获取QID的详细信息,获取该音色支持调节的参数细节。
# 请求地址
GET
/api/voice/v3/tts/qid/{qid}
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
qid | String | True | 待请求详细情况的QID |
# 请求样例
https://domain/api/voice/v3/tts/qid/mwvA2f:AEBEvMy850Y_Z10Mqp9GUwTMr8xMyI3Tzk3Q
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | int | code 码 |
message | string | 状态说明 |
data | object | 结果数据 |
-status | int | 状态,见状态表 |
-result | object | QID 详情 |
-pitch | boolean | 是否支持调节音调 |
-speed | boolean | 是否支持调节语速 |
-volume | boolean | 是否支持调节音量 |
-phone | boolean | 是否支持返回音素 |
-subtitle | boolean | 是否支持返回字幕、句级别时间戳、字级别时间戳 |
-ussml | object | 是否支持使用 USSML 语法 |
-break | boolean | USSML 停顿是否生效,即是否支持 <break> 标签 |
-phoneme | string list | USSML 指定读音是否生效,即是否支持 <phoneme> 标签。<pinyin><ipa> 两种标签 |
-sub | boolean | USSML 替换文本是否生效,即是否支持 <sub> 标签 |
-sayas | string list | USSML 指定朗读方式是否生效,即是否支持 <say-as> 标签。<cardinal><digit><phone><address><date><clock> 六种标签 |
-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"
]
}
}
}
# 发起TTS请求(Qid)
# 接口描述
根据用户选择的发音人音色结合传入的文本内容将文本朗读出来,支持调节朗读声音的音调,语速和音量。
# 请求地址
POST
/api/voice/v3/tts/request
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
qid | String | True | 发音人Qid |
query | String | True | 待合成语音的文本内容 |
ssml | Boolean | False | 是否使用USSML |
phoneme | Boolean | False | 是否需要返回音素文件URL |
timeout | Integer | False | 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回TTS结果,否则返回 request_id |
pitch_offset | Float | False | 语调,数值越大越尖锐,越低越低沉,支持范围 [-60, 60];默认0 |
speed_ratio | Float | False | 语速,数值越大语速越慢,支持范围 [0.5, 2];默认1.0 |
volume | Integer | False | 音量,数值越大声音越大,支持范围 [1, 400];默认100 |
subtitle_max_length | Integer | False | 每行字幕最大长度,默认为0,即不限制长度 |
subtitle_cut_by_punc | Boolean | False | 是否根据标点符号对字幕进行切分换行,默认为false,即不切分 |
word_time | Boolean | False | 是否返回字级别时间戳,默认为false,即不返回 |
# 请求样例
{
"qid": "AEBEvMy850Y_Z10Mqp9GUwDGHMSi0tS_TMr8xMyI3Tzk3QyqsK",
"query": "待合成语音的文本内容xxxxxx",
"phoneme": true,
"timeout": 3000,
"word_time": true,
"pitch_offset": 0.0,
"speed_ratio": 1.0,
"volume": 100
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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 | Integer | TTS合成音频MP3文件音频时长,单位为 ms |
data.result.word_times | List | TTS音频字文件字级别时间戳 ,单位为 ms |
data.result.word_times.begin_ms | Integer | TTS音频文件字开始时间戳,单位为 ms |
data.result.word_times.end_ms | Integer | TTS音频文件字结束时间戳,单位为 ms |
data.result.word_times.text | String | TTS音频文件字文本内容 |
# 响应样例
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请求(旧)
注:该接口目前处理维护状态,不在更新新功能。建议使用Qid接口。
# 接口描述
根据用户选择的发音人音色结合传入的文本内容将文本朗读出来,支持调节朗读声音的音调,语速和音量。需要注意所有语言的发音人都可以合成英文文本;所有语言的发音人都可以合成自己语言的文本;粤语、沪语等中文方言发音人可以合成中文文本。
# 请求地址
POST
/api/voice/v1/request/tts
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
voice_id | String | True | 发音人ID |
language | String | False | 语言 |
query | String | True | 待合成语音的文本内容 |
ssml | Boolean | False | 是否使用SSML |
phoneme | Boolean | False | 是否需要返回音素文件URL |
timeout | Integer | False | 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回TTS结果,否则返回 request_id |
pitch_offset | Float | False | 语调,数值越大越尖锐,越低越低沉,支持范围 [-60, 60];默认0 |
speed_ratio | Float | False | 语速,数值越大语速越慢,支持范围 [0.5, 2];默认1.0 |
volume | Integer | False | 音量,数值越大声音越大,支持范围 [1, 400];默认100 |
subtitle_max_length | Integer | False | 每行字幕最大长度,默认为0,即不限制长度 |
subtitle_cut_by_punc | Boolean | False | 是否根据标点符号对字幕进行切分换行,默认为false,即不切分 |
word_time | Boolean | False | 是否返回字级别时间戳,默认为false,即不返回 |
# 请求样例
{
"voice_id": "xiaoling",
"query": "待合成语音的文本内容xxxxxx",
"phoneme": true,
"timeout": 3000,
"word_time": true,
"pitch_offset": 0.0,
"speed_ratio": 1.0,
"volume": 100
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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 | Integer | TTS合成音频MP3文件音频时长,单位为 ms |
data.result.word_times | List | TTS音频字文件字级别时间戳 ,单位为 ms |
data.result.word_times.begin_ms | Integer | TTS音频文件字开始时间戳,单位为 ms |
data.result.word_times.end_ms | Integer | TTS音频文件字结束时间戳,单位为 ms |
data.result.word_times.text | String | TTS音频文件字文本内容 |
# 响应样例
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状态查询(Qid)
# 接口描述
根据输入参数返回指定TTS请求的当前状态。
# 请求地址
POST
/api/voice/v3/tts/result
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
request_id | String | True | 请求ID |
# 请求样例
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
# 响应参数
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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 | Integer | TTS合成音频MP3文件音频时长,单位为 ms |
data.result.word_times | List | TTS音频字文件字级别时间戳 ,单位为 ms |
data.result.word_times.begin_ms | Integer | TTS音频文件字开始时间戳,单位为 ms |
data.result.word_times.end_ms | Integer | TTS音频文件字结束时间戳,单位为 ms |
data.result.word_times.text | String | TTS音频文件字文本内容 |
# 响应样例
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状态查询(旧)
注:该接口目前处理维护状态,不在更新新功能。建议使用Qid接口。
# 接口描述
根据输入参数返回指定TTS请求的当前状态。
# 请求地址
POST
/api/voice/v1/result/tts
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
request_id | String | True | 请求ID |
# 请求样例
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
# 响应参数
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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 | Integer | TTS合成音频MP3文件音频时长,单位为 ms |
data.result.word_times | List | TTS音频字文件字级别时间戳 ,单位为 ms |
data.result.word_times.begin_ms | Integer | TTS音频文件字开始时间戳,单位为 ms |
data.result.word_times.end_ms | Integer | TTS音频文件字结束时间戳,单位为 ms |
data.result.word_times.text | String | TTS音频文件字文本内容 |
# 响应样例
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/voice/v1/request/asr
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
audio_url | String | True | 待识别文本的音频文件URL |
timeout | Integer | False | 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回ASR结果,否则返回 request_id |
subtitle_max_length | Integer | False | 每行字幕最大长度,默认为0,即不限制长度 |
subtitle_cut_by_punc | Boolean | False | 是否根据标点符号对字幕进行切分换行,默认为false,即不切分 |
word_time | Boolean | False | 是否返回字级别时间戳,默认为false,即不返回 |
# 请求样例
{
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"timeout": 3000
}
# 响应元素
字段 | 类型 | 描述 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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 | Integer | ASR音频文件字开始时间戳,单位为 ms |
data.result.word_times.end_ms | Integer | ASR音频文件字结束时间戳,单位为 ms |
data.result.word_times.text | String | ASR音频文件字文本内容 |
# 响应样例
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状态查询
# 接口描述
根据输入参数返回指定ASR请求的当前状态。
# 请求地址
POST
/api/voice/v1/result/asr
# 请求参数
字段 | 类型 | 必填 | 描述 |
---|---|---|---|
request_id | String | True | 请求ID |
# 请求样例
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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 | Integer | ASR音频文件字开始时间戳,单位为 ms |
data.result.word_times.end_ms | Integer | ASR音频文件字结束时间戳,单位为 ms |
data.result.word_times.text | String | ASR音频文件字文本内容 |
# 响应样例
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": "戳"
} ]
}
}
}
# 发起多音字请求
# 接口描述
根据输入参数返回文本中是否包含多音字以及多音字对应的可选择发音。
# 请求地址
POST /api/voice/v1/request/polyphony
# 请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
query | String | True | 请求文本 |
format | string | false | 返回格式,支持 “pinyin” 和 “bopomofo”,默认为 “pinyin” |
timeout | Integer | False | 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回多音字结果,否则返回 request_id |
# 请求样例
{
"query": "待合成语音的文本内容xxxxxx",
"timeout": 3000
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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/voice/v1/result/polyphony
# 请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
request_id | String | True | 请求ID |
# 请求样例
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
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"
}
# 发起合成唱歌音频请求
# 接口描述
根据输入的唱歌音频,唱歌音频属性,指定的唱歌音色id,返回新的清唱的唱歌音频及背景音乐。
# 请求地址
POST /api/voice/v3/svc/request
# 请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
audio_url | String | True | 原始唱歌音频url |
sid | String | True | 唱歌音色id |
with_bgm | Boolean | False | 音频文件是否包含背景音乐,如包含背景音乐,将进行声源分离,并分别返回转换后的干音与背景音乐 |
pitch | Integer | False | 音高,数值越大越尖锐,越小越低沉,支持范围 [-12, 12];默认0 |
timeout | Integer | False | 同步等待任务完成的时间,单位为ms。如任务在时限内完成,直接返回结果,否则返回 request_id |
# 请求样例
{
"audio_url": "https://xxx.oss-cn-hangzhou.aliyuncs.com/xxx/audio1.mp3",
"sid": "sid1",
"with_bgm": true,
"pitch": 0,
"timeout": 0
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.request_id | String | 请求ID |
data.result | String | 结果音频,如任务在超时时间内完成,返回此字段,否则此字段为空{} |
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 时返回 |
# 响应样例
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"
}
}
}
# 合成唱歌音频状态查询
# 接口描述
根据输入参数返回指定合成唱歌音频请求的当前状态。
# 请求地址
POST /api/voice/v3/svc/result
# 请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
request_id | String | True | 请求ID |
# 请求样例
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.request_id | String | 请求ID |
data.result | String | 翻译请求结果,如在超时时间内返回,返回此字段,否则此字段为空{} |
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 时返回 |
# 响应样例
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"
}
}
}
# 发起翻译请求(暂不支持)
# 接口描述
根据输入的文本以及指定的目标语言,返回翻译后的文本内容。
# 请求地址
POST /api/voice/v1/request/translate
# 请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
query | String | True | 需要翻译的文本,要求在20万字符以内 |
to | String | True | 输出的文本语言代码,支持语言列表见下表 |
timeout | Integer | False | 等待返回的超时时间,单位为ms。如在超时时间内返回,直接返回翻译结果,否则返回 request_id |
# 语言列表
语言 | 语言代码 |
---|---|
阿尔巴尼亚语 | sq |
阿拉伯语 | ar |
亚美尼亚语 | hy |
阿塞拜疆语(拉丁语) | az |
保加利亚语 | bg |
粤语(繁体) | yue |
简体中文 | zh-Hans |
克罗地亚语 | hr |
捷克语 | cs |
丹麦语 | da |
荷兰语 | nl |
英语 | en |
爱沙尼亚语 | et |
菲律宾语 | fil |
芬兰语 | fi |
法语 | fr |
格鲁吉亚语 | ka |
德语 | de |
希腊语 | el |
希伯来语 | he |
匈牙利语 | hu |
冰岛语 | is |
印度尼西亚语 | id |
爱尔兰语 | ga |
意大利语 | it |
日语 | ja |
哈萨克语 | kk |
朝鲜语 | ko |
拉脱维亚语 | lv |
立陶宛语 | lt |
马来语(拉丁语系) | ms |
缅甸 | my |
尼泊尔语 | ne |
挪威语 | nb |
波斯语 | fa |
波兰语 | pl |
葡萄牙语 | pt-pt |
罗马尼亚语 | ro |
俄语 | ru |
斯洛伐克语 | sk |
斯洛文尼亚语 | sl |
西班牙语 | es |
瑞典语 | sv |
泰语 | th |
藏语 | bo |
土耳其语 | tr |
土库曼语(拉丁语) | tk |
乌克兰语 | uk |
维吾尔语(阿拉伯语) | ug |
乌兹别克语(拉丁文) | uz |
越南语 | vi |
# 请求样例
{
"query": "待翻译的文本内容xxxxxx",
"to": "en",
"timeout": 3000
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.request_id | String | 请求ID |
data.result | 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": "The text to translate"
}
}
# 翻译状态查询(暂不支持)
# 接口描述
根据输入参数返回指定翻译请求的当前状态。
# 请求地址
POST /api/voice/v1/result/translate
# 请求参数
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
request_id | String | True | 请求ID |
# 请求样例
{
"request_id": "99c3f13f-c2b7-4388-91ff-8f3244d2c5b7"
}
# 响应元素
字段 | 类型 | 说明 |
---|---|---|
code | Integer | code码,见状态表 |
message | String | 状态说明 |
data | Object | 结果数据 |
data.status | Integer | 状态,见状态表 |
data.request_id | String | 请求ID |
data.result | 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": "The text to translate"
}
}
# 状态表
# 语言检测相关状态
# TTS语言检测请求响应状态
code | 说明 |
---|---|
0 | 成功 |
x | 失败 |
status | 说明 |
---|---|
0 | 处理成功 |
3201 | 拒绝:必填参数缺失 |
3202 | 拒绝:非法的参数--请求文本为空 |
3301 | 请求失败:未能检测到语言 |
# 语言校验相关状态
# TTS语言校验请求响应状态
code | 说明 |
---|---|
0 | 成功 |
x | 失败 |
status | 说明 |
---|---|
0 | 处理成功 |
1201 | 拒绝:必填参数缺失 |
1202 | 拒绝:非法的参数--音色ID为空 |
1203 | 拒绝:非法的参数--请求文本为空 |
1204 | 拒绝:非法的参数--语言为空 |
1205 | 拒绝:非法的参数--音色ID不存在 |
1206 | 拒绝:非法的参数--未知的语言 |
1207 | 拒绝:非法的参数--未知的供应商 |
1301 | 请求失败:未能检测到语言 |
# 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 |
# 多音字相关状态
# 多音字请求响应状态
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 |
# 翻译相关状态
# 翻译请求响应状态
code | 说明 |
---|---|
0 | 成功 |
x | 失败 |
status | 说明 |
---|---|
0 | 请求成功 |
1000 | 处理中 |
3401 | 拒绝:必填参数缺失 |
3402 | 拒绝:非法的参数--请求文本为空 |
3403 | 拒绝:非法的参数--输出语言为空 |
3404 | 拒绝:非法的参数--翻译文本超过20w字 |
3501 | 请求失败,内部错误 |
3502 | 请求失败,请求超时 |
# 音色迁移请求响应状态
code | 说明 |
---|---|
0 | 成功 |
x | 失败 |
status | 说明 |
---|---|
0 | 处理成功 |
1000 | 处理中 |
1401 | 拒绝:必填参数缺失 |
1402 | 拒绝:非法的参数--音频 URL 为空 |
1403 | 拒绝:非法的参数--vc_id 不存在 |
1404 | 拒绝:非法的参数--音频时长超过10分钟 |
1502 | 请求失败:未连接到VC服务 |
1503 | 请求失败:VC服务内部错误 |
1504 | 请求失败:请求超时 |
1505 | 请求失败:下载音频错误 |
1506 | 请求失败:音频格式错误 |
# 音色迁移请求查询状态
code | 说明 |
---|---|
0 | 成功 |
x | 失败 |
status | 说明 |
---|---|
0 | 成功 |
1000 | 处理中 |
1404 | 拒绝:非法的参数--音频时长超过10分钟 |
1502 | 失败:未连接到VC服务 |
1503 | 失败:VC服务内部错误 |
1504 | 失败:请求超时 |
1505 | 失败:下载音频错误 |
1506 | 失败:音频格式错误 |
1507 | 失败:未知的request ID |
# 翻译请求查询状态
code | 说明 |
---|---|
0 | 成功 |
x | 失败 |
status | 说明 |
---|---|
0 | 成功 |
1000 | 处理中 |
3501 | 失败:内部错误 |
3502 | 失败:请求超时 |
3503 | 失败:未知的request ID |
# USSML语法说明
# 介绍
USSML(Unified Speech Synthesis Markup Language)旨在提供统一的 SSML(Speech Synthesis Markup Language)语法格式。USSML支持最常用的几个SSML标签:停顿、指定读音、替换合成文本和指定朗读方式,可以满足大部分的语音合成需求。
# 使用方式
# 语法格式
USSML 语法格式如下:
<speak sttts:version="0.1">
<break time="string" />
<phoneme ph="string"></phoneme>
<sub alias="string"></sub>
<say-as interpret-as="string"></say-as>
</speak>
除
# 特殊字符
在 USSML 中,如果使用了以下的特殊字符,需要进行转义,如下表所示。对于 USSML 标记本身的相关字符,则无需转义。
补充转译的例子。
特殊字符 | 转义字符 |
---|---|
& | & |
< | < |
> | > |
" | " |
' | ' |
# 标签说明
# <speak>
<speak>
标签是 USSML 的根标签,用于包裹所有的 USSML 标签。
属性 sttts:version
用于指定 USSML 的版本号,目前 USSML 的版本号为 0.1
。
<speak sttts:version="0.1">
<!-- USSML 标签 -->
</speak>
# <break>
<break>
标签用于指定停顿,其 time
属性用于指定停顿的时长。time
属性的值是一个字符串,单位为秒或毫秒。停顿的最大时长为5秒。不可以传输纯数字,需要有单位。例如:
<break time="5s" />
或
<break time="5000ms" />
# <phoneme>
<phoneme>
标签用于指定读音,其 ph
属性用于指定读音的内容。由于不同供应商支持语言范围不同,目前 USSML 中的 <phoneme>
仅支持汉语拼音。拼音用法:字与字的拼音用空格分隔,拼音的数目必须与字数相等。每个拼音由发音和音调组成,音调为1~5的数字编号,其中”5”表示轻声。例如:
<phoneme ph="mai2 mo4">埋没</phoneme>
# 示例
<speak sttts:version="0.1">
你说<phoneme ph="bo2">薄</phoneme>。
<break time="500ms" />
我说<phoneme ph="bao2">薄</phoneme>。
</speak>
# <sub>
<sub>
标签用于在合成过程中替换字幕文本。该标签的 ‘alias’ 属性用于指定要替换的文本内容。合成时,‘alias’ 属性所包含的文本将会取代原始文本进行合成,若有字幕,字幕内容为标签内的原始文本。
<sub>
标签内容与 ‘alias’ 属性的文本均不得为空。
例如:
<sub alias="World Wide Web Consortium">W3C</sub>
以上例子中,字幕显示为:W3C,朗读内容为:World Wide Web Consortium。
# <say-as>
<say-as>
标签允许您使用特定的朗读方式来合成标签内容。该标签的 ‘interpret-as’ 属性用于指定朗读方式。不同的供应商对相同的朗读方式可能产生略微不同的结果。
interpret-as 属性支持多种值,包括:
值 | 说明 | 样例 |
---|---|---|
cardinal | 按照数值方式进行发音 | “1487” 读作 “一千四百八十七” |
digit | 按数字串发音 | “12345” 读作 “一二三四五” |
phone | 按电话号码常用方式发音 | “1301001155” 读作 “幺三零幺零零幺幺五五” |
address | 按地址发音 | “市台路388-301号” 读作 “市台路三八八杠三零幺号” |
date | 按日期发音 | “1998-12-12” 读作 “一九九八年十二月十二日” |
clock | 按时刻发音 | “12:00:12” 读作 “十二点零分十二秒” |
# 示例
<say-as interpret-as="cardinal">12345</say-as>
示例 1:
<speak sttts:version="0.1">
你说<phoneme ph="bo2">薄</phoneme>。
<break time="500ms" />
我说<phoneme ph="bao2">薄</phoneme>。
</speak>
示例 2:
<speak sttts:version="0.1">
<sub alias="World Wide Web Consortium">W3C</sub>
是一个国际性的标准化组织。
</speak>
示例 3:
<speak sttts:version="0.1">
<sub alias="青岛啤酒">TsingTao</sub>
用河南话说就是,
<phoneme ph="qing2 dao1 pi4 jiu1">青岛啤酒</phoneme>。
<say-as interpret-as="cardinal">12345</say-as>
</speak>
以上即为平台提供的语音处理能力相关内容。