バイアスを使用すると、libgspeech で特定の単語やフレーズが他の候補よりも高い頻度で認識されるようになります。このドキュメントでは、libgspeech が音声データの文字変換で必要な単語やフレーズの認識率を高める方法について説明します。
認識モデルで特定の単語やフレーズにバイアスをかけるには、これらの単語やフレーズを SpeechAdaptation
オブジェクトの phrase_sets
フィールド内で phrases
として渡します。リクエストの RecognitionConfig
オブジェクトの adaptation
フィールドに SpeechAdaptation
オブジェクトを割り当てます。
adaptation: { phrase_sets { phrases: "weather is hot" phrases: "weather is cold" }
クラスを使用してモデルにバイアスをかける
クラスは、数値やカレンダーの日付など、自然言語で発生する一般的なコンセプトを表します。クラスにより、共通のコンセプトに対応する大規模な単語グループの音声文字変換の精度を向上できますが、必ずしも同一の単語やフレーズを含むとは限りません。
たとえば、お住まいの地域の住所を音声で録音したとします。「My house is 123 Main Street, the fourth house on the left.」という音声が録音されていたとしましょう。この場合、Speech-to-Text により「123」という数の並びは、「百二十三」という数値としてではなく、番地として認識されることが望ましいでしょう。しかし、すべての人が同じ住所「123 Main Street」に住んでいるわけではありません。可能性のあるすべての住所をフレーズで列挙することは実用的ではありません。代わりに、クラスを使用すると、実際の数字に関係なく番地を認識する必要があることを示すことができます。
クラストークンを使用するには、音声適応フレーズにトークンを含めます。クラスをフレーズ配列の単独アイテムとして使用することも、複数の単語を含む長いフレーズに埋め込むこともできます。たとえば、ソース音声から住所の音声文字変換の精度を改善するには、$ADDRESSNUM
クラスを使用します。長いフレーズで住所を表すには、「my address is $ADDRESSNUM
」のようにクラストークンを文字列に含めます。ただし、「I am at 123 Main Street」など、類似していても同一ではないフレーズが含まれている場合は役に立ちません。類似のフレーズを認識しやすくするためには、クラストークンを単独で含めることが重要です。
adaptation: {
phrase_sets {
phrases: "my address is $ADDRESSNUM"
phrases: "$ADDRESSNUM"
}
}
カスタムクラスを使用してモデルにバイアスをかける
カスタムクラスは、関連するアイテムや値のカスタムリストです。
事前定義のカスタムクラスを使用する
Speech-to-Text On-Device での使用に推奨される事前定義のカスタムクラスがいくつか用意されています(contacts
、navigation
など)。これらのカスタムクラスは、アプリケーションに存在する可能性のあるフレーズを表し、独自のカスタムクラスよりも認識精度が向上する可能性があります。
事前定義のカスタムクラスには次の 2 つのカテゴリがあり、リクエストでは異なる方法で参照する必要があります。
phrases
とitems
を指定する必要があるカスタムクラス(例:contacts
)。custom_class_id
でのみ参照されるカスタムクラス(例:navigation
)。
phrases
と items
を必要とするカスタムクラスを使用するには、items
に各値を含む CustomClass
オブジェクトを作成し、phrases
で custom_class_id
によってこのクラスを参照します。次に例を示します。
adaptation: {
custom_classes {
custom_class_id: "contacts"
items: "Asia"
items: "Alex"
items: "Nuno Pereira"
}
phrase_sets {
phrases: "call ${contacts}"
}
}
navigation
コマンドに phrases
と items
を指定する必要はありません。この場合、phrases
リストは、ユーザーがそのコンテキストで使用する可能性が高い、Google 提供のフレーズのリストです(「高速道路を利用する」など)。
adaptation: {
custom_classes {
custom_class_id: "navigation"
}
}
独自のカスタムクラスを使用する
事前定義のカスタムクラスでは対応できない特定のビジネスニーズがある場合は、カスタムクラスを作成できます。たとえば、地域に存在する数百軒のレストランのうち、いずれかの名前が含まれる可能性がある音声データを文字変換する必要がある場合が考えられます。レストラン名は一般的な音声での検出頻度は極めて低く、カスタムクラスで名前を指定しないと、認識モデルが「正しい」回答として選択する可能性は低くなります。例:
adaptation: {
custom_classes {
custom_class_id: "restaurants"
items: "sushido"
items: "taneda sushi"
items: "altura"
}
phrase_sets {
phrases: "visit restaurants like ${restaurants}"
}
}