音声適応により音声文字変換の出力を改善する

概要

音声適応機能を使用すると、Speech-to-Text では、特定の単語やフレーズが、他に示された候補よりも高い頻度で認識されます。たとえば、音声データに「weather」という単語が含まれているとします。Speech-to-Text が「weather」という単語を検出した場合、「whether」よりも多く「weather」と文字変換されることが理想的です。この例では、音声適応で Speech-to-Text が「weather」と認識するようにバイアスをかけます。

音声適応は、特に次のような場合に役立ちます。

  • 音声データで頻繁に使用される単語やフレーズの精度を改善できます。たとえば、一般ユーザーがよく発する音声コマンドを、認識モデルにアラート設定できます。

  • Speech-to-Text によって認識される語彙を増加させることができます。Speech-to-Text には大量の語彙が含まれています。ただし、音声データに一般的な言語ではほとんど使用されない単語(ドメイン固有の単語など)が含まれている場合は、音声適応を使用して追加できます。

  • 音声にノイズが含まれている場合や、鮮明でない場合における音声文字変換の精度を改善できます。

必要に応じて、音声適応ブースト機能(ベータ版)を使用して、認識モデルのバイアスを微調整できます。

指定した単語の認識の精度を向上できます。

Speech-to-Text が音声データを文字変換するときに「weather」を認識する確率を高めるには、SpeechContext オブジェクトの phrases フィールドに「weather」を渡します。Speech-to-Text API に対するリクエストで SpeechContext オブジェクトを RecognitionConfig オブジェクトの speechContexts フィールドに割り当てます。

次のスニペットは、Speech-to-Text API に送信される JSON ペイロードの一部を表しています。JSON スニペットにより、単語「weather」が音声適応に与えられます。

    "config": {
        "encoding":"LINEAR16",
        "sampleRateHertz": 8000,
        "languageCode":"en-US",
        "speechContexts": [{
          "phrases": ["weather"]
        }]
    }
    

複数単語のフレーズの認識の精度を向上できます。

フレーズを指定することで、Speech-to-Text がその単語の並びを認識しやすくなります。フレーズを提供することで、個々の単語を含むフレーズの一部を認識する確率も高まります。これらのフレーズの数とサイズの制限については、コンテンツの制限ページをご覧ください。

次のスニペットは、Speech-to-Text API に送信される JSON ペイロードの一部を表しています。JSON スニペットには、SpeechContext オブジェクトの phrases フィールドに割り当てられた複数単語のフレーズの配列が含まれています。

    "config": {
        "encoding":"LINEAR16",
        "sampleRateHertz": 8000,
        "languageCode":"en-US",
        "speechContexts": [{
          "phrases": ["weather is hot", "weather is cold"]
        }]
    }
    

クラスを使用して認識の精度を向上させる

クラスとは、通貨単位やカレンダー日付など、自然言語で発生する一般的なコンセプトを表します。クラスにより、共通のコンセプトに対応する大規模な単語グループの音声文字変換の精度を向上できますが、必ずしも同一の単語やフレーズを含むとは限りません。

たとえば、お住まいの地域の住所を音声で録音したとします。「My house is 123 Main Street, the fourth house on the left.」という音声が録音されていたとしましょう。この場合、Speech-to-Text により「123」という数の並びは、「百二十三」という数値としてではなく、番地として認識されることが望ましいと思われます。しかし、すべての人が同じ住所「123 Main Street」に住んでいるわけではありません。可能なすべての番地を SpeechContext オブジェクトに一覧表示することは実用的ではありません。代わりに、クラスを使用して、実際の番号に関わりなく、番地を認識させることができます。この例では、Speech-to-Text では「123 メイン ストリート」や「987 大通り」などの語句は番地として認識されるため、より正確に文字変換されます。

クラストークン

音声適応でクラスを使用するには、SpeechContext オブジェクトの phrases フィールドにクラストークンを含めます。ご利用の言語で使用できるトークンを確認するには、サポートされているクラストークンの一覧を参照してください。たとえば、ソース音声からの住所番号の音声文字変換を改善するには、SpeechContext オブジェクトに値 $ADDRESSNUM を指定します。

クラスは、phrases 配列のスタンドアロン アイテムとして使用することも、1 つ以上のクラストークンを複数の単語からなるフレーズに埋め込むこともできます。たとえば、文字列にクラストークン ["my address is $ADDRESSNUM"] を含めることで、より多くのフレーズで住所番号を指定できます。ただし、「I am at 123 Main Street」など、類似しているが同一ではないフレーズが含まれている場合には役立ちません。類似のフレーズを認識しやすくするためには、クラストークン ["my address is $ADDRESSNUM", "$ADDRESSNUM"] を単独で追加することが重要です。無効または異常なクラストークンを使用した場合、Speech-to-Text はエラーを発生させずトークンを無視しますが、それ以外のフレーズはコンテキストで使用されます。

次のスニペットは、Speech-to-Text API に送信される JSON ペイロードの例を示しています。JSON スニペットには、クラストークンを使用する SpeechContext オブジェクトが含まれます。

      "config": {
        "encoding":"LINEAR16",
        "sampleRateHertz": 8000,
        "languageCode":"en-US",
        "speechContexts": [{
          "phrases": ["$ADDRESSNUM"]
         }]
      }
    

次のステップ