Amazon Connect コンタクトフローでAmazon Lexを利用時、スロットタイプ AMAZON. Numberは、発話で数字をどこまで認識してくれるか調査してみた

Amazon Connect コンタクトフローでAmazon Lexを利用時、スロットタイプ AMAZON. Numberは、発話で数字をどこまで認識してくれるか調査してみた

Amazon Connect(以降Connect)のコンタクトフロー上でAmazon Lex(以降Lex)を利用する場合、スロットタイプ AMAZON.Numberは、どこまで認識してくれるかブラックボックス化されていますので、調査しました。
2023.04.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

ConnectとLexでコンタクトセンター向けチャットボットを構築時、ユーザーから数字を聞き取る場合は、LexのスロットタイプであるAMAZON.Numberを利用すると思います。

このAMAZON.Numberでは、普段会話で使う数字の伝え方をどこまで認識するか、構築時に把握する必要がありますので、調査してみました。

具体的には、0から10までの数字や小数点つきの数字、数桁の数字など認識するかを検証しました。

まず、調査するための環境の作成方法をご説明します。

調査環境の作成

今回、調査するために、作成したボットとインテントの作成方法を説明します。

ボットの作成

  1. Lexのコンソール画面から、[ボットの作成]をクリックします。
  2. [空のボットを作成します]を選択し、ボット名を記載し、下記画像の通りに入力します。
  3. 日本語を選択し、音声はTakumiを選択し、[完了]をクリックします。

これでボットが作成できました。

インテントの作成

  1. インテントの[インテントを追加]から[空のインテントを追加]でインテントを作成します。
  2. インテント名を入力し、サンプル発話に「数字」を追加します。
  3. [スロットを追加]から、スロットタイプ[AMAZON.Number]を選択します。プロンプトと名前も記載します。
    • スロット名をnumberとしました。
  4. [Confirmation]をアクティブにし、確認プロンプトに以下を記載します
    • {number}でよろしいでしょうか?
  5. インテントを保存後、Buildすると、インテントのテストが行えます。

コンタクトフローの作成

Connectインスタンスの作成や電話取得は、下記の記事を参考にしてください。

コンタクトフローの作成を解説します。

コンタクトフロー図は、下記のようになります。

音声の設定

音声は、Lexで設定した音声と同じにします。

今回は、Takumiを設定しております。

また、言語属性を設定にチェックをします。

顧客の入力を取得する

下記画像の通り、先程作成したLexボットとインテントを指定します。

Lexボットが表示されない場合、Connectインスタンスの設定で、Amazon Lex ボットを追加されていない可能性がありますので、ご確認ください。

ループ

今回は、1回の通話で多くテストしたかったため、ループを10回設定しました。

テスト方法

上記のコンタクトフローを設定し、電話番号とコンタクトフローを紐付けるとテストができます。

電話をかけて数字を発話して、Lexが認識するかテストができます。

調査結果

調査結果を出します。

調査日(2023年3月)時点でのLexの認識能力のため、時間が経てば認識能力が上がることで、より聞き取ってくれる可能性はあります。

0~10の数字

表のLexの認識のうち-のところは、Lexが誤認識した箇所です。

数字の言い方のバリエーションは、Wikipediaを参考にしました。

発話内容 Lexの認識 判定
ぜろ 0 ○
れい 0 ○
いち 1 ○
ひとつ - ×
に 2 ○
ふた - ×
ふたつ - ×
さん 3 ○
みっつ 3 ○
よん 4 ○
よっつ - ×
し 4 ○
ご 5 ○
いつつ 5 ○
ろく 6 ○
むっつ - ×
なな 7 ○
ななつ - ×
しち 7 ○
ひち 7 ○
はち 8 ○
やっつ - ×
きゅう 9 ○
く 9 ○
ここのつ - ×
じゅう 10 ○
とお 10 ○

「ひとつ」などの「〇〇つ」の言い方は、認識されにくいですが、他は全て認識してくれていますね。

小数

発話内容 Lexの認識 判定
ぜろてんにいご 0.25 ○
れいてんにいご 0.25 ○
にいてんご 2.5 ○
さんじゅうにいてんよんいちご 32.415 ○

小数も認識していますね。

数字を一文字ずつ発話するパターン

入力内容 Lexの認識 判定
さんじゅうよん 34 ○
さんよん 34 ○
せんひゃくさんじゅうご 1135 ○
いちいちさんご 1135 ○

「さんよん」と一文字ずつ伝えても「34」と認識してくれました。

ただし、「さんよん」と伝えると、「さんよん」ではなく「さんじゅんよん」とConnect側から伝えられます

英語

入力内容 Lexの認識 判定
ワン - ×
スリー - ×

英語は、認識できないようです。

Lex側で日本語設定していることが原因だと推測します。

マイナスの数字

入力内容 Lexの認識 判定
まいなすごじゅうさん -53 ○
まいなすさんてんによん -3.24 ○

マイナスの数字も認識しました。

単位をつけた数字

入力内容 Lexの認識 判定
いっこ(1個) 1 ○
にこ(2個) 2 ○
さんこ(3個) 3 ○
さんびゃくえん(300円) - ×
にほん(2本) - ×
いちびょう(1秒) - ×

単位のうち「個」のみが、認識しました。

他の単位については、後述する方法で、他の単位も含めた数字を認識させることができます。

単位も含めた数字をLexに認識させる方法

「100円」を認識するように設定したいと思います。

  1. インテントのスロットから[詳細オプション]をクリックします
  2. サンプル発話に以下を追加し、スロットを更新します。
    • {number}円
  3. インテントのConfirmationのうち、確認プロンプトに「円」を加えた以下の通りに修正します。
    • {number}円でよろしいでしょうか?
  4. インテントを保存しビルド後、電話で「100円」と発話すると、認識しました。

Connect側での発話

ちなみに、Connect側で発せられる数字の発話は、以下になります。

数字 Connectの発話
0 レイ
1 イチ
2 二
3 サン
4 ヨン
5 ゴ
6 ロク
7 ナナ
8 ハチ
9 キュウ
10 ジュウ

「0」のことをConnect側では、「レイ」と発話するようです。

「ゼロ」と発話させたい場合、AWS LambdaとLexを連携する必要があります。

最後に

ConnectとLexのAMAZON.Numberを使用する際、数字をどこまで認識してくれるかある程度把握できました。

参考になれば幸いです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事