文件

TTS_語音合成v2:制式AI聲音

TTS Speeches v2

提供語音轉文字,讓您將文本藉由 REST API 轉換為合成語音,並且支援自然的的聲調與特定語言,接下來說明如何用 http request 來取得文字轉語音服務。

Host: https://tts.api.yating.tw

Step1:使用 /speeches/short

Step2:透過 base64 解碼audioContent並存成音檔

可參考 GitHub by Yating 取得 sample code,來進行串接。


送出語音合成需求

在處理完所有輸入後,一般情況下,回應時間低於 120 秒。

Request

URL: /v2/speeches/short
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 這邊要放入你要的聲音類型,請看「聲音代碼列表」
*speed number 語速
介於 0.5~1.5之間
數值越小,音檔長度越短,速度越快
數值越大,音檔長度越長,速度越慢
*pitch number 音調
介於 0.5~1.5之間
數值越大,音調越高,聽起來較尖銳
數值越小,音調越低,聽起來較低沈
*energy number 能量
介於 0.5~1.5之間
模型發音的力度
建議使用預設值1

Voice中Model設定
目前支援兩種女性聲音(雅婷、意晴)與一種男性聲音(家豪),選擇你要的聲音並設定。

Variables Type Info
zh_en_female_1 Female1 (Yating) 雅婷AI人聲
Mandarin and English, support 22K/16K
zh_en_male_1 Male1 (Jiahao) 家豪AI人聲
Mandarin and English, support 22K/16K
zh_en_female_2 Female2 (Yiqing) 意晴AI人聲
Mandarin and English, support 22K/16K
zh_en_male_2 Male2 (Zhiming) 志明AI人聲
Mandarin and English, support 22K
tai_female_1 Female1 (Yating) 雅婷AI人聲
Taiwanese, support 16K
tai_male_1 Male1 (Jiahao) 家豪AI人聲
Taiwanese, support 16K
tai_female_2 Female2 (Yiqing) 意晴AI人聲
Taiwanese, support 16K

AudioConfig設定

Variables Type Info
*encoding String 查看「音訊編碼」
*sampleRate String 支援
16K
22K
越高的 sample rate,可以提供更加擬真的聲音

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":"zh_en_female_2",
      "speed":0.8,
      "pitch":1.3,
      "energy":1.0
   },
   "audioConfig":{
      "encoding":"LINEAR16",
      "sampleRate":"22K"
   }
}

Success Response Body Example

{
   "audioContent":"//NExAARqoIIAAhEuWAAAGNmBGMY4EBcxvABAXBPmPIAF3/o...",
   "audioConfig":{
      "encoding":"LINEAR16",
      "sampleRate":"22K"
   }
}

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