Contact Lens for Amazon Connectが日本語対応したので試してみた

# はじめに

**[KDDI Engineer&Designer Advent Calendar 2021](https://qiita.com/advent-calendar/2021/engineer-designer)**の7日目の記事です。

今回は**[Contact Lens for Amazon Connect](https://aws.amazon.com/jp/connect/contact-lens/)**というサービスを取り上げたいと思います。
簡単にいうと、[Amazon Connect](https://aws.amazon.com/jp/connect/)の拡張サービスで、**音声データからテキストの書き起こしや、感情分析の機能を提供**するものです。
サービス自体は2019年12月に発表されたのですが、2021年9月になってようやく日本語対応されました。

なお、テキスト書き起こしの音声認識エンジンは[Amazon Transcribe](https://aws.amazon.com/jp/transcribe/)が、感情認識エンジンは[Amazon Comprehend](https://aws.amazon.com/jp/comprehend/)が裏で利用されているようですが、使う側からすればそれらはあまり意識する必要はなく、Amazon Connectに組み込むことが可能です。

ということで、さっそくこれを試してみたいと思います。


なお、Amazon Connectについて前提知識がない方は、今までにいくつか記事を書いてますのでよろしければご覧ください。

- **[【3分でわかる】Amazon Connectは何がすごいのか？](https://qiita.com/hamham/items/46aa03e7977b32d5ad14)**
- **[【ハンズオン】Amazon ConnectからLambdaを実行しEC2インスタンスを操作する](https://qiita.com/hamham/items/f7ec1244494f41ff02a3)**
- **[【超簡単】Amazon Connectを使って無料で電話する方法](https://qiita.com/hamham/items/a77ba2eaaec8aec69334)**

# Connect Lens for Amazon Connectを組み込む準備

### 必須設定

すでにAmazon Connectのインスタンスは作成済みで、ひととおり問い合わせフローは作成できている前提でスタートします。

まずは、Amazon Connectのインスタンスに対して、「Analytics tools」から**「Contact Lensを有効にする」**をチェックします。

![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/fa089f0f-61e5-e0e2-1e6a-25c0ec705a8d.jpeg)


次にAmazon Connectインスタンスの中身の操作に入ります。
「問い合わせフロー」の途中に**「記録と分析の動作を設定」**を組み込みます。

![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/35d55c11-3abf-3176-d5a9-d11824aed1e4.jpeg)

そして、この「記録と分析の動作を設定」の中身を設定します。
まず「通話記録」に関しては「オン」にして**「エージェントおよび顧客」**を選択します。

![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/f9683fdc-646c-4d1f-23c7-8ed7ca96e27f.jpeg)

そして、**「Contact Lensの音声分析を有効にします。」**をチェックします。
「通話後の分析」と「リアルタイムおよび通話後の分析」が選べますが、前者は通話終了後のバッチ処理になるので認識精度はやや上がり、後者はリアルタイム処理になるので認識精度はやや下がるようです。
ここでは、前者の**「通話後の分析」**を選択することにします。用途によってここは変更してください。

また、言語に関しては**「日本語」**を設定して「Save」します。

![04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/0315b450-637b-02ba-d339-0b30f3b3c445.jpeg)

次に**「セキュリティプロファイル」**からユーザーが使うロールに対して必要な権限を与えます。
以下の9つについてチェックすればよいようです。

![05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/eb61552e-87fb-180c-123a-b250da21c7ce.jpeg)

これで一通りの準備は完了です。

### 任意設定（キーワード検出ルール）

ここでは、キーワードの検出ルールの設定を行っいます。この設定は必須ではありません。
まず「ルールを作成」から**「Contact Lens」**をクリックします。

![06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/ebf0d2c4-a151-57bd-0377-f551bd77e76e.jpeg)

そして、ここでは顧客またはオペレータのいずれかから**「解約」**という言葉が発せられた場合に検知するルールを作成したいと思います。
以下のように設定して、ルール名を名付ければOKです。

![07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/f821096a-517c-2036-cd54-f729c0a88a02.jpeg)

# シナリオを組んでテストする。

これで準備が整いましたので、実際に電話をかけて、顧客とオペレータを模した通話を試してみたいと思います。
コンタクトセンターでありがちなシナリオを想定して台本を書いてみました。
なお、実際に通話をするので協力者が必要になります。
今回は、@minorun365に顧客役をお願いしました。

```
オペ：お電話ありがとうございます。本日はどのようなお問い合わせでしょうか？
顧客：回線を解約したいです。
オペ：解約ですね。少々おまちください。

---保留（5秒程度）---

オペ：お待たせしました。契約の確認ができました。解約してもよろしいでしょうか？
顧客：はい。大丈夫です。
オペ：では手続きします。このまましばらくお待ちください。

---保留（5秒程度）---

オペ：お待たせしました。解約手続きが完了しました。
顧客：ありがとうございます。
オペ：手続きは以上となります。ほかにご質問はございますか？
顧客：特にないです。
オペ：ではこれで終了となります。ありがとうございました。
```

実際にやってみたデータは**「問い合わせの検索」**から確認することができます。
なお、**通話録音データは通話終了後2～3分ほどで再生できる**ようになりましたが、**テキスト書き起こしデータと感情分析データは10分ほど経ってから遅れて参照できる**ようです。

![08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/383596f9-aeed-228a-e636-a71f9937b5fd.jpeg)


まず、顧客感情の傾向や、どちらが喋っている時間が長いかといったデータがざっくりとグラフ化されます。
また、**通話録音データの再生も可能**です。0.5倍速、2倍速、3倍速も選べます。
通話録音データで顧客側が赤く表示されてるということは、どちらかというと**ネガティブな通話である**ということが分かります。
（Amazon Comprehendは、顧客感情をテキストの内容で判断していて、声色などでは判断していないようです）

次に、テキストの書き起こしです。

![09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/7b1ae33d-e5ba-fc25-81ab-41f1c4582534.jpeg)


冒頭のあいさつ部分が切れてしまいましたが、「解約」というワードはちゃんと拾えてフラグが立っていました。
また、顔文字で顧客の感情が表現されていますが、これは参考程度にしかならないでしょう。
なお、顧客側の音声認識に「フォルド」「ホルド」という謎の認識ワードがあったのですが、これはオペレータ側で保留ボタンを押した際、**「You are on hold（保留中です）」**という言葉が[Amazon Polly](https://aws.amazon.com/jp/polly/)によって読み上げられてしまい、それを顧客側の音声として拾ってしまったようです。

会話自体は、ちゃんとキャッチボールする形で順番に読み上げたのですが、結果をみると**会話のキャッチボールが連結されてしまってる部分もあり**、チグハグ差がみえますね。
このあたりは、今後の改善に期待しましょう。


# さいごに

ということで、Contact Lens for Amazon Connectを試してみました。

私は以前、コンタクトセンターのシステムを構築する仕事をしていましたが、通話録音、音声認識、感情認識といったオプション機能を組み込むのは結構大変です。
それが1時間もかからないくらいで、ここまで組み込むことができました。
ミッションクリティカルで大規模なコンタクトセンターで使うにはまだまだ心許ないかもしれませんが、比較的小規模なコンタクトセンターならこれで十分のようにも思えます。

今後もAmazon Connectや、その周辺のアップデートに期待したいと思います。


# 参考サイト

- https://tech.systems-inc.com/col-aws-cn2/
- https://dev.classmethod.jp/articles/contact-lens-for-amazon-connect-japanese/