本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
傳送文字和接收音訊
雙向串流工作階段涉及開啟連線、同時傳送文字和接收音訊,然後在輸入完成時關閉串流。下列各節詳細說明每個階段。
開啟串流
您的應用程式會透過 SDK 呼叫 StartSpeechSynthesisStream 操作,指定合成參數 (Engine、OutputFormat、 VoiceId和選用的 LanguageCode、LexiconNames、)SampleRate。開發套件會建立 HTTP/2 連線,且雙向串流已準備好接受輸入事件。
傳送文字
用戶端會在輸入串流上傳送一或多個 TextEvent 訊息。每個事件都可以在文字可用時立即傳送,而無需等待完整輸入就緒。文字事件不需要符合句子或標點符號邊界。Amazon Polly 會在內部重新組合文字,並產生自然聲音語音,無論輸入在事件中分割的方式為何。
注意
使用 SSML 時,每個 SSML 文件都必須在單一 中獨立。 TextEvent您無法跨多個事件分割 SSML 標籤。不過,您可以在相同的串流中混合純文字事件和 SSML 事件。
串流受到下列時間限制:
-
串流持續時間上限:10 分鐘。無論活動為何,Amazon Polly 會在 10 分鐘後關閉串流。如果您的內容需要更多時間,請為剩餘的文字開啟新的串流。
-
連續事件之間的閒置逾時:5 秒。如果 5 秒內沒有傳送輸入事件,Amazon Polly 會關閉串流。如果您的文字來源暫停超過 5 秒,請傳送
TextEvent具有空白或空格字串的保持連線,以防止逾時。
強制合成緩衝文字與排清
根據預設,Amazon Polly 會根據自然語言界限決定何時合成緩衝文字。這會產生最佳的音訊品質,但表示傳送 後可能不會立即傳回音訊TextEvent。
排清可讓您控制合成發生的時間。當您排清時,Amazon Polly 會立即合成到目前為止緩衝的所有文字,無論文字是否在自然界限結束。當您的文字來源在邏輯區段之間暫停,而且您想要為到目前為止傳送的內容交付音訊時,這會很有用。
若要排清,請在 true上將 FlushStreamConfiguration.Force 參數設定為 TextEvent。您也可以傳送具有排清旗標的空白 來觸發合成TextEvent,而不新增新內容。
排清是權衡。Force 設定為true中音可能會影響發音和語調,因為合成器缺乏以下內容的內容。為了獲得最佳結果,允許 Amazon Polly 盡可能緩衝至自然界限,並只在延遲需求需要時強制合成。
接收音訊
當 Amazon Polly 合成文字時,它會傳回輸出串流上的 AudioEvent 訊息。每個事件都包含音訊資料區塊。您的應用程式必須累積這些區塊 (例如,將它們依序寫入檔案或音訊緩衝區),才能產生完整的音訊輸出。當您仍在傳送文字事件時,音訊事件可能會抵達。
關閉串流
傳送所有輸入文字後,用戶端會傳送 CloseStreamEvent。Amazon Polly 完成處理任何剩餘的緩衝文字,傳送最終音訊事件,並傳回包含合成字元總數的 StreamClosedEvent。一律傳送 ,CloseStreamEvent而不是依賴排清來結束串流。關閉可確保合成並傳回所有緩衝文字。
如需請求參數、事件類型和錯誤的完整詳細資訊,請參閱 StartSpeechSynthesisStream API 參考。