

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# テキストの送信と音声の受信
<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`、`VoiceId`、`OutputFormat`、およびオプションで `LanguageCode`、、) `LexiconNames`を指定します`SampleRate`。SDK は HTTP/2 接続を確立し、双方向ストリームは入力イベントを受け入れる準備ができています。

## テキストの送信
<a name="bidirectional-streaming-send"></a>

クライアントは、入力ストリームに 1 つ以上の [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 ドキュメントは 1 つの 内に自己完結する必要があります`TextEvent`。SSML タグを複数のイベントに分割することはできません。ただし、プレーンテキストイベントと SSML イベントを同じストリーム内で混在させることができます。

ストリームには、次の時間制限が適用されます。
+ **最大ストリーム時間: **10 分。Amazon Polly は、アクティビティに関係なく 10 分後にストリームを閉じます。コンテンツにさらに時間がかかる場合は、残りのテキスト用に新しいストリームを開きます。
+ **連続するイベント間のアイドルタイムアウト**: 5 秒。入力イベントが 5 秒間送信されない場合、Amazon Polly はストリームを閉じます。テキストソースの一時停止時間が 5 秒を超える場合は、タイムアウトを防ぐために、空の文字列または空白`TextEvent`文字列を使用してキープアライブを送信します。

### フラッシュによるバッファテキストの強制合成
<a name="bidirectional-streaming-flush"></a>

デフォルトでは、Amazon Polly は自然言語の境界に基づいてバッファされたテキストをいつ合成するかを決定します。これにより、最高のオーディオ品質が得られますが、 を送信した直後にオーディオが返されない可能性があります`TextEvent`。

フラッシュにより、合成が発生するタイミングを制御できます。フラッシュすると、Amazon Polly は、テキストが自然な境界で終わるかどうかに関係なく、バッファされたすべてのテキストをすぐに合成します。これは、テキストソースが論理セクション間で一時停止し、これまでに送信された音声を配信する場合に便利です。

フラッシュするには、[FlushStreamConfiguration](https://docs.aws.amazon.com/polly/latest/dg/API_FlushStreamConfiguration.html) `Force`パラメータを `true` で に設定します`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)を参照してください。