音声アクティビティ イベントは、ストリーム全体で音声の開始または終了が検知された時刻を示します。このイベントは、Speech-to-Text で検出されるとリアルタイムで送信されます。音声アクティビティ イベントは、ユーザーが発話を開始または終了した時点の自動検出に依存するアプリケーション開発に便利です。Speech-to-Text では、音声アクティビティに基づいてストリームを自動的に閉じるように構成することもできます。
音声アクティビティ イベントは、StreamingRecognize の gRPC リクエストでのみ使用できます。
音声アクティビティ イベントを有効にする
音声アクティビティ レスポンスの受信を有効にするには、streaming_features
メッセージで enable_voice_activity_events
フラグを true に設定します。
音声アクティビティ イベントのタイプ
通常、Speech-to-Text がストリーミング中に音声の開始または停止を検出すると、音声アクティビティ イベントがリアルタイムで返されます。これらは、対応する音声部分の音声文字変換の結果の前に返されます。音声文字変換の結果が空の音声に対して、音声アクティビティ イベントを送信できます。
音声アクティビティの開始
Speech-to-Text が音声の開始を検出したときに送信されます。
{ "speechEventType": "SPEECH_ACTIVITY_BEGIN", "speechEventOffset": "1.070s" }
音声アクティビティの終了
Speech-to-Text が音声の終了を検出したときに送信されます。
{ "speechEventType": "SPEECH_ACTIVITY_END", "speechEventOffset": "1.070s" }
SPEECH_ACTIVITY_END
イベントは送信されません。
音声アクティビティのタイムアウトを有効にする
音声アクティビティのタイムアウトを有効にするには、streaming_features
の voice_activity_timeout
メッセージに値を設定します。音声アクティビティ タイムアウトは 500 ミリ秒より長く、60 秒未満にする必要があります。音声の開始と終了のタイムアウトは個別に設定できます。
音声開始のタイムアウト
音声開始のタイムアウトが設定されている場合、タイムアウトの前に音声が開始しないと、Speech-to-Text はストリームを自動的に終了します。SPEECH_ACTIVITY_START
イベントが検出されて返されると、ストリーム中にタイムアウトがキャンセルされます。この機能は、ユーザーが一定時間内に発話を開始するように指定しているアプリケーションに便利です。
音声終了のタイムアウト
音声終了のタイムアウトが設定されている場合、SPEECH_ACTIVITY_END
イベント後のタイムアウト時間内にさらに音声が検出されないと、Speech-to-Text は自動的にストリームを終了します。SPEECH_ACTIVITY_START
イベントが検出されて返されるとタイムアウトはキャンセルされます。SPEECH_ACTIVITY_END
イベントが送信されると再びタイムアウトが開始します。
タイムアウトの時間測定
経過時間は、サーバー時間ではなく、Speech-to-Text へのリクエストで送信された音声のバイトによって測定されます。これにより、ストリーム送信が変動しても精度を維持できます。リクエストで非常に大きな音声チャンクを送信したり、短時間に連続してリクエストを送信すると、タイムアウト測定の精度が低下します。注: 音声チャンクのサイズの上限は、リクエストごとに 15,360 バイトです。