自動音声適応

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

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

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

コンソール

  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# 提供なし 利用できません
Go 提供なし 利用できません
Java AgentsClient AgentsClient
Node.js AgentsClient AgentsClient
PHP 提供なし 利用できません
Python AgentsClient AgentsClient
Ruby 提供なし 利用できません

音声認識の改善例

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

トレーニング フレーズ

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

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

システム エンティティ

@sys.number システム エンティティを使用するトレーニング フレーズを定義した場合、エンドユーザーが「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」のような英数字と数字のシーケンス用の自動音声適応をトリガーできます。NLP でエンティティを抽出する任意の正規表現を使用できますが、特定の正規表現のみ、自動音声適用が音声の認識の際にスペルアウトした英数字または数字のシーケンスにバイアスをかけるようにします。

シーケンスを音声で認識する場合は、次の要件をすべて満たしていることを確認してください。

  1. 正規表現エンティティ エントリの少なくとも 1 つが、以下のすべてのルールに従います。

    • 文字セット [] を使用できます
    • 繰り返し数量子(*?+{3,5} など)を使用できます
    • 空白文字や \s は含みませんが、\s*\s? は許されます
    • キャプチャ グループ () は含みません
    • ` ~ ! @ # $ % ^ & * ( ) - _ = + , . < > / ? ; ' : " [ ] { } \ | のような特殊文字や句読点とマッチしないようにしてください
  2. インテントで、正規表現エンティティを必須パラメータとしてマークし、スロット入力中に収集できるようにします。これにより、インテントとシーケンスを同時に認識しようとするよりも、自動音声適応がシーケンス認識に強くバイアスをかけることができます。そうしないと「Where is my package for ABC123」が「Where is my package 4ABC123」と誤認識される可能性があります。

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

また、任意の数字シーケンスを受け入れる場合は、@sys.number-sequence を使用し、ローカライズされた電話番号認識ツールを使用する場合は @sys.phone-number を使用することも検討してください。システム エンティティと非正規表現カスタム エンティティは、フォーム入力を促すことを必要としない自動音声適応でも機能します。

制限事項

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

  1. 長い文字シーケンスを認識することは困難です。たとえば、8kHz 音声のスマートフォン チャンネルでは、16 桁または 10 桁の英数字より長いシーケンスを連続して認識することはできません。たとえば、次のように会話の代替手段を検討します。

    • データベースに対してシーケンスを検証する場合は、日付、名前、電話番号など、他のパラメータと相互参照して、不完全な一致でも受け入れるようにします。たとえば、ユーザーに注文番号を尋ねるだけでなく、電話番号も尋ねます。Webhook がデータベースに対して注文ステータスをクエリすると、まず電話番号を信頼し、そのアカウントに最も一致する注文を返します。この場合、Dialogflow は「ABC」を「AVC」と誤認識することがありますが、ユーザーに対して正しい注文ステータスを返します。
    • 非常に長いシーケンスの場合は、途中で一時停止するようにエンドユーザーに促して、bot が期待どおりに確認できるようにするフローの設計を検討してください。
  2. 自動音声適応のシステムおよび正規表現エンティティに対する組み込みサポートは、言語によって異なります。サポートされている言語については、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 を使用します。