🎙️

Amazon Connect × Deepgram モデルで実現するセルフサービスコンタクトセンター

はじめに

以前の記事で、Amazon Connect と ElevenLabs モデルとの連携について検証しました。
今回はは ElevenLabs と同じくサードパーティ連携が対応している Deepgram との連携を試してみます!

AWS 公式ドキュメント:
Setting up Deepgram speech model preference

Deepgram とは

Deepgram は、ディープラーニングを活用した高精度な音声認識 API を提供するサービスです。Speech-to-Text (STT)Text-to-Speech (TTS)Voice AgentAudio Intelligence といった音声 API のプラットフォームを提供しています。

deepgram-platform

Deepgram で使用できるモデル

Deepgram は STT/TTS 共に複数のモデルを提供しています。日本語対応モデルも複数あるほか、医療向けやミーティング向けなど、用途に応じて特化型のモデルも提供しています。

STT(Speech-to-Text)で日本語対応しているモデルの一例

Models & Languages Overview

モデル モデル名 特徴 言語対応 ユースケース
Flux flux-general-multi 会話型ASR、ターン検出機能統合 多言語(日本語含む) リアルタイムエージェント、カスタマーサポートボット、ターンベースのエクスペリエンス
Nova-3 nova-3 ストリーミングの word error rate(WER) 54.2% 削減/バッチ 47.4% 削減 多言語(日本語含む) 汎用の最高性能 ASR、会議、イベント字幕、マルチスピーカー、ノイズ環境

その他、Nova-2 には meeting, phonecall, finance, conversationalai など幅広く用途特化型モデルがあるようです。(ただ、ほとんどが対応言語が英語のみになっていました)

TTS(Text-to-Speech)で日本語対応しているモデルの一例

Voices and Languages

TTS では主に Aura-2 というシリーズのモデルが利用できます。対応言語単位で異なるモデルが用意されており、日本語は性別やキャラクター毎に以下のようなモデルが用意されているようです。公式ドキュメント上は、FeaturedAll Available で区別して記載されており、おそらく Featured の方がより推奨なんだろうと想像します。

カテゴリ モデル名 性別 年齢 特徴 ユースケース
Featured aura-2-fujin-ja 男性 Adult 落ち着いた、自信がある、知識豊富、プロフェッショナル、スムーズ インタビュー、カジュアルチャット、IVR
Featured aura-2-izanami-ja 女性 Adult 親しみやすい、明瞭、知識豊富、丁寧、プロフェッショナル カジュアルチャット、カスタマーサービス、インタビュー、IVR
All Available aura-2-uzume-ja 女性 Young Adult 親しみやすい、明瞭、丁寧、プロフェッショナル、信頼できる カスタマーサービス、インタビュー、IVR、コマーシャル
All Available aura-2-ebisu-ja 男性 Young Adult 落ち着いた、深い、自然、忍耐強い、誠実 カジュアルチャット、カスタマーサービス

Deepgram は STT/TTS どちらのモデルも利用できるので、Amazon Connect コンタクトフローでも STT/TTS 両方 Deepgram を使用してみます。

アーキテクチャ概要

Amazon Connect と Deepgram を統合した際のアーキテクチャは以下のドキュメントで解説されています。既存のコンタクトフローや運用ロジックを変更することなく、Amazon Transcribe と Amazon Polly を Deepgram の STT および TTS モデルにシームレスに置き換えることができるのが利点です。

Deepgram ドキュメント:
Amazon Connect and Deepgram

architecture

  • Connect/Lex → Deepgram (STT): 発信者の音声がリアルタイムでDeepgramにストリーミングされ、リアルタイム文字起こしが実行されます。
  • Deepgram → Connect/Lex: 文字起こし結果が即座に返され、意図認識やルーティングロジックに使用されます。
  • Connect/Lex → Deepgram (TTS): Lexがテキストを Deepgram TTS モデルに送信し、自然な音声応答を生成します。

設定手順

前提条件

  • Amazon Connect インスタンスが作成済み
  • Deepgram アカウントが作成済み

ステップ 1: Deepgram API キーの取得

  1. Deepgram Console にログイン
    key
  2. 左側のナビゲーションから API Keys を選択
  3. Create a New API Key をクリック
  4. 生成された API キーをローカルにコピー(後の工程で AWS Secrets Manager に保存します)

ステップ 2: AWS KMS キーを作成

Connect と Lex が Deepgram API キーを復号化するために必要です。

  1. 対称キー を指定し、キー管理者を選択(例:自分の IAM ユーザー/ロール)。キーポリシーを編集 して、Lex と Connect からのアクセス権限を追加で付与します。 Lex からは STT、Connect からは TTS の処理で Deepgram の API が呼び出される想定です。
{
  "Sid": "Allow Lex and Connect to decrypt Deepgram secret",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "lex.amazonaws.com",
      "connect.amazonaws.com"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
  1. キーを作成します。

ステップ 3: AWS Secrets Manager にシークレットを保存

  1. Secrets Manager で新しくシークレットを保存します。シークレットのタイプは その他のシークレットのタイプ を指定します。

  2. キー/値のペアとして以下を追加します

    • キー: apiToken
    • 値: Deepgram の API キーを設定
  3. 暗号化キー: 先ほど作成した KMS キー を選択し、「次」をクリックします

  4. シークレット名を設定し、リソースのアクセス許可からリソースポリシーを編集して、Connect と Lex にアクセス権限を付与します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "lex.amazonaws.com",
          "connect.amazonaws.com"
        ]
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*"
    }
  ]
}
  1. シークレットの保存完了後、シークレット ARN をコピーしておきます

ステップ 4: Amazon Lex で Deepgram を設定(STT)

Deepgram を音声認識プロバイダーとして設定したボットを作成します。

  1. Amazon Connect 管理画面から、日本語で Amazon Lex ボット(会話型 AI)を作成します
  2. Amazon Connect AI agent in Connect intent を有効化します。
  3. Speech model を編集し、以下のように設定します。
  • Voice provider: Deepgram を選択
  • Model ID: 使用する Deepgram モデル。今回は、日本語に対応している nova-3 を選択してみます。
  • Secret ARN: ステップ 2 で作成したシークレットの ARN を設定します。

deepgram-lex

  1. Lex のバージョンを作成します。

ステップ 5: Amazon Connect のセルフサービスフローを作成

以前の ElevenLabs の検証と同様、GitHub の aws-samples にある sample-amazon-connect-starter-kit-japan のパッケージで構築できるフローを活用します。
https://github.com/aws-samples/sample-amazon-connect-starter-kit-japan

  1. Amazon Connect 管理画面から、コンタクトフロー画面に遷移し、モジュールタブからstarter-kit_AC_PKG_init_flowModule を選択します。

  2. 音声の設定 ブロックを選択します。ここでは TTS として Deepgram を使用する設定を行います。

  3. 以下の通り設定します。

  • 音声プロバイダー : Deepgram
  • Deepgram モデル : aura-2
  • Deepgram 音声 : fujin
    • ここに何を入力すべきか最初わからなかったのですが、どうやら公式ドキュメント によると、aura-2-(Name)-ja で提供されるモデル名の (Name) の部分を指定すれば良さそう
    • 今回は Featured モデルの中の男性音声である fujin を選択
  • Secrets Manager ARN : Secrets Manager でコピーしたシークレット ARN
  • 言語 : 日本語(日本)

set-voice

  1. フローモジュールを保存 → 公開します

  2. コンタクトフロー画面からフロータブより、starter-kit_AC_PKG_self_service_to_agent_Inbound_flow のフローを開きます

  3. 顧客の入力を取得する ブロックを開き Lex ボットを、ステップ4 の手順で作成したボットに変更します

ステップ 5: Deepgram の STT/TTS を検証!

コンタクトフローに紐づいた電話番号に架電して、実際の音声を確認してみます。
以下のURLより実際の音声を音声を聞くことができます。

https://doa4iydrlyrsr.cloudfront.net/audio/deepgram-voice.wav

悪く無いです。ややテンションが低い気もしますが、変に明るく畏まった AI 音声よりも却って人間らしさが出ている気がします。ただ、一方で 繰り上げ返済 → 繰りがみ返済のように、漢字の誤変換が発生している部分もありました。レイテンシーについては、大きなストレスになる程ではないかな、という感触です。この辺は Deepgram の他のモデルも試して精度に変化がないかは確認してみたいところです。

まとめ

Amazon Connect の 3rd Party 音声モデル連携を使用し、Deepgram による STT/TTS を検証してみました。音声 AI のプロバイダーは様々なスタートアップがあるので、AWS 外のプロバイダーとすぐに連携できる手軽さは魅力的ですね。ボイスボットによるカスタマーサポートの実装を検討されている場合は ElevenLabs とともに有力な選択肢になりそうです。

参考リンク


Content was rephrased for compliance with licensing restrictions.

アマゾン ウェブ サービス ジャパン (有志)

Discussion