[Amazon Connect]リアルタイムで音声認識&日本語翻訳&感情分析できるソリューションをやってみた

AWS事業本部コンサルティング部の洲崎です!AWSにて提供されている実装ガイドを元にリアルタイムで音声認識&日本語翻訳&感情分析を試してみました。
2021.07.07

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

Amazon Connectは音声機能を持っているだけでなく、様々なAWSサービスと連携することで音声のテキスト化や感情分析を行うことができます。
AI音声分析パッケージとしてAWSにて実装ガイドがありましたので実際に試してみました。

利用するサービス

実際の構成図

※実装ガイドより抜粋

構成の概要としては以下です。
・Amazon Connectに電話をかけると問い合わせフローで処理され、Kinesis Video Streamsを通してストリーミングされる。
・AWS Lambdaにより音声データが連携されてTranscribeで文字起こしを行う。
・AWS Lambdaで書き起こししたデータをDynamoDBに保存する。
・エージェントにルーティングするとAPI GatewayでWebSocket接続確立し、デスクトップでAmazon TranslateとAmazon Comprehendによって注釈がついた文字起こしが可能になる。
・文字起こしがS3バケットにもコンタクト情報含めて保存される。

やってみる

Amazon Connectインスタンス立ち上げとライブメディアストリーミング機能の設定

前提として、ライブメディアストリーミング機能を有効にしたAmazon Connectインスタンスが必要です。
Amazon Connectインスタンスの作成方法については下記ブログをご参照ください。
Amazon Connect コンタクトセンター構築で必要な設定を私なりにまとめてみました

Amazon Connectインスタンスが作成できたら、Amazon Connectのインスタンス設定画面にいき、データストレージを選択します。
データストレージの中にあるライブメディアストリーミングを有効化にします。
プレフィックス名はわかりやすい名前、暗号化でKMSキーの選択、データ保持期間は希望の時間を入れていきます。

ここまで設定ができたら、Amazon ConnectのインスタンスエイリアスとインスタンスIDを控えておきます。
インスタンスエイリアスはインスタンスの名前、インスタンスIDはインスタンスARNの/より後ろの部分になります。
(例:arn:aws:connect:::instance/11111111-2222-3333-4444-555555555555)の赤文字部分になります。

CloudFormationでのデプロイ

AWSがAWS CloudFormationを用意しているのでそちらでデプロイを行います。
CloudFormationテンプレート
こちらのリンクを踏んでいただくと、CloudFormationの画面に推移します。
リージョンを変更する場合、右上のバージニアのところをクリックします。
スタックの名前はわかりやすい名前で、インスタンスIDとインスタンスエイリアスは控えた情報を記載していきます。
Website Bucket NameはS3バケットの一意の名前を入れます。ウェブサイトアセットの保存に利用します。
Call Audio Bucket Nameは通話記録ファイルを保存します。Website Bucket Nameとは異なる一意の名前を入れます。
他はデフォルト値で進めていきます。

スタックオプションの設定画面もデフォルトのままで次へ、をクリックします。
レビューで設定内容を確認し、IAMリソースが作成されることを承認にチェックをしてスタックの作成を行います。

ステータスがCREATE_COMPLETEになることを確認します。

問い合わせフローの作成

次にAWSが用意している問い合わせフローを今回対象のAmazon Connectインスタンスにインポートします。
テンプレートはCloudformationを流した時にS3のCall-Audio-bucketに保存されています。

この中のagentWhisperKvsStreamingSampleFlowkvsStreamingSampleFlowをダウンロードします。
ダウンロードできたら、Amazon Connectにログインし、ルーティング→問い合わせフローに移動します。

コンタクトフローの作成の横にある▼ボタンをクリックし、エージェントウィスパーフローをクリックします。

開きましたら右上の▼ボタンをクリックし、フローのインポート(ベータ)をクリックしてagentWhisperKvsStreamingSampleFlowを選択します。
インポートできたらkvsStreamingSampleFlowをコンタクトフローの作成→インポート(ベータ)でインポートします。
ルーティング→電話番号で、電話番号に対して新しく作成したkvsStreamingSampleFlowの紐付けを行います。

デモのウェブUIに接続する

次にエージェントが見る用のデモのウェブUIに接続できるか確認していきます。
CloudFormationコンソールを開き、該当のスタックの[出力]タブで、cloudfrontEndpointキーの値をコピーします。
Amazon Connectコンソールに移動し、承認済みオリジン画面へ移動します。
オリジンの追加で、先ほど控えたcloudfrontEndpointキーの値の.net部分のみまでを追加します。
(例: https://xxxxxxxxxx.cloudfront.net)

あとはしばらく時間をおき、CloudFrontのドメインにアクセスすると、ユーザー画面が表示されました!
TranslationのところをEnglishから”日本語”に選択することで、上は英語、下は日本語に翻訳されて表示されます。

エージェントでログインして電話を受け取り会話すると、ほぼリアルタイムで書き起こしと翻訳、感情分析がされます!
感情は可愛らしい顔文字アイコンが反応します。
(知ってる英単語を適当に話してしまい、罰金罰金と表示されてしまいました。。ここは英語学習頑張ります)

まとめ

今回はAWSが用意している実装ガイドを元にAmazon Connect×AIサービスを試してみました!
すでにテンプレートがあるので、実際に試す際にハードルが下がるのがよいですね。
また、今日はクラスメソッドの設立記念日(7/7)になります。
引き続きAmazon Connectをはじめとした技術記事を書いていきます!

ではまた!コンサルティング部の洲崎でした。

参考

Amazon Connect の AI 音声分析