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を使用する際、数字をどこまで認識してくれるかある程度把握できました。

参考になれば幸いです。