
Amazon Connect コンタクトフローでAmazon Lexを利用時、スロットタイプ AMAZON. AlphaNumericは、発話で英数字をどこまで認識してくれるか調査してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
ConnectとLexでコンタクトセンター向けチャットボットを構築する場合、ユーザーから英数字を聞き取る場合は、LexのスロットタイプであるAMAZON.AlphaNumericの利用を検討されるかと思います。
このAMAZON.AlphaNumericでは、英字(アルファベット)と数字をどこまで認識するか、構築前に把握する必要がありますので、調査してみました。
具体的には、0から9までの数字や小数点つきの数字、数桁の数字、英字などを認識するかを検証しました。

まず、調査するための環境の作成方法をご説明します。
調査環境の作成
今回、調査するために、作成したボットとインテントの作成方法を説明します。
ボットの作成
- Lexのコンソール画面から、[ボットの作成]をクリックします。

- [空のボットを作成します]を選択し、ボット名を記載し、下記画像の通りに入力します。

- 日本語を選択し、音声はTakumiを選択し、[完了]をクリックします。

これでボットが作成できました。
インテントの作成
- インテントの[インテントを追加]から[空のインテントを追加]でインテントを作成します。

- インテント名を入力し、サンプル発話に「英数字」を追加します。

- [スロットを追加]から、スロットタイプ[AMAZON.AlphaNumeric]を選択します。プロンプトと名前も記載します。
- スロット名を
alphanumericとしました。
- スロット名を
- [Confirmation]をアクティブにし、確認プロンプトに以下を記載します
{alphanumeric}、でよろしいでしょうか?
- インテントを保存後、Buildすると、インテントのテストが行えます。
コンタクトフローの作成
Connectインスタンスの作成や電話取得は、下記の記事を参考にしてください。
コンタクトフローの作成を解説します。
コンタクトフロー図は、下記になります。

音声の設定
音声は、Lexで設定した音声と同じにする必要があります。
今回は、Takumiを設定しております。
また、言語属性を設定にチェックをします。

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

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

ループ
今回は、1回の通話で多くテストしたかったため、ループを10回設定しました。
テスト方法
上記のコンタクトフローを設定し、電話番号とコンタクトフローを紐付けるとテストができます。
電話をかけて英数字を発話して、Lexが認識するかテストができます。
調査結果
調査結果を出します。
調査日(2023年4月)時点でのLexの認識能力のため、時間が経てば認識能力が上がることで、より聞き取ってくれる可能性はあります。
ユーザー側の発話を「ひらがな」、Connect側の発話は、「カタカナ」で表記しています。
0~10の数字
表のLexの認識のうち×のところは、Lexが誤認識した箇所です。
| 発話内容 | Lexの認識 | 判定 |
|---|---|---|
| ぜろ | 0 | ○ |
| れい | 0 | ○ |
| いち | 1 | ○ |
| に | 2 | ○ |
| さん | 3 | ○ |
| よん | 4 | ○ |
| し | 4 | ○ |
| ご | 5 | ○ |
| ろく | 6 | ○ |
| なな | 7 | ○ |
| しち | 7 | ○ |
| はち | 8 | ○ |
| きゅう | 9 | ○ |
| く | 9 | ○ |
| じゅう | × | × |
| ろくじゅうさん | × | × |
二桁の数字は、聞き取れませんでした。必ず1桁ずつ伝える必要があるようです。
複数の数字
| 発話内容 | Lexの認識 | 判定 |
|---|---|---|
| ご ろく なな | v67 | × |
| ぜろ ぜろ さん さん | 0033 | ○ |
| よん さん に いち | 4321 | ○ |
うまく認識してくれたり、認識しなかったりしました。
精度はそこまで高くなさそうです。
複数の数字のConnect側の発話
「よん さん に いち」と発話すると、「4321」とLexが認識してくれますが、確認プロンプト時、Connect側からは、「ヨンセンサンビャクニジュウイチ」と4桁の数字で返されますので、注意しましょう。
「よん さん に いち」とConnect側で発話させる方法として、以下の2つが考えられます。
- Lambdaで、確認プロンプト時、Connect側から1文字ずつ返すように設定する
- カスタムスロットタイプで、0~9までの数字を作成し、必要な数のスロット(custom_slots) を作成し、確認プロンプトで、繋げる
- 確認プロンプト:
{custom_slots_1}、{custom_slots_2}、{custom_slots_3}、{custom_slots_4}でよろしいでしょうか
- 確認プロンプト:
小数点付きの数字
| 発話内容 | Lexの認識 | 判定 |
|---|---|---|
| ぜろてんにいご | × | × |
| にいてんご | × | × |
小数点のついた数字は、認識されませんでした。
マイナスの数字
| 入力内容 | Lexの認識 | 判定 |
|---|---|---|
| まいなすさん | -3 | ○ |
| まいなすごじゅうさん | -53 | ○ |
| まいなすごーさん | -53 | ○ |
| まいなすに まいなすに | -2-2 | ? |
| まいなすに まいなすに まいなすに | -2-2-2 | ? |
| まいなすにからに | × | × |
マイナスの数字は、認識されるようです。
ただし、「まいなすに まいなすに」と発話した場合、Lexのログでは、「-2-2」と認識していますが、確認プロンプト時、Connect側から「マイナス 二 カラ 二(-2から2)」と答えが返ってきました。
「まいなすに まいなすに まいなすに」の場合、確認プロンプト時、Connect側から「マイナス 二 カラ 二 カラ 二(-2から2から2)」と答えが返ってきました。
下記が実際のslots内のログです。
"slots": {
"alphanumeric": {
"value": {
"originalValue": "マイナス 二 マイナス 二 マイナス 二",
"interpretedValue": "-2-2-2",
"resolvedValues": [
"-2-2-2"
]
},
"shape": "Scalar"
}
}
下記が確認プロンプトのメッセージ内容です。
"messages": [
{
"contentType": "PlainText",
"content": "-2-2-2、でよろしいでしょうか"
}
],
おそらく、Connect側で「マイナス 二 カラ 二 カラ 二」と発話された理由は、-2-2-2は、最初の-は、「マイナス」、他の2つの-は、「カラ」と認識したと推測します。
単位をつけた数字
| 入力内容 | Lexの認識 | 判定 |
|---|---|---|
| いっこ(1個) | × | × |
| にこ(2個) | × | × |
| にわ(2羽) | × | × |
| にほん(2本) | × | × |
単位付きの数字は、認識しませんでした。
英字
| 発話内容 | Lexの認識 | 判定 |
|---|---|---|
| えー | A | ○ |
| びー | B | ○ |
| しー | 4 | × |
| すぃ | 4 | × |
| すぅぃ | 4、S5 | × |
| でぃー | D | ○ |
| でぇい | D | ○ |
| いー | E | ○ |
| えふ | IF、F | △ |
| じー | G | ○ |
| えいち | A1 H | △ |
| えっち | H | ○ |
| あい | I | ○ |
| じぇい | J | ○ |
| けー | K | ○ |
| える | L | ○ |
| えむ | M | ○ |
| えぬ | N | ○ |
| おー | A | × |
| おう | O | ○ |
| ぴー | P | ○ |
| きゅー | 9 | × |
| あーる | R | ○ |
| えす | S | ○ |
| てぃー | T | ○ |
| ゆー | U | ○ |
| ぶい | V | ○ |
| ゔぃー | V | ○ |
| だぶりゅー | W | ○ |
| だぶる | W | ○ |
| えくす | e9s | × |
| えっくす | X | ○ |
| わい | Y | ○ |
| ぜっと | Z | ○ |
「C」と「Q」は、数字の4、9に誤認識しました。発音がよければ、認識してくれるかもしれません。
「F」は、「IF(いふ)」と誤認識することがありました。
英数字の組み合わせ
| 発話内容 | Lexの認識 | 判定 |
|---|---|---|
| あーるえすてぃー | rst | △ |
| さんじーご | 3g5 | △ |
色々な英数字の組み合わせで調査しましたが、認識の能力は、そこまで高くない印象でした。
同じ組み合わせでも認識できたり、できなかったりしました。
Connect側での発話
ちなみに、Connect側で発せられる数字の発話は、以下になります。
| 数字 | Connectの発話 |
|---|---|
| 0 | レイ |
| 1 | イチ |
| 2 | 二 |
| 3 | サン |
| 4 | ヨン |
| 5 | ゴ |
| 6 | ロク |
| 7 | ナナ |
| 8 | ハチ |
| 9 | キュウ |
「0」や「4」のことをConnect側では、「レイ」、「ヨン」と発話するようです。
「Q(キュー)」と「9(キュウ)」は、どちらのことを言っているか判断できないですね。
Connect側での発話では、「C(シー)」と「4(ヨン)」に、別れているので、聞き取りやすいですね。
「ゼロ」と発話させたい場合、AWS LambdaとLexを連携する必要があります。
最後に
Connectのコンタクトフロー内でLexのAMAZON.AlphaNumericを使用する際、英数字をどこまで認識してくれるかある程度把握できました。
AMAZON.AlphaNumericは、1文字の場合、精度は高いですが、複数の文字ですとあまり精度が高い印象ではありませんでした。
「C」と「4」の発話を聞き分けることは、人間でも難しいので、使いにくいかと思いました。
実運用する方法として、以下の方法が考えられます。
- 英数字を分けて、数字のみ、英字のみ、を聞き取るようにする。
- 英字のみの場合
- カスタムスロットタイプで英字を1文字ずつ計26個作成し、1文字ずつ聞くスロットを作成
- 数字のみの場合
- カスタムスロットタイプで数字を0~9計10個作成し、1文字ずつ聞くスロットを作成
- スロットタイプのAMAZON.Numberを利用する
- Lexは使わず、スマホの物理キーで数字を入力してもらうフローに変える
- 英字のみの場合
英数字を混ぜて、精度良くLexが認識できる方法を探してみます。。
参考になれば幸いです。






