自動音声適応

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

インテント検出リクエストを実行するときに、必要に応じて phrase_hints を指定することで、音声認識機能にヒントを提供できます。これらのヒントは、特定の会話状態での認識を支援します。

自動音声適応機能では、会話の状態を自動的に使用して、すべての検出インテント リクエスト用の音声コンテキスト ヒントとして関連するエンティティとトレーニング フレーズを渡すことで、エージェントの音声認識の精度が向上します。なお、この機能はデフォルトでは無効に設定されています。

自動音声適応を有効または無効にする

自動音声適応を有効または無効にするには、次の手順を実行します。

Console

  1. Dialogflow CX Console を開きます。
  2. GCP プロジェクトを選択します。
  3. エージェントを選択します。
  4. [エージェント設定] をクリックします。
  5. [音声と IVR] タブをクリックします。
  6. [Enable Auto Speech Adaptation] をオンまたはオフに切り替えます。
  7. [保存] をクリックします。

API

Agent 型の get メソッドと patch/update メソッドをご覧ください。

エージェント リファレンスのプロトコルとバージョンを選択:

プロトコル V3 V3beta1
REST エージェント リソース エージェント リソース
RPC エージェント インターフェース エージェント インターフェース
C++ AgentsClient 利用不可
C# AgentsClient 利用不可
Go AgentsClient 利用不可
Java AgentsClient AgentsClient
Node.js AgentsClient AgentsClient
PHP 利用不可 利用不可
Python AgentsClient AgentsClient
Ruby 利用不可 利用不可

音声認識改善のためのエージェント設計

自動音声適応を有効にした後、それを有効活用するようにエージェントを構築できます。次のセクションでは、エージェントのトレーニング フレーズ、エンティティに一定の変更を加えると音声認識がどのように改善されるかを説明します。

トレーニング フレーズ

  • 「stuffy nose」のようなフレーズを使ってトレーニング フレーズを定義した場合、ユーザーの発声は、よく似た発音の「stuff he knows」ではなく確実に「stuffy nose」と認識されます。
  • Dialogflow にフォーム入力を促すことを強制するような必須パラメータがある場合、自動音声適応は入力対象エンティティに対して強いバイアスをかけます。

すべてのケースで、自動音声適応は音声認識にバイアスをかけるのみで、制限することはありません。たとえば、Dialogflow がユーザーに必須パラメータを促している場合でも、トップレベルの「エージェントと話したい」インテントなどの他のインテントを依然としてトリガーできます。

システム エンティティ

@sys.number システム エンティティを使用するトレーニング フレーズを定義して、エンドユーザーが「I want two」と発声した場合、それが「to」、「too」、「2」、「two」と認識される可能性があります。

自動音声適応を有効にすると、Dialogflow は音声認識時に @sys.number エンティティをヒントとして使用し、このパラメータが「2」として抽出されやすくなります。

カスタム エンティティ

  • 企業が提供するプロダクト名やサービス名のカスタム エンティティを定義して、エンドユーザーがそれらの用語を発声した場合、認識される可能性が高くなります。@product エンティティとしてアノテーション付けされているトレーニング フレーズ「I love Dialogflow」は、「I love Dialogflow」、「I love Cloud Speech」、@product エンティティにある他のすべてのエントリにバイアスをかけるように自動音声適応に指示します。

  • Dialogflow を使用して音声を検出する際には、クリーン エンティティの同義語を定義することが特に重要です。「Dialogflow」と「Dataflow」という 2 つの @product エンティティのエントリがあるとします。「Dialogflow」の類義語としては、「Dialogflow」、「dialogue flow」、「dialogue builder」、「Speaktoit」、「speak to it」、「API dot AI」が考えられます。最も一般的なバリエーションをカバーしていることから、これらは妥当な類義語です。「dialogue flow」によってすでにカバーされているため、「dialogue flow builder」を追加する必要はありません。

  • ユーザーが、連続して異なる数のエンティティを発話すると、あいまいになる可能性があります。たとえば、「I want two sixteen packs」は、16 パックの 2 つ分、または 216 パックを意味する可能性があります。音声適応は、スペルアウトされた値のエンティティを設定する場合に、これらの曖昧さを取り除くのに役立ちます。
    • 以下のエントリを使用して quantity エンティティを定義します
      zero
      one
      ...
      twenty
    • 以下のエントリを使用して product または size エンティティを定義します
      sixteen pack
      two ounce
      ...
      five liter
    • 音声適応ではエンティティの類義語のみが使用されるため、参照値 1 と単一の類義語 one を使用してエンティティを定義し、フルフィルメント ロジックを簡素化できます。

正規表現エンティティ

正規表現エンティティは、正しく構成され、テストされた場合、「ABC123」や「12345」のような英数字や数字のシーケンス用の自動音声適応をトリガーできます。

これらのシーケンスを音声で認識するには、次の要件の 4 つすべてを実装してください。

1. 正規表現エントリの要件

任意の正規表現を使用してテキスト入力からエンティティを抽出できますが、特定の表現のみが、音声を認識するときにスペルアウトされた英数字または数字シーケンスのバイアスに自動音声適応を伝えます。

正規表現エンティティでは、少なくとも 1 つのエントリが次のルールすべてに従う必要があります。

  • 英数字である必要があります(例: \d\w[a-zA-Z0-9])。
  • 空白  \s を含めることはできません(ただし、\s*\s? は含めることができます)
  • キャプチャ グループまたは非キャプチャ グループ () を含めることはできません
  • ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ | のような特殊文字や句読点と一致しないようにしてください

このエントリには、文字セット [] と、*?+{3,5} などの繰り返し量指定子を含めることができます。

をご覧ください。

2. パラメータ定義の要件

正規表現エンティティを必須のフォーム パラメータとしてマークし、フォーム入力中に収集できるようにします。これにより、インテントとシーケンスを同時に認識しようとするよりも、自動音声適応がシーケンス認識に強くバイアスをかけることができます。そうしないと「Where is my package for ABC123」が「Where is my package 4ABC123」と誤認識される可能性があります。

3. トレーニング フレーズのアノテーションの要件

インテント トレーニングのフレーズ アノテーションには、正規表現エンティティを使用しないでください。これにより、フォームの入力中にパラメータが解決されます。

4. テストの要件

音声適応のテストをご覧ください。

Examples

たとえば、単一のエントリが ([a-zA-Z0-9]\s?){5,9} の正規表現エンティティは、キャプチャ グループを含んでいるため、音声シーケンス認識機能をトリガーしません。これを修正するには、ただ [a-zA-Z0-9]{5,9} の別のエントリを追加するだけです。これで、「ABC123」と一致する場合にシーケンス認識機能を利用できますが、スペースを許可する元のルールにより、NLU は「ABC 123」のような入力とも一致します。

以下の正規表現の例は、英数字シーケンスに適用されます。

^[A-Za-z0-9]{1,10}$
WAC\d+
215[2-8]{3}[A-Z]+
[a-zA-Z]\s?[a-zA-Z]\s?[0-9]\s?[0-9]\s?[0-9]\s?[a-zA-Z]\s?[a-zA-Z]

以下の正規表現の例は、数字シーケンスに適用されます。

\d{2,8}
^[0-9]+$
2[0-9]{7}
[2-9]\d{2}[0-8]{3}\d{4}

音声適応のテスト

特定のトレーニング フレーズまたはエンティティの一致に対するエージェントの音声適応機能をテストする際に、会話の最初の音声による一致のテストに直接移動しないでください。テストする一致の前に、会話全体で音声またはイベント入力のみを使用する必要があります。この方法でエージェントをテストする場合の動作は、実際の本番環境の会話の場合と同様です。

制限事項

次の制限が適用されます。

  • 長い文字シーケンスを認識することは挑戦です。単一のターンで正確にキャプチャできる文字数は、入力音声の品質に直接関係します。正規表現エンティティのガイドラインのすべてに沿っていても、シーケンス全体を 1 回のターンでキャプチャするのが難しい場合は、次のようなより対話型の代替手段を検討してください。

    • データベースに対してシーケンスを検証する際は、日付、名前、電話番号など、その他の収集されたパラメータを相互参照し、不完全な一致を許容することを検討してください。たとえば、ユーザーに注文番号を尋ねるだけでなく、電話番号も尋ねます。これで、Webhook が注文ステータスに対してデータベースをクエリする際に、まず電話番号に依拠し、それからそのアカウントに最も近くマッチする注文を返すことができます。これにより、Dialogflow で「ABC」が「AVC」として誤って聴き取る可能性がありますが、それでも正しい注文ステータスを返します。
    • 非常に長いシーケンスの場合は、途中で一時停止するようにエンドユーザーに促して、bot が期待どおりに確認できるようにするフローの設計を検討してください。
  • 自動音声適応のシステムおよび正規表現エンティティに対する組み込みサポートは、言語によって異なります。サポートされている言語については、Speech クラストークン$OOV_CLASS_ALPHANUMERIC_SEQUENCE$OOV_CLASS_DIGIT_SEQUENCE を確認してください。使用している言語がリストにない場合でも、この制限を回避できます。たとえば、3 文字の後に 3 桁の数字が続く従業員 ID を正確に認識させる場合、次のエンティティとパラメータを使用してエージェントを構築できます。

    • 10 個のエンティティ エントリを含む digit エンティティを定義します(同義語を含む)。
      0, 0
      1, 1
      ...
      9, 9
    • 26 個のエンティティ エントリを含む letter エンティティを定義します(同義語を含む)。
      A, A
      B, B
      ...
      Z, Z
    • 単一のエンティティ エントリを含む employee-id エンティティを定義します(同義語なし)。
      @letter @letter @letter @digit @digit @digit
    • トレーニング フレーズのパラメータとして @employee-id を使用します。