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

概要

音声適応機能を使用すると、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 Main Street」や「987 Grand Boulevard」などの語句は番地として認識されるため、より正確に文字変換されます。

クラストークン

音声適応でクラスを使用するには、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"]
     }]
  }

次のステップ