動態配置 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
}
}
}
}
| 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 |
選用。指定在設定語音配置時,要選擇的更新策略。可能的值:
updateMethod。1.0.0.7 版及更新版本。 |
附註:無法修改下列這些來自 Text to Speech 服務的參數,因為它們具有 Media Relay 使用的固定值。
accepttext
範例:設定 Text to Speech 語音 (en-US_LisaVoice)
在本例中,語音設為 en-US_LisaVoice。由於未定義 credentials 內容,Media Relay 將使用透過 Media Relay 配置(WATSON_TTS_URL、WATSON_TTS_USERNAME 和 WATSON_TTS_PASSWORD)所定義的認證。
{
"output": {
"vgwAction": {
"command": "vgwActSetTTSConfig",
"parameters": {
"config": {
"voice": "en-US_LisaVoice"
}
}
}
}
}
使用 updateMethod
您可以在動態配置中使用 updateMethod 內容,來定義如何變更配置,作法是取代配置或合併新的配置內容,並且指定這些變更是發生在通話期間還是某一回交談中。
| JSON 內容 | 說明 |
|---|---|
| replace | 在通話期間取代配置。 |
| replaceOnce | 只取代一次配置,以便將該配置僅用於下一回交談。之後便回復成先前的配置。 |
| merge | 在通話期間,將該配置與現有的配置合併。 |
| mergeOnce | 在某一回交談中合併配置,之後便回復成先前的配置。 |
更新非根層次的欄位
當您從 Watson Assistant 來動態配置時,請務必注意,只有根層次欄位(例如 config 或 bargeInResume)才會更新。如果在動作中省略它們,則會持續保存原始的配置設定。您可以使用 updateMethod 的不同 merge 和 mergeOnce 內容,將 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
}
}
}
| 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 版及更新版本。 |