概要
モデル適応機能を使用すると、提案される可能性がある他の候補よりも、Speech-to-Text が特定の単語やフレーズをより高い頻度で認識するように設定できます。たとえば、音声データに「weather」という単語が含まれているとします。Speech-to-Text が「weather」という単語を検出した場合、「whether」よりも多く「weather」と文字変換されることが理想的です。この場合は、モデル適応を使用して「weather」と認識するように Speech-to-Text にバイアスをかけることができます。
モデルの適応は、特に次のようなユースケースに対して有効です。
音声データで頻繁に使用される単語やフレーズの精度を改善する。たとえば、一般ユーザーがよく発する音声コマンドを、認識モデルに知らせることが可能です。
Speech-to-Text によって認識される語彙を増加させる。Speech-to-Text には大量の語彙が含まれています。ただし、音声データに一般的な言語使用においては使用頻度が極めて低い単語(正式名称や地域特有の単語など)が高頻度で含まれている場合は、モデル適応を使用してそれらの単語を追加できます。
音声にノイズが含まれている場合や、鮮明でない場合に音声文字変換の精度を改善する。
必要に応じて、モデル適応ブースト機能を使用して、認識モデルのバイアスを微調整できます。
単語とフレーズの認識精度を向上させる
Speech-to-Text が音声データを文字変換するときに「weather」という単語を認識する確率を高めるには、SpeechAdaptation リソースの PhraseSet
オブジェクトに含まれる「weather」という単独の単語を渡します。
フレーズを指定することで、Speech-to-Text がその単語の並びを認識しやすくなります。フレーズを提供することで、個々の単語を含むフレーズの一部を認識する確率も高まります。これらのフレーズの数とサイズの制限については、コンテンツの制限ページをご覧ください。
クラスを使用して認識精度を向上させる
クラスとは、通貨単位やカレンダー日付など、自然言語で発生する一般的なコンセプトを表します。クラスにより、共通のコンセプトに対応する大規模な単語グループの音声文字変換の精度を向上できますが、必ずしも同一の単語やフレーズを含むとは限りません。
たとえば、お住まいの地域の住所を音声で録音したとします。「My house is 123 Main Street, the fourth house on the left.」という音声が録音されていたとしましょう。この場合、Speech-to-Text により「123」という数の並びは、「百二十三」という数値としてではなく、番地として認識されることが望ましいと思われます。しかし、すべての人が同じ住所「123 Main Street」に住んでいるわけではありません。可能なすべての番地を PhraseSet
リソースに一覧表示することは実用的ではありません。代わりに、クラスを使用して、実際の番号に関わりなく、番地を認識させることができます。この例において、Speech-to-Text では「123 メイン ストリート」や「987 大通り」などの語句は番地として認識されるため、より正確に文字変換されます。
クラストークン
モデル適応でクラスを使用するには、PhraseSet
リソースの phrases
フィールドにクラストークンを格納します。ご利用の言語で使用できるトークンを確認するには、サポートされているクラストークンの一覧をご覧ください。たとえば、ソース音声からの住所番号の音声文字変換を改善するには、PhraseSet.
のフレーズ内に値 $ADDRESSNUM
を指定します。
クラスを phrases
配列の単独項目として使用することも、1 つ以上のクラストークンを複数の単語からなるフレーズに埋め込むこともできます。たとえば、文字列にクラストークン ["my address is $ADDRESSNUM"]
を含めることで、より多くのフレーズで住所番号を指定できます。ただし、「I am at 123 Main Street」など、類似しているが同一ではないフレーズが含まれている場合には役立ちません。類似のフレーズを認識しやすくするためには、クラストークン ["my address is $ADDRESSNUM", "$ADDRESSNUM"]
を単独で追加することが重要です。無効または異常なクラストークンを使用した場合、Speech-to-Text はエラーを発生させずトークンを無視しますが、それ以外のフレーズはコンテキストで使用されます。
カスタムクラス
関連する項目または値のカスタムリストで構成された独自の CustomClass
クラスを作成することもできます。たとえば、地域に存在する数百軒のレストランのうち、いずれかの名前が含まれる可能性がある音声データを文字変換する必要がある場合が考えられます。レストラン名は一般的な音声での検出頻度は極めて低く、認識モデルによって「正しい」回答として選択される可能性は低くなります。カスタムクラスを使用すると、音声に出現した際にそれらの名前を正しく認識するように認識モデルにバイアスをかけることができます。
カスタムクラスを使用するには、ClassItem
として各レストラン名を含む CustomClass
リソースを作成します。カスタムクラスは、事前ビルドされたクラストークンと同じ方法で機能します。phrase
には、事前ビルドされたクラストークンとカスタムクラスの両方を含めることができます。
ブーストを使用して音声文字変換の結果をファイン チューニングする
デフォルトでは、モデル適応から得られる効果は、特に 1 語句の場合は比較的小さなものです。モデル適応のブースト機能を使用すると、一部のフレーズに対する重み付けの割り当てを他のフレーズよりも引き上げることで、認識モデルのバイアスを引き上げられます。次の条件をすべて満たす場合は、ブーストを実装することをおすすめします。
- モデル適応はすでに実装済み。
- 音声文字変換の結果に対するモデル適応効果の強度をさらに調整する必要がある。ブーストの機能がお使いの言語で利用可能かどうかを確認するには、言語サポートのページをご覧ください。
たとえば、「fare」よりも「fair」という単語が頻繁に出現する状況で、「fare to get into the county fair」と尋ねる録音が多くあるとします。この場合は、モデル適応を使用して、PhraseSet
リソースに phrases
として追加することにより、モデルが「fair」と「fare」の両方を認識する確率を向上させることができます。これにより、「hare」や「lair」などよりも高い頻度で「fair」と「fare」と認識するよう Speech-to-Text に指示されます。
ただし、「fair」は音声においてより頻繁に出現するため、「fare」よりも高い頻度で認識されなければなりません。すでに、Speech-to-Text API を使用して音声を文字変換し、正しい単語(「fair」)を認識し損ねるエラーを多数見つけているかもしれません。この場合、ブースト機能を使用して、「fare」よりも「fair」により高いブーストを割り当てることをおすすめします。「fair」に割り当てる重み付け値を高くすると、Speech-to-Text API が「fare」よりも「fair」を頻繁に選択するようにバイアスが適用されます。ブースト値を割り当てていない場合、認識モデルは「fair」と「fare」を同じ確率で認識します。
ブーストの基礎
ブーストを使用する場合は、PhraseSet
リソースの phrase
項目に重み付け値を割り当てます。Speech-to-Text は、音声データ内の単語の文字変換候補を選択するときに、この重み付け値を参照します。この値が大きいほど、Speech-to-Text が文字変換候補からその単語や語句を選択する可能性が高くなります。
複数単語のフレーズにブースト値を適用すると、ブーストはフレーズ全体に(フレーズ全体にのみ)適用されます。たとえば、「My favorite extract in American Museum of Natural History is the blue wheat」というフレーズにブースト値を割り当てます。このフレーズを phrase
オブジェクトに追加し、ブースト値を割り当てると、認識モデルはそのフレーズを全体として逐語的に認識する可能性が高くなります。
複数単語のフレーズにブーストを適用しても、期待する結果が得られない場合は、そのフレーズ内のすべてのバイグラム(順序のある 2 単語)を phrase
項目として追加し、それぞれにブースト値を割り当てます。上述の例の場合、バイグラムとエンドグラム(3 つ以上の単語)をさらに追加して、確認してください。たとえば、「my favorite」、「my favorite exhibit」、「favorite exhibit」、「my favorite exhibit at the American Museum of Natural History」、「American Museum of Natural History」、「blue whale」などです。これにより、STT 認識モデルは、元のブーストされたフレーズの一部を含むものの、逐語的には一致しない音声内の関連フレーズを認識する可能性が高くなります。
ブースト値の設定
強調数値には 0 より大きい浮動小数点数値を指定してください。ブースト値の実質的な上限値は 20 です。最適な結果を得るには、ブースト値を調整して音声文字変換結果を確認して、正しい音声文字変換結果が得られるようにします。
ブースト値を大きくすると、認識漏れ(音声に出現する単語や語句が Speech-to-Text で正しく認識されない)が少なくなります。ただし、ブーストを使用すると過剰検出(音声に出現していない単語や語句が音声文字変換に出力される)の可能性は高くなります。
モデル適応を使用したユースケース例
次の例は、「The word is fare」という音声録音を、モデル適応を使って音声文字変換するプロセスを示しています。この場合、音声適応を使用しないと、Speech-to-Text は単語「fair」と認識します。音声適応を使用すると、Speech-to-Text は単語「fare」と認識できます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Speech-to-Text APIs.
-
Make sure that you have the following role or roles on the project: Cloud Speech Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Speech-to-Text APIs.
-
Make sure that you have the following role or roles on the project: Cloud Speech Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
クライアント ライブラリは、アプリケーションのデフォルト認証情報を使用することによって、Google API で簡単に認証を行い、これらの API にリクエストを送信できます。アプリケーションのデフォルト認証情報を使用すると、ベースとなるコードを変更することなく、ローカルでアプリケーションのテストを行ったり、アプリケーションをデプロイしたりできます。詳細については、 クライアント ライブラリを使用するための認証をご覧ください。
また、クライアント ライブラリがインストールされていることを確認してください。
PhraseSet
を使用して音声文字変換を改善する
- 次のサンプルでは、「fare」というフレーズを含む
PhraseSet
を作成し、それを認識リクエストにinline_phrase_set
として追加します。
Python
- このサンプルでは、同じフレーズを含む
PhraseSet
リソースを作成し、認識リクエストでそれを参照します。
Python
CustomClass
を使用して音声文字変換の結果を改善する
- 次のサンプルでは、項目「fare」と名前「fare」を含む
CustomClass
を作成します。次に、認識リクエストでinline_phrase_set
内のCustomClass
を参照します。
Python
- このサンプルでは、同じアイテムを含む
CustomClass
リソースを作成します。次に、リソース名CustomClass
を参照するフレーズを含むPhraseSet
リソースを作成します。次に、認識リクエストでPhraseSet
リソースを参照します。
Python
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。
-
Optional: Revoke the authentication credentials that you created, and delete the local credential file.
gcloud auth application-default revoke
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
コンソール
gcloud
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
次のステップ
- サポートされているクラストークンの一覧を確認する。
- 短い音声ファイルの文字変換を行う。
- ストリーミング音声を文字に変換する方法を学習する。
- 長い音声ファイルを文字に変換する方法を学習する。