動態配置 Text to Speech 服務

藉由 IBM® Voice Gateway API,您可以在通話期間動態配置 Text to Speech 服務。如果要變更配置,請在 Watson Assistant 對話樹狀結構中,於節點回應的 output 中,定義 vgwActSetTTSConfig 動作。如需使用 API 的相關資訊,請參閱定義動作標籤和狀態變數

下列範例顯示在 Watson Assistant 對話樹狀結構中,可新增至節點回應的配置。這些設定會當成 JSON 內容,透通地傳遞給 Text to Speech 服務。

{
  "output": {
    "vgwAction": {
      "command": "vgwActSetTTSConfig",
      "parameters": {
              "credentials": {
                "url": "https://stream.watsonplatform.net/text-to-speech/api",
                "username": "9h7f54cb-5epb-80d6-45c3-da41d2bf7a71",
                "password": "asxNzDLpIJ6F"
              },
              "config": {
                  "x-watson-learning-opt-out": true,
                  "voice": "es-ES_LauraVoice"
              },
              "jitterBufferDelay": 200,
              "connectionTimeout": 30,
              "requestTimeout": 10,
              "cacheTimeToLive": 336
          }
    }
  }
}
表 1. Text to Speech 服務的 JSON 內容
JSON 內容 說明
credentials Watson Text to Speech 服務的認證。若未定義,則會使用 Media Relay 配置中的預設認證。若為 1.0.0.5a 版及更新版本,您也可以配置 tokenAuthEnabled 認證來啟用記號鑑別,以減少通話延遲時間。請參閱啟用 Watson 服務的使用者名稱和密碼型記號鑑別
config Watson Text to Speech 服務的參數。請參閱 Watson Text to Speech 服務的 WebSockets API 參照
jitterBufferDelay 從 Text to Speech 服務播放音訊之前的緩衝時間量(毫秒)。這項緩衝會計入多媒體串流音訊中的任何抖動。若未定義,會使用 Media Relay 配置中的 WATSON_TTS_JITTER_BUFFER_DELAY 值。
connectionTimeout Voice Gateway 在與 Watson Text to Speech 服務建立 Socket 連線時,要等待的秒數。如果超過時間,Voice Gateway 會重新嘗試連接 Watson Text to Speech 服務。如果仍無法連到服務,則通話失敗。1.0.0.5 版及更新版本。
requestTimeout Voice Gateway 在與 Watson Text to Speech 服務建立語音合成階段作業時,要等待的秒數。如果超過時間,Voice Gateway 會重新嘗試連接 Watson Text to Speech 服務。如果仍無法連到服務,則通話失敗。1.0.0.5 版及更新版本。
cacheTimeToLive 為了改善播放回應時間而將 Text to Speech 服務回應快取的時間(小時)。如果啟用,會快取所有的 Text to Speech 回應(除非在 Watson Assistant 對話中排除它們)。若未定義,會使用 Media Relay 配置中的 TTS_CACHE_TIME_TO_LIVE 值。
updateMethod 選用。指定在設定語音配置時,要選擇的更新策略。可能的值:
  • replace
  • replaceOnce
  • merge
  • mergeOnce
請參閱使用 updateMethod。1.0.0.7 版及更新版本。

附註:無法修改下列這些來自 Text to Speech 服務的參數,因為它們具有 Media Relay 使用的固定值。

範例:設定 Text to Speech 語音 (en-US_LisaVoice)

在本例中,語音設為 en-US_LisaVoice。由於未定義 credentials 內容,Media Relay 將使用透過 Media Relay 配置WATSON_TTS_URLWATSON_TTS_USERNAMEWATSON_TTS_PASSWORD)所定義的認證。

{
  "output": {
    "vgwAction": {
      "command": "vgwActSetTTSConfig",
      "parameters": {
              "config": {
                  "voice": "en-US_LisaVoice"
              }
          }
    }
  }
}

使用 updateMethod

您可以在動態配置中使用 updateMethod 內容,來定義如何變更配置,作法是取代配置或合併新的配置內容,並且指定這些變更是發生在通話期間還是某一回交談中。

表 2. 使用 updateMethod 時,可用來更新內容的選項。
JSON 內容 說明
replace 在通話期間取代配置。
replaceOnce 只取代一次配置,以便將該配置僅用於下一回交談。之後便回復成先前的配置。
merge 在通話期間,將該配置與現有的配置合併。
mergeOnce 在某一回交談中合併配置,之後便回復成先前的配置。

更新非根層次的欄位

當您從 Watson Assistant 來動態配置時,請務必注意,只有根層次欄位(例如 configbargeInResume)才會更新。如果在動作中省略它們,則會持續保存原始的配置設定。您可以使用 updateMethod 的不同 mergemergeOnce 內容,將 config 欄位與現有的配置合併在一起。

已淘汰:定義狀態變數以配置 Text to Speech 服務

在 1.0.0.2 版中,為了支持使用前述章節中的動作標籤,不再藉由定義狀態變數來配置 Watson 語音服務(該方法已遭淘汰)。

重要事項:雖然這些狀態變數仍可繼續運作,但是您無法在節點內定義這些已淘汰的狀態變數和動作標籤。您的 Watson Assistant 對話中可以混合了動作標籤和已淘汰的狀態變數,但是每一個節點的 JSON 定義只能含有其中的一個。

{
    "context": {
        "vgwTTSConfigSettings":{
            "credentials": {
              "url": "https://stream.watsonplatform.net/text-to-speech/api",
              "username": "9h7f54cb-5epb-80d6-45c3-da41d2bf7a71",
              "password": "asxNzDLpIJ6F"
            },
            "config": {
                "x-watson-learning-opt-out": true,
                "voice": "es-ES_LauraVoice"
            },
            "jitterBufferDelay": 200,
            "cacheTimeToLive": 336
        }
    }
}
表 2. Text to Speech 服務的 JSON 內容
JSON 內容 說明
credentials Watson Text to Speech 服務的認證。若未定義,則會使用 Media Relay 配置中的預設認證。
config Watson Text to Speech 服務的參數。請參閱 Watson Text to Speech 服務的 WebSockets API 參照
jitterBufferDelay 從 Text to Speech 服務播放音訊之前的緩衝時間量(毫秒)。這項緩衝會計入多媒體串流音訊中的任何抖動。若未定義,會使用 Media Relay 配置中的 WATSON_TTS_JITTER_BUFFER_DELAY 值。
cacheTimeToLive 為了改善播放回應時間而將 Text to Speech 服務回應快取的時間(小時)。如果啟用,會快取所有的 Text to Speech 回應(除非在 Watson Assistant 對話中排除它們)。若未定義,會使用 Media Relay 配置中的 TTS_CACHE_TIME_TO_LIVE 值。1.0.0.1 版及更新版本。