# 語音處理
平臺在多元素整合的視頻合成基礎能力之外,還另外提供語音處理的相關能力,支持用戶對于視頻合成的語音相關內容進行預處理,提供多項能力,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>
以上即爲平臺提供的語音處理能力相關內容。