Cloud Speech-to-Text の基本

このドキュメントでは、Cloud Speech-to-Text の基本について説明します。取り上げる内容は、Speech-to-Text に対するリクエストの種類、それらのリクエストの作成方法、リクエストに対するレスポンスの処理方法です。Speech-to-Text を使用するすべてのユーザーに、実際に API を使用する前にこのガイドと関連チュートリアルのいずれかを参照することをおすすめします。

Speech リクエスト

Speech-to-Text には 3 つの主要な音声認識方法があります。3 つの方法は次のとおりです。

  • 同期認識(REST および gRPC)では、音声データを Speech-to-Text API に送信してデータの認識を行い、すべての音声が処理されたら結果を返します。同期認識リクエストは、時間が 1 分以内の音声データに制限されます。

  • 非同期認識(REST および gRPC)では、音声データを Speech-to-Text API に送信し、長時間実行オペレーションを開始します。このオペレーションを使用することで、認識結果を定期的にポーリングできます。非同期認識リクエストは長さ 480 分までの音声データに使用します。

  • ストリーミング認識(gRPC のみ)では gRPC 双方向ストリームで提供された音声データの認識を行います。ストリーミング リクエストは、マイクからのライブ音声のキャプチャなどのリアルタイムの認識を目的として設計されています。ストリーミング認識では、音声をキャプチャしながら暫定的な結果を生成して、結果を表示できます。たとえば、ユーザーがまだ話している間に結果を表示できます。

リクエストには、音声データに加えて構成パラメータが含まれます。以下のセクションでは、これらの種類の認識リクエスト、それらが生成するレスポンス、それらのレスポンスの処理方法について詳しく説明します。

Speech-to-Text API 認識

Speech-to-Text API 同期認識リクエストは、スピーチ音声データに対して認識を行うための最も簡単な方法です。Speech-to-Text は、同期リクエストで送信された最大 1 分の音声データを処理できます。Speech-to-Text は、すべての音声を処理して認識した後、レスポンスを返します。

同期リクエストはブロッキングです。通常、Speech-to-Text はリアルタイムよりも速く音声を処理し、30 秒の音声を平均 15 秒で処理します。音声の品質が悪い場合は、認識リクエストの処理時間が大幅に長くなることがあります。

Speech-to-Text では、REST メソッドと gRPC メソッドの両方で Speech-to-Text API 同期リクエストと非同期リクエストを呼び出すことができます。この記事では、説明が簡単な REST API を使って、Speech API の基本的な使用方法を説明します。ただし、REST リクエストも gRPC リクエストも基本構成は非常によく似ています。 ストリーミング認識リクエストは、gRPC でのみサポートされています。

音声同期認識リクエスト

同期 Speech-to-Text API リクエストは音声認識構成と音声データで構成されます。サンプル リクエストを以下に示します。

{
    "config": {
        "encoding": "LINEAR16",
        "sampleRateHertz": 16000,
        "languageCode": "en-US",
    },
    "audio": {
        "uri": "gs://bucket-name/path_to_audio_file"
    }
}

Speech-to-Text API 同期認識リクエストのすべてに、音声認識の config フィールド(RecognitionConfig 型)を含める必要があります。RecognitionConfig には次のサブフィールドが含まれています。

  • encoding - (必須)提供された音声(AudioEncoding 型)のエンコード スキームを指定します。コーデックを選択する場合は、良好なパフォーマンスを得るために、FLACLINEAR16 などのロスレス エンコードをおすすめします。詳細については、音声エンコードをご覧ください。encoding フィールドは FLAC ファイルと WAV ファイルでは省略可能です。これらのファイルでは、ファイル ヘッダーにエンコードが含まれています。
  • sampleRateHertz - (必須)提供された音声のサンプルレートを指定します(ヘルツ単位)。サンプルレートの詳細については、後述のサンプルレートをご覧ください。sampleRateHertz フィールドは FLAC ファイルと WAV ファイルでは選択可能です。これらのファイルでは、ファイル ヘッダーにエンコードが含まれています。
  • languageCode - (必須)提供された音声を認識する言語とリージョン / ロケールを指定します。言語コードは BCP-47 識別子である必要があります。言語コードは一般に第一言語タグと、言語が話される国を表す第二リージョン サブタグで構成されます(たとえば、前述の例の英語の「en」と米国の「US」など)。サポートされる言語については、サポートされている言語をご覧ください。
  • maxAlternatives - (オプション、デフォルト 1)レスポンスで表示する音声文字変換候補の数を示します。デフォルトでは、Speech-to-Text API は最も可能性が高い音声文字変換候補を 1 つ表示します。別の変換候補も表示するには、maxAlternatives を 1 よりも大きな値に設定します。Speech-to-Text は、品質が十分であると判断された変換候補のみ返します。変換候補の表示は一般に、ユーザー フィードバックを必要とするリアルタイムのリクエスト(音声コマンドなど)に適しているため、ストリーミング認識リクエスト向けです。
  • profanityFilter - (省略可)冒とく的な語句をフィルタで除外するかどうかを示します。フィルタで除外された単語は、先頭の文字と、残りの文字を表すアスタリスクで示されます(例: f***)。冒とくフィルタは単一の単語を検出するもので、不適切な表現がフレーズや単語の組み合わせである場合は検出しません。
  • speechContext - (省略可)この音声を処理するための追加のコンテキスト情報が含まれます。コンテキストには次のサブフィールドが含まれます。
    • phrases - 音声認識タスクへのヒントを提供する語句のリストが含まれます(後述の語句のヒントをご覧ください)。

音声は、RecognitionAudio 型の audio パラメータによって Speech-to-Text に渡されます。audio フィールドには、次のいずれかのサブフィールドが含まれます。

  • content には、リクエスト内に埋め込まれた評価対象の音声が含まれます。詳しくは、後述の音声コンテンツの埋め込みをご覧ください。このフィールド内で直接渡される音声は、時間が 1 分に制限されます。
  • uri には音声コンテンツを示す URI が含まれます。ファイルは圧縮しないでください(たとえば、gzip など)。現在、このフィールドには Google Cloud Storage URI を gs://bucket-name/path_to_audio_file の形式で指定する必要があります。後述の URI によって参照される音声を渡すをご覧ください。

これらのリクエストおよびレスポンス パラメータの詳細については、以下で説明します。

サンプルレート

音声のサンプルレートはリクエスト構成の sampleRateHertz フィールドで指定し、関連する音声コンテンツまたはストリームのサンプルレートと一致している必要があります。8,000 Hz から 48,000 Hz の間のサンプルレートが、Speech-to-Text でサポートされています。FLAC または WAV ファイルのサンプルレートは、sampleRateHertz フィールドではなく、ファイル ヘッダーで指定できます。

ソース素材のエンコード時に選択できる場合は、16,000 Hz のサンプルレートを使用して音声をキャプチャします。これより低い値では、音声認識の精度が低下する可能性があり、レベルを高くしても音声認識品質に目立った効果はありません。

ただし、音声データがすでに 16,000 Hz 以外の既存のサンプルレートで録音されている場合は、音声を 16,000 Hz で再サンプリングしないでください。たとえば、以前のほとんどの電話音声では 8,000 Hz のサンプルレートが使われており、正確な結果が生成されないことがあります。そのような音声を使用する必要がある場合は、ネィティブ サンプルレートで音声を Speech API に渡します。

言語

Speech-to-Text の認識エンジンは、多様な言語をサポートしています。リクエスト構成の languageCode フィールドで、BCP-47 識別子を使用して音声の言語(および国または地域の方言)を指定します。

サポートされる言語のすべてのリストと BCP-47 識別子タグの説明については、言語のサポートページをご覧ください。

時間オフセット(タイムスタンプ)

Speech-to-Text では、提供された音声で認識された、発語された各単語の開始時点と終了時点を表す時間オフセット値(タイムスタンプ)を含めることができます。時間オフセット値は、音声の開始時点からの経過時間を 100 ミリ秒単位で表します。

時間オフセットは、長い音声ファイルを分析する際に特に役立ちます。長い音声ファイルでは、認識されたテキストで特定の単語を検索し、元の音声内でその単語の位置を指定(シーク)する必要がある場合があるためです。時間オフセットは、recognizestreamingrecognizelongrunningrecognize のすべての認識メソッドでサポートされています。

時間オフセット値は、認識レスポンスで返される最初の変換候補(alternative)にのみ含まれます。

リクエストの結果に時間オフセットを含めるには、リクエストの設定で enableWordTimeOffsets パラメータを true に設定します。REST API またはクライアント ライブラリの使用例は、時間オフセット(タイムスタンプ)の使用をご覧ください。たとえば、次に示すように、リクエスト構成に enableWordTimeOffsets パラメータを含めることができます。

{
"config": {
  "languageCode": "en-US",
  "enableWordTimeOffsets": true
  },
"audio":{
  "uri":"gs://gcs-test-data/gettysburg.flac"
  }
}

Speech-to-Text API から返される結果には、次に示すように、認識された各単語の時間オフセット値が含まれます。

{
  "name": "6212202767953098955",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
    "progressPercent": 100,
    "startTime": "2017-07-24T10:21:22.013650Z",
    "lastUpdateTime": "2017-07-24T10:21:45.278630Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [
      {
        "alternatives": [
          {
            "transcript": "Four score and twenty...(etc)...",
            "confidence": 0.97186122,
            "words": [
              {
                "startTime": "1.300s",
                "endTime": "1.400s",
                "word": "Four"
              },
              {
                "startTime": "1.400s",
                "endTime": "1.600s",
                "word": "score"
              },
              {
                "startTime": "1.600s",
                "endTime": "1.600s",
                "word": "and"
              },
              {
                "startTime": "1.600s",
                "endTime": "1.900s",
                "word": "twenty"
              },
              ...
            ]
          }
        ]
      },
      {
        "alternatives": [
          {
            "transcript": "for score and plenty...(etc)...",
            "confidence": 0.9041967,
          }
        ]
      }
    ]
  }
}

モデルの選択

Speech-to-Text は、機械学習モデルのいずれか 1 つを使用して、音声ファイルの文字変換を行います。Google では、特定の音声タイプとソースに対して音声認識モデルをトレーニングしています。

Speech-to-Text に音声文字変換リクエストを送信するときに、オリジナルの音声ソースを指定すると、変換結果を改善できます。これにより、Speech-to-Text API ではそのソースに特有のタイプの音声用にトレーニングされた機械学習モデルを使用して音声ファイルを処理できます。

音声認識のモデルを指定するには、リクエストの RecognitionConfig オブジェクトに model フィールドを追加し、使用するモデルを指定します。

Speech-to-Text では、音声ファイルの文字変換に次のタイプの機械学習モデルを使用できます。

列挙型定数 説明 サポートされている言語
動画 video

このモデルは、動画クリップの音声を文字に変換する場合や、複数の話者の音声が含まれている場合に使用します。最良の結果を得るには、16,000 Hz 以上のサンプリング レートで録音された音声を使用してください。

注: これは、標準レートよりも費用の高いプレミアム モデルです。

en-US のみ
通話 phone_call

このモデルは、通話の音声を文字に変換します。通常、電話の音声は 8,000 Hz のサンプリング レートで録音されます。

注: 拡張音声電話モデルは、標準レートよりも費用の高いプレミアム モデルです。

en-US のみ
コマンドと検索 command_and_search

短いオーディオ クリップの音声を文字に変換する場合に使用します。たとえば、音声コマンドや音声検索などで使用します。

使用可能なすべての言語
デフォルト default

音声が上記のどのモデルにも適合しない場合は、このモデルを使用します。たとえば、話者が一人だけで、長時間録音された音声に使用します。16,000Hz 以上のサンプリング レートで録音されたハイファイ音声であることが理想的です。

使用可能なすべての言語

語句のヒント

特定の認識タスクで、特定の音声の処理に役立つ情報を提供する speechContextSpeechContext 型)を渡すこともできます。コンテキストは認識機能への「ヒント」として機能する phrases のリストを保持できるようになりました。これらの語句は、語句が認識される可能性を飛躍的に高める可能性があります。

これらの語句のヒントは以下の方法で利用できます。

  • 音声データ内で頻繁に発生する傾向がある、特定の語句の精度を高めます。たとえば、ユーザーによって特定のコマンドがよく話される場合に、語句のヒントとしてそれらを指定できます。このような追加の語句は、特に提供された音声にノイズが含まれている場合や、含まれているスピーチがあまりクリアでない場合に役立つことがあります。

  • 認識タスクの語彙に単語を追加します。Speech-to-Text には大量の語彙が含まれています。ただし、固有名詞やドメイン固有の単語が語彙に含まれていない場合は、リクエストの speechContext に提供される語句に追加できます。

語句は、単語の小さなグループまたは 1 つの単語のどちらとしても追加できます(これらの語句の数とサイズの制限については、コンテンツの制限をご覧ください)。複数単語の句として提供されたヒントは、それらの単語を順番に認識する可能性が飛躍的に高まるだけでなく、個々の単語を含めて句の一部を認識する可能性も飛躍的に高まります。

たとえば、この commercial_mono ファイルには「Chromecast」というプロダクト名が含まれています。これらの語彙に含まれていない単語の指定が行われずに認識が行われると、認識機能から望ましいトランスクリプトが返されません。語彙にある「Chrome cast」のような単語も返さない場合があります。

{
  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US"
  },
  "audio":{
      "uri":"gs://cloud-samples-tests/speech/commercial_mono.wav"
  }
}

ただし、これらの語彙に含まれない単語が認識リクエストで指定されると、認識機能は「Chromecast」の正しい音声文字変換を含む、より正確なレスポンスを返します。

{
  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["Chromecast"]
     }]
  },
  "audio":{
    "uri":"gs://cloud-samples-tests/speech/commercial_mono.wav"
  }
}

また、通常 1 フレーズにまとめて発話される特定の語句をまとめることができます。こうすると、Speech-to-Text でこれらを認識する可能性が向上します。

{
  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["Chromecast", "Chromecast model"]
     }]
  },
  "audio":{
    "uri":"gs://cloud-samples-tests/speech/commercial_mono.wav"
  }
}

一般に、音声コンテキストのヒントを指定する場合は控えめにしてください。優れた認識精度を実現するには、話されることが予想される語句だけに制限します。たとえば、複数のダイアログ状態またはデバイス操作モードがある場合、常に可能性のあるすべての状態のヒントを提供するよりも、現在の状態に対応するヒントのみを提供します。

音声コンテンツの埋め込み

リクエストの audio フィールドに content パラメータを渡すと、音声認識リクエストに埋め込み音声が含まれます。gRPC リクエスト内のコンテンツとして渡される埋め込み音声の場合、その音声には Proto3 のシリアル化との互換性があり、バイナリデータとして渡す必要があります。REST リクエスト内のコンテンツとして渡される埋め込み音声の場合、その音声は JSON のシリアル化との互換性があり、最初に Base64 エンコードが行われている必要があります。詳細については、音声の Base64 エンコードをご覧ください。

Google Cloud クライアント ライブラリを使用してリクエストを構築する場合、通常はこのバイナリデータ(または Base64 でエンコードされたデータ)を content フィールドに直接書き出します。

たとえば、次の Python コードでは渡された音声ファイルを取得し、音声データを Base64 エンコードして同期認識リクエストを構築します。

import base64
import googleapiclient.discovery

with open(speech_file, 'rb') as speech:
    # Base64 encode the binary audio file for inclusion in the JSON
    # request.
    speech_content = base64.b64encode(speech.read())

# Construct the request
service = googleapiclient.discovery.build('speech', 'v1')
service_request = service.speech().recognize(
    body={
        "config": {
            "encoding": "LINEAR16",  # raw 16-bit signed LE samples
            "sampleRateHertz": 16000,  # 16 khz
            "languageCode": "en-US",  # a BCP-47 language tag
        },
        "audio": {
            "content": speech_content
            }
        })

URI で参照される音声を渡す

リクエストに音声コンテンツを埋め込むよりも、Speech リクエストの audio フィールド内の uri パラメータで、Google Cloud Storage 上の音声ファイル(base64 ではなく、バイナリ形式)を指す URI を渡す方が一般的です。この場合、URI は次の形式にします。

gs://bucket-name/path_to_audio_file

たとえば、音声リクエストの次の部分は、クイックスタートで使用されるサンプル音声ファイルを参照しています。

...
    "audio": {
        "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
    }
...

Google Cloud Storage ファイルを読み取るには、次のいずれかの適切なアクセス許可が必要です。

  • 一般公開されていて読み取り可能(サンプル音声ファイルなど)
  • サービス アカウントの承認を使用する場合、サービス アカウントによって読み取り可能
  • ユーザー アカウントの承認に 3-Legged OAuth を使用する場合、ユーザー アカウントによって読み取り可能

Google Cloud Storage へのアクセスの管理の詳細については、Google Cloud Storage ドキュメントのアクセス制御リストの作成と管理をご覧ください。

Speech-to-Text API レスポンス

これまでに説明したように、同期 Speech-to-Text API レスポンスは、渡される音声の長さに比例して、結果を返すまでに時間がかかることがあります。処理が終わると、API によって次に示すレスポンスが返されます。

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.98267895,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

各フィールドの内容は次のとおりです。

  • results には(SpeechRecognitionResult 型の)結果のリストが含まれます。このリストでは、各結果が音声のセグメントに対応します(音声のセグメントは一時停止で区切られます)。各結果は次の内から 1 つ以上のフィールドで構成されます。
    • alternatives には SpeechRecognitionAlternatives 型の音声文字変換テキスト候補のリストが格納されます。複数の変換候補が表示されるかどうかは、ユーザーが(maxAlternatives1 より大きい値に設定して)複数の変換候補をリクエストしたかどうか、さらに Speech-to-Text が十分に高品質の変換候補を生成したかどうかによって異なります。各変換候補は次のフィールドから構成されます。
      • transcript には音声文字変換テキストが含まれます。後述の音声文字変換テキストの処理をご覧ください。
      • confidence には、Speech-to-Text の特定の音声文字変換テキストの信頼度を示す 0 から 1 までの値が格納されます。後述の信頼値の解釈をご覧ください。

提供された音声から認識できる話し言葉がない場合、返される results リストには何も項目が含まれていません。話し言葉を認識できない場合、これは通常、音質が非常に低いか、言語コード、エンコード、またはサンプルレートの値が提供された音声と一致しないことが原因です。

このレスポンスの構成要素については、以下のセクションで説明します。

同期 Speech-to-Text API の各レスポンスは、認識されたすべての音声が含まれる 1 つの結果ではなく、結果のリストを返します。(transcript 要素内の)認識された音声のリストは、連続して表示されます。

変換候補(alternatives)の選択

正常な同期認識レスポンス内の各結果に、1 つまたは複数(リクエストの maxAlternatives 値が 1 より大きい場合)の alternatives が含まれる場合があります。Speech-to-Text で、変換候補の信頼値が十分に高いと判断された場合、その変換候補はレスポンスに含められます。レスポンスの最初の変換候補が、通常は最適な(最も可能性が高い)変換候補です。

maxAlternatives1 より大きい値に設定しても、複数の変換候補が返されるとは限りません。一般に、複数の変換候補は、ストリーミング認識リクエストによって結果を取得するユーザーにリアルタイムのオプションを提供する場合に適しています。

音声文字変換テキストの処理

レスポンスで指定された各変換候補には、認識されたテキストを格納する transcript が含まれます。このような音声文字変換テキストが連続した変換候補とともに提供される場合、それらを連結する必要があります。

次の Python コードは、結果リストに対して反復処理を行い、音声文字変換テキストを連結してまとめます。すべての場合に最初の変換候補(0 番目)を取得していることに注意してください。

response = service_request.execute()
recognized_text = 'Transcribed Text: \n'
for i in range(len(response['results'])):
    recognized_text += response['results'][i]['alternatives'][0]['transcript']

信頼度値

confidence 値は 0.0 と 1.0 の間の推定値です。数値が大きいほど、認識された単語が正しいという可能性が高まります。このフィールドは通常、最上位の候補に対して、そして is_final=true の結果のみに対して表示されます。たとえば、confidence 値を使用して、ユーザーに変換候補を示すか、ユーザーからの確認を求めるかどうかを指定することができます。最上位候補の confidence 値が高ければ、その結果が正しい可能性が高まります。最上位候補の confidence 値が低ければ、他の変換候補がより正確な可能性があります。結果の中でこのフィールドが正確である保証はなく、設定されている保証もないため、コードで confidence フィールドを必須にするべきではありません。

非同期リクエストとレスポンス

LongRunningRecognize メソッドに対する非同期 Speech-to-Text API リクエストの形式は、同期 Speech-to-Text API リクエストと同じです。ただし、非同期リクエストは、レスポンスを返す代わりに長時間実行オペレーションOperation 型)を開始し、このオペレーションを呼び出し元にすぐに返します。

次に一般的なオペレーション レスポンスを示します。

{
  "name": "operation_name",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata"
    "progressPercent": 34,
    "startTime": "2016-08-30T23:26:29.579144Z",
    "lastUpdateTime": "2016-08-30T23:26:29.826903Z"
  }
}

結果がまだ存在していないことがわかります。Speech-to-Text は渡された音声の処理を続行し、このオペレーションを使用して最終結果を格納します。この最終結果は、リクエストの完了時にオペレーションの response フィールド(LongRunningRecognizeResponse 型)に表示されます。

次にリクエストの完了後のすべてのレスポンスを示します。

{
  "name": "1268386125834704889",
  "metadata": {
    "lastUpdateTime": "2016-08-31T00:16:32.169Z",
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongrunningRecognizeMetadata",
    "startTime": "2016-08-31T00:16:29.539820Z",
    "progressPercent": 100
  }
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [{
      "alternatives": [{
        "confidence": 0.98267895,
        "transcript": "how old is the Brooklyn Bridge"
      }]}]
  },
  "done": True,
}

doneTrue に設定され、オペレーションの responseSpeechRecognitionResult 型の結果セットが含まれていることがわかります。この型は、同期 Speech-to-Text API 認識リクエストによって返される型と同じです。

デフォルトでは、非同期 REST レスポンスで done がデフォルト値の False に設定されます。ただし、JSON ではフィールドにデフォルト値が存在していなくても構わないため、オペレーションが完了しているかどうかをテストする際に、done フィールドが存在していることと、True に設定されていることの両方をテストする必要があります。

ストリーミング Speech-to-Text API 認証リクエスト

ストリーミング Speech-to-Text API 認識呼び出しは、双方向ストリーム内の音声をリアルタイムでキャプチャし、認識するために設計されています。アプリケーションは、リクエスト ストリームで音声を送信し、レスポンス ストリームで中間および最終認識結果をリアルタイムで受信できます。中間結果は音声の断片に対する現時点の認識結果を示しますが、最終認識結果は、その音声の断片の最終的で最良の予測を示します。

ストリーミング リクエスト

設定と音声の両方を 1 つのリクエストで送信する同期呼び出しや非同期呼び出しと異なり、ストリーミング Speech API の呼び出しでは複数のリクエストを送信する必要があります。最初の StreamingRecognizeRequest には、音声を伴わない StreamingRecognitionConfig 型の構成を含める必要があります。同じストリームで送信されるその後の StreamingRecognizeRequest は、生の音声バイトの連続フレームで構成されます。

StreamingRecognitionConfig は次のフィールドから構成されます。

  • config - (必須)RecognitionConfig 型の音声の構成情報が含まれます。これは同期リクエストや非同期リクエストで指定するものと同じです。
  • single_utterance - (省略可、デフォルト false)音声が検出されなくなったらこのリクエストを自動的に終了するかどうかを示します。設定されている場合、Speech-to-Text は一時停止、無音、スピーチ以外の音声を検出して、認識を終了するタイミングを判断します。設定しない場合、ストリームが直接閉じられるか、ストリームの制限長を超えるまで、ストリームは音声のリスニングと処理を続行します。single_utterancetrue に設定すると、音声コマンドの処理に役立ちます。
  • interim_results - (省略可、デフォルト false)このストリーム リクエストは、後で(さらに多くの音声の処理後に)絞り込むことができる一時結果を返す必要があることを示します。中間結果は、レスポンス内で is_finalfalse に設定することによって、通知されます。

ストリーミング レスポンス

ストリーミング音声認識結果は、SpeechRecognitionResponse 型の一連のレスポンスで返されます。このようなレスポンスは次のフィールドから構成されます。

  • speechEventType には SpeechEventType 型のイベントが格納されます。これらのイベントの値は、1 つの発言が完了したと判断されたタイミングを示します。音声イベントは、ストリームのレスポンス内のマーカーとして機能します。
  • results には結果のリストが格納されます。これは、StreamingRecognitionResult 型の中間結果か最終結果のいずれかです。results リストには次のサブフィールドが含まれます。
    • alternatives には候補の音声文字変換リストが含まれます。
    • isFinal はこのリストエントリ内に取得された結果が中間結果か最終結果かを示します。
    • stability はこれまで取得された結果の変動性を示し、0.0 は完全な不安定性を示し、1.0 は完全な安定性を示します。音声文字変換テキストが正しいかどうかを推定する confidence 値(信頼度値)とは異なり、stability は特定部分の結果が変更される可能性があるかどうかを推定します。isFinaltrue に設定されている場合、stability は設定されません。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Speech-to-Text ドキュメント
ご不明な点がありましたら、Google のサポートページをご覧ください。