文件
TTS_多國語言語音合成-Sync v3:
TTS Speeches v3
提供語音轉文字,讓您將多國文本藉由 REST API 轉換為合成語音,並且支援自然的的聲調與特定語言,接下來說明如何用 http request 來取得文字轉語音服務。
您可以在這個 Demo 測試網站輸入金鑰進行測試:https://taiwanailabs-yating.github.io/asr-streaming-js-demo/
Host: https://tts.api.yating.tw
送出語音合成需求
在處理完所有輸入後,一般情況下,回應時間低於 120 秒。
Request
URL: /v3/speeches/synchronize
Method: POST
Header
Name | Type | Info |
---|---|---|
*key | String | |
*Content-Type | String | Only “application/json” |
Body
Name | Type | Info |
---|---|---|
*input | JSON | 1. text: 要生成音頻的文本。 如果是一般文字內容,最大文本長度為 600 個字符。如果是 ssml,則對大長度為 5000 個字符。請注意,一個中文字用 2 個字符計算,全形符號兩個字符,半形符號與空格一個字符。 2. type: 請放入 text 或是 ssml. |
*voice | JSON | 有關聲音的設定請看「voice 設定」 |
*audioConfig | JSON | 有關產出的聲音格式請看「audioConfig 設定」 |
Input設定
Variables | Type | Info |
---|---|---|
*text | String | 需要轉換成聲音的文字內容 |
*type | String | 輸入內容的格式,目前支援text與ssml 輸入的本文可以是純文字或是SSML(如果你想要語音內容多一點變化與彈性)。 有關 SSML 支援的功能,請看這裡。 |
Voice設定
Variables | Type | Info |
---|---|---|
*model | String | 系統支援的語者模型,放入指定的聲音模型,除支援以下模型外,可帶入由 /cloning/speaker 取得的 speaker id 如下方表格 speaker_id from /cloning/speaker |
*lang | string | 語言列表 英文(en_us) 日文 (ja_jp) 法文 (fr_fr) 德文 (de_de) 韓文 (ko_kr) 波蘭文 (pl_pl) 葡萄牙文 (pt_br) 俄文 (ru_ru) 西班牙文 (es_es) 印尼文(id_id) 瑞典文(sv_se) 泰文(th_th) 土耳其文(tr_tr) 越南文(vi_vn) 匈牙利文 (hu_hu) 義大利文 (it_it) 中文 (zh_tw) |
Model列表
YATING | female_1 |
YIRU | female_2 |
JARVIS | male_1 |
BARRET | male_2 |
AudioConfig設定
Variables | Type | Info |
---|---|---|
encoding | string | 查看「音訊編碼」 |
maxLength | int | 音檔最長長度(ms),文字產生之音檔超過最長長度時,將會縮短壓縮至指定長度。 |
uploadFile | boolean | false 直接回覆音訊編碼; true 回覆音檔連結,僅保留 24小時。 |
AudioConfig 中的 Encoding 音訊編碼設定
除了聲音類型,還可以選擇音頻輸出格式。 目前支持 MP3 和 LINEAR16。
Codec | Name | Note |
---|---|---|
LINEAR16 | Linear PCM | WAV音檔編碼格式。16 位線性脈衝編碼調製 (PCM) 編碼。 標頭必須包含採樣率。 |
MP3 | MP3(即將支援) | MP3 格式(即將支援) |
Request Body Example
{
"input": {
"text": "天下國際週報",
"type": "text"
},
"voice": {
"model": "female_1",
"lang": "zh_tw"
},
"audioConfig": {
"encoding": "LINEAR16",
"maxLength": 600000,
"uploadFile": false
}
}
Success Response Body Example("uploadFile": true)
{
"uid": "484bb379-9c8e-4a37-99dd-4906852edff3",
"inputText": "天下國際週報",
"inputType": "text",
"voiceModel": "female_1",
"voiceLang": "zh_tw",
"audioEncoding": "LINEAR16",
"audioMaxLength": 600000,
"status": "completed",
"audioFile": {
"fileName": "c81405ae-4d93-400a-8093-531cf4913b8f_speed_up.wav",
"fileHash": "99757fc4f19ae1767b24b254588aa5e79de82b67",
"url": "https://tts.api.yating.tw/tts-files/tts-public/tts-audio/c81405ae-4d93-400a-8093-531cf4913b8f_speed_up.wav?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20240513%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240513T095629Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=44b0b9df46dd7077393904afdcbdbb91807805bdecef9295d413c3a6f43fc824",
"expiredAt": "",
"errorMessage": ""
}
}
Success Response Body Example("uploadFile": false)
{
"uid": "484bb379-9c8e-4a37-99dd-4906852edff3",
"inputText": "天下國際週報",
"inputType": "text",
"voiceModel": "female_1",
"voiceLang": "zh_tw",
"audioEncoding": "LINEAR16",
"audioMaxLength": 600000,
"status": "completed",
"audioFile": {
"fileName": "48bc2337-0b42-461c-8424-802f5c6ca853_speed_up.wav",
"fileHash": "58a26459a8f3dfe5f8d166b7efa064194e29dae9",
"url": "",
"expiredAt": "",
"errorMessage": "",
"audioContent": "UklGRjZ5AQBXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAATElTVBoAAABJTkZPSVNGVA4AAABMYXZmNTguNzYuMTAwAGRhdGHweAEAAQAAAAIABgAIAA0AEgASAAkA/v/x//L//f8HAAgA/...."
}
}
Failure Response Body Example
{
statusCode: 400,
message: string[],
error: "Bad Request"
}
- [201] created, 可以在
audioContent
裡取得 base64 加密後的音檔內容,解密後存入檔案內即可播放。 - [400] invalid request format: request 參數不符合規定,如輸入的聲音編碼不存在,sampleRate不支援
- [401] unauthorized: 密鑰不存在或超出限制。
- [422] pipeline error: 請查看下表(管道錯誤消息)以獲取更多詳細信息。
- [500] internal server error
Pipeline Error message
error message | type | Info |
---|---|---|
internal pipeline error: unknown payload [for reqId(...) segId(...)] | Internal pipeline error | |
internal pipeline error: inferencer unavailable | Internal pipeline error | |
ssml validation error: no text to synthesis | Ssml validation error | 輸入一個空的 SSML |
ssml validation error: parsing error at line: {line}, column: {col}: {msg} | Ssml validation error | SSML 文法錯誤 |
ssml validation error: context error at line: {line}, column: {col}: {msg} | Ssml validation error | |
encoding error: encode error for reqId(...) segId(...) | Encoding error | 編碼器成功接收並處理消息,但過程中出現錯誤。 |
vocoding error: vocode error for reqId(...) segId(...) | Vocoding error | 聲碼器成功接收並處理了 msg,但過程中出現了錯誤。 |
unknown error | Unknown error | 未知錯誤 |
service busy | Service busy | 系統目前忙碌,請稍後再試。 |
限制
- 每個key的最大同時需求處理數:3
More voices
SSB0005 | SSB0426 | SSB0863 | SSB1607 | p253 | p307 |
SSB0009 | SSB0427 | SSB0871 | SSB1624 | p254 | p308 |
SSB0011 | SSB0434 | SSB0887 | SSB1625 | p255 | p310 |
SSB0012 | SSB0435 | SSB0913 | SSB1630 | p256 | p311 |
SSB0016 | SSB0470 | SSB0915 | SSB1650 | p257 | p312 |
SSB0018 | SSB0482 | SSB0919 | SSB1670 | p258 | p313 |
SSB0033 | SSB0502 | SSB0935 | SSB1684 | p259 | p314 |
SSB0038 | SSB0534 | SSB0966 | SSB1686 | p260 | p315 |
SSB0043 | SSB0535 | SSB0987 | SSB1699 | p261 | p316 |
SSB0057 | SSB0539 | SSB1008 | SSB1711 | p262 | p317 |
SSB0073 | SSB0544 | SSB1020 | SSB1759 | p263 | p318 |
SSB0080 | SSB0565 | SSB1024 | SSB1806 | p264 | p323 |
SSB0112 | SSB0570 | SSB1050 | SSB1828 | p265 | p326 |
SSB0122 | SSB0578 | SSB1055 | SSB1831 | p266 | p329 |
SSB0133 | SSB0588 | SSB1056 | SSB1832 | p267 | p330 |
SSB0139 | SSB0590 | SSB1064 | SSB1837 | p268 | p333 |
SSB0145 | SSB0594 | SSB1072 | SSB1846 | p269 | p334 |
SSB0149 | SSB0599 | SSB1091 | SSB1863 | p270 | p335 |
SSB0193 | SSB0601 | SSB1096 | SSB1878 | p271 | p336 |
SSB0197 | SSB0603 | SSB1100 | SSB1891 | p272 | p339 |
SSB0200 | SSB0606 | SSB1108 | SSB1918 | p273 | p340 |
SSB0241 | SSB0607 | SSB1115 | SSB1935 | p274 | p341 |
SSB0246 | SSB0609 | SSB1125 | SSB1939 | p275 | p343 |
SSB0261 | SSB0614 | SSB1131 | SSB1956 | p276 | p345 |
SSB0267 | SSB0623 | SSB1136 | p225 | p277 | p347 |
SSB0273 | SSB0629 | SSB1138 | p226 | p278 | p351 |
SSB0287 | SSB0631 | SSB1161 | p227 | p279 | p360 |
SSB0288 | SSB0632 | SSB1203 | p228 | p280 | p361 |
SSB0299 | SSB0666 | SSB1204 | p229 | p281 | p362 |
SSB0307 | SSB0668 | SSB1218 | p230 | p282 | p363 |
SSB0309 | SSB0671 | SSB1221 | p231 | p283 | p364 |
SSB0315 | SSB0686 | SSB1253 | p232 | p284 | p374 |
SSB0316 | SSB0700 | SSB1320 | p233 | p285 | p376 |
SSB0323 | SSB0710 | SSB1341 | p234 | p286 | s5 |
SSB0338 | SSB0720 | SSB1366 | p236 | p287 | SSB0339 |
SSB0723 | SSB1377 | p237 | p288 | SSB0341 | SSB0737 |
SSB1383 | p238 | p292 | SSB0342 | SSB0746 | SSB1385 |
p239 | p293 | SSB0354 | SSB0748 | SSB1392 | p240 |
p294 | SSB0366 | SSB0751 | SSB1393 | p241 | p295 |
SSB0375 | SSB0758 | SSB1408 | p243 | p297 | SSB0379 |
SSB0760 | SSB1431 | p244 | p298 | SSB0380 | SSB0762 |
SSB1437 | p245 | p299 | SSB0382 | SSB0778 | SSB1448 |
p246 | p300 | SSB0385 | SSB0780 | SSB1555 | p247 |
p301 | SSB0393 | SSB0784 | SSB1563 | p248 | p302 |
SSB0394 | SSB0786 | SSB1567 | p249 | p303 | SSB0395 |
SSB0794 | SSB1575 | p250 | p304 | SSB0407 | SSB0817 |
SSB1585 | p251 | p305 | SSB0415 | SSB0851 | SSB1593 |
p252 | p306 |