

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 傳送文字和接收音訊
<a name="bidirectional-streaming-lifecycle"></a>

雙向串流工作階段涉及開啟連線、同時傳送文字和接收音訊，然後在輸入完成時關閉串流。下列各節詳細說明每個階段。

## 開啟串流
<a name="bidirectional-streaming-open"></a>

您的應用程式會透過 SDK 呼叫 [StartSpeechSynthesisStream](https://docs.aws.amazon.com/polly/latest/dg/API_StartSpeechSynthesisStream.html) 操作，指定合成參數 (`Engine`、`OutputFormat`、 `VoiceId`和選用的 `LanguageCode`、`LexiconNames`、)`SampleRate`。開發套件會建立 HTTP/2 連線，且雙向串流已準備好接受輸入事件。

## 傳送文字
<a name="bidirectional-streaming-send"></a>

用戶端會在輸入串流上傳送一或多個 [TextEvent](https://docs.aws.amazon.com/polly/latest/dg/API_TextEvent.html) 訊息。每個事件都可以在文字可用時立即傳送，而無需等待完整輸入就緒。文字事件不需要符合句子或標點符號邊界。Amazon Polly 會在內部重新組合文字，並產生自然聲音語音，無論輸入在事件中分割的方式為何。

**注意**  
使用 [SSML](https://docs.aws.amazon.com/polly/latest/dg/ssml.html) 時，每個 SSML 文件都必須在單一 中獨立。 `TextEvent`您無法跨多個事件分割 SSML 標籤。不過，您可以在相同的串流中混合純文字事件和 SSML 事件。

串流受到下列時間限制：
+ **串流持續時間上限**：10 分鐘。無論活動為何，Amazon Polly 會在 10 分鐘後關閉串流。如果您的內容需要更多時間，請為剩餘的文字開啟新的串流。
+ **連續事件之間的閒置逾時**：5 秒。如果 5 秒內沒有傳送輸入事件，Amazon Polly 會關閉串流。如果您的文字來源暫停超過 5 秒，請傳送`TextEvent`具有空白或空格字串的保持連線，以防止逾時。

### 強制合成緩衝文字與排清
<a name="bidirectional-streaming-flush"></a>

根據預設，Amazon Polly 會根據自然語言界限決定何時合成緩衝文字。這會產生最佳的音訊品質，但表示傳送 後可能不會立即傳回音訊`TextEvent`。

排清可讓您控制合成發生的時間。當您排清時，Amazon Polly 會立即合成到目前為止緩衝的所有文字，無論文字是否在自然界限結束。當您的文字來源在邏輯區段之間暫停，而且您想要為到目前為止傳送的內容交付音訊時，這會很有用。

若要排清，請在 `true`上將 [FlushStreamConfiguration](https://docs.aws.amazon.com/polly/latest/dg/API_FlushStreamConfiguration.html).`Force` 參數設定為 `TextEvent`。您也可以傳送具有排清旗標的空白 來觸發合成`TextEvent`，而不新增新內容。

排清是權衡。`Force` 設定為`true`中音可能會影響發音和語調，因為合成器缺乏以下內容的內容。為了獲得最佳結果，允許 Amazon Polly 盡可能緩衝至自然界限，並只在延遲需求需要時強制合成。

## 接收音訊
<a name="bidirectional-streaming-receive"></a>

當 Amazon Polly 合成文字時，它會傳回輸出串流上的 [AudioEvent](https://docs.aws.amazon.com/polly/latest/dg/API_AudioEvent.html) 訊息。每個事件都包含音訊資料區塊。您的應用程式必須累積這些區塊 （例如，將它們依序寫入檔案或音訊緩衝區），才能產生完整的音訊輸出。當您仍在傳送文字事件時，音訊事件可能會抵達。

## 關閉串流
<a name="bidirectional-streaming-close"></a>

傳送所有輸入文字後，用戶端會傳送 [CloseStreamEvent](https://docs.aws.amazon.com/polly/latest/dg/API_CloseStreamEvent.html)。Amazon Polly 完成處理任何剩餘的緩衝文字，傳送最終音訊事件，並傳回包含合成字元總數的 [StreamClosedEvent](https://docs.aws.amazon.com/polly/latest/dg/API_StreamClosedEvent.html)。一律傳送 ，`CloseStreamEvent`而不是依賴排清來結束串流。關閉可確保合成並傳回所有緩衝文字。

如需請求參數、事件類型和錯誤的完整詳細資訊，請參閱 [StartSpeechSynthesisStream API 參考](https://docs.aws.amazon.com/polly/latest/dg/API_StartSpeechSynthesisStream.html)。