https://a.storyblok.com/f/270183/1368x665/113a3f5bb8/dynamic-speech-generation.png

AI Studioにおけるサードパーティプロバイダーとの動的な音声生成

最終更新日 September 3, 2024

所要時間:1 分

AI Studioは、さまざまな音声合成(TTS)を提供します。 言語と音声スタイルが統合されています。によって強化されています。 音声合成マークアップ言語(SSML)によって強化されています。TTSのオプションは他にもたくさんあります。AI Studioでは、アクセス可能なREST APIエンドポイントを持つサードパーティと柔軟に接続できます。このブログでは、AI Studioを使って動的に生成されたDeepgram合成音声を利用する方法を紹介します。

魅力的で人間的なTTSエクスペリエンスは、自然で親近感のあるインタラクションを促進し、ユーザーに理解され評価されていると感じさせるため、ボイスエージェントにとって非常に重要です。このレベルのエンゲージメントは、フラストレーションを軽減し、コミュニケーション効率を向上させるため、全体的な顧客満足度とロイヤルティを高めます。このブログ記事では 動的に生成される音声ファイル エージェント<>ヒューマンインタラクションの完全なカスタマイズについて説明します。

以前のブログ記事で、静的に生成された音声ファイルを取り上げました。

プロジェクト概要

このブログポストでは、Vonage AI Studioとサードパーティの音声合成プロバイダを使用して、AI Studioフロー全体で使用されるカスタマイズされたパラメータに基づいて音声ファイルを動的に生成する方法について説明します。 このブログでは、おもちゃの電子カルテ(EHR)アプリケーションを使用し、患者ユーザーから医院へのインバウンドコールをデモします。 Studio アプリケーションは、着信ユーザーの電話番号(CLID)を介して、ユーザー に関する情報を収集するように構築されています。 Studio エージェントは Webhook を使用して、患者の姓名、患者識別番号、予約の有無など、患者に関する情報を収集します。 ユーザは ディープグラムオーラTTSモデルを使用します。

前提条件

Voiceエージェントの作り方

ステップ1:エージェントの作成

ダッシュボードから AI StudioダッシュボードからCreate Agentを選択します。音声のユースケースなので、"Telephony "を選択します。

ai-studio_agent_typeSelect Agent Type

ステップ 2: エージェントの設定

エージェントのコンフィギュレーションは、必要な最初のステップです。 私たちのケースでは、ローカライズ、特定の API キーまたはサブアカウントへのエージェントの割り当て、およびエージェントの言語を含む、いくつかの基本的なエージェントの構成を提供しています。

ai_studio_agent_detailsAgent DetailsVoice/Telephonyエージェントは、以下の点にご注意ください。 にはご注意ください。が必要であることに注意してください。 ただし、サードパーティ(Deepgram)のVoiceを使用するため、この設定構成は適切ではありません。 この場合、ここに記載されている方法を使用している限り、アカウントにVonage TTSの使用料金が請求されることはありません。

ステップ3:テンプレートの選択

発信者番号通知」を選択します。 発信者の着信番号(CLID)を使用して、カスタマイズされたグリーティングを提供します。このテンプレートは、出発点として最適です。 このテンプレートの詳細については この記事をご覧ください.

Choose a TemplateChoose a Template

ステップ4:インバウンドコールを選択する

を選択します。 インバウンドコール オプションを選択します。当社のボイスエージェントは着信コールに応答しますが、これはエージェントをインバウンドコールのみに拘束するものではありません。例えば、エージェントとの契約が完了した後、フォローアップメールを送信したい場合、これは インバウンドコールフローの一部として実現できます。AI Studioの詳細はこちら 会話イベント.

Choose Inbound CallChoose Inbound Call

これで、DeepgramのカスタマイズされたVoiceを使用して、Voiceエージェントを構築する準備が整いました。 さあ、始めましょう!

AI Studioで動的に生成された音声合成ファイルを統合する方法

テレフォニーエージェントでは、カスタマイズされたTTSのために2つのノードを使用できることを理解することが重要です。 詳しくは スピーク ノードと 入力を収集ノードの詳細をご覧ください。 ここでは Collect Inputノードに焦点を当てます。

このアプローチを使用すると、会話デザイナーは、任意のプロバイダのAPIエンドポイントで音声ファイルを作成し、返されたファイルを 入力を収集ノードで使用することができます。

このユースケースでは、完全にカスタマイズされたUXを提供することが重要である。 これは、生成されるTTSストリームの一部として、通話中に収集されたユーザーに関する属性を使用したい可能性があることを意味します。 例として、私の既存患者のワークフローでは、個人的に挨拶し、ファーストネームで各ユーザーとコミュニケーションをとりたいと考えています。 そのような例には以下が含まれます:

  • こんにちは F_NAME. 今日もまたお越しいただきありがとうございます。 ご予約は APPT_DATEに設定しています。 APPT_TIME. 何かお手伝いしましょうか?

  • 良いニュースだ、 F_NAMEあなたの予約変更日を NEW_APPT_DATENEW_APPT_TIME. 確認のメールをお送りしましょうか?

  • あなたの携帯電話番号を 患者_携帯電話. これでもよろしいですか? もしそうであれば、現在と予約の前日にリマインダーのメールを送ります。 そうでない場合は、連絡先を変更する必要があることをお知らせください。

このアプローチに飛び込んでみよう。様々なパラメータに格納されている収集したユーザー情報に基づいて動的な音声ファイルを作成するのは少し複雑です。すべてのエンドポイント駆動型TTSプロバイダーは、クラウドストレージ機能を提供していません。むしろ、返された音声バイナリファイルをレスポンスで直接渡すか、Webhookイベント通知者を渡します。これは特にDeepgramの場合で、Webhookで音声を受け取るか、APIコールの200レスポンスの一部として受け取るかを選択できる。 そこで、インバウンドルートを処理する小さなバックエンドのエフェメラルストレージサービスを構築し、中間音声ファイルの処理を行います。 あなたのアプローチ(ルートハンドラ対Webhookサーバ)によっては、Vonage Cloud Runtimeの アセットプロバイダ、または他のブロブ/非構造化ストレージバケット(AWS S3など)を使用することができます。ここでのアイデアは、ファイルの保存と使用を一時的なものにし、これらのファイルが使用された後にクリーンアップされるようにして、アプリケーションのセキュリティとプライバシー管理を強化することです。 では、解決策を探ってみよう。

私の場合、アプリケーションは電子カルテ (EHR) システムであり、予約スケジュール、予約変更、支払い、処方要求などの複数のユースケースを処理するため、汎用 Webhook ノード (ディープグラム・ノード) を作成しています。 私は、受信発信者IDによって患者を認識する処理を行うWebhookノードを追加しました。

  1. アプリケーションの予備的なWebhookノードが着信呼び出し元のファーストネームをフェッチしたら、そのJSON属性をStudioのパラメータ F_NAME. このパラメータに格納された値を使用して、DeepgramへのTTSリクエストに追加します。 Deepgram Webhook Node はこのように構成されます。Deepgram Node Query ParamsDeepgram Node Query Params

  2. JSONフォーマットされたボディ構成には、カスタマイズされた F_NAMEストアドパラメータが含まれています。 Deepgram Webhook Node JSON BodyDeepgram Webhook Node JSON Body

  3. 応答マッピング レスポンスマッピング受信した 2xx レスポンスを使用して、それらの属性を他の Studio パラメータにマッピングして後で使用するためです: Deepgram Node Response MappingDeepgram Node Response Mapping

  4. 返されたURL属性を新しいパラメータにマッピングしていることに注意してください。 合成音声. この URL属性は、音声ファイルのホスティングURLです。 使用しているストレージプロバイダ(S3など)によっては、この urlパラメータが以下のような構造になっていることが重要です: https://storagefile.com/filename.mp3. スタジオのパーサーは、URLの末尾で.mp3ファイル拡張子を明示的に探します。これは、次のノードで合成された音声を再生するために使用されるパラメータです。 以下のスクリーンショットを参照してください: Using the stored URL in the SYNTHETIC_VOICE parameterUsing the stored URL in the SYNTHETIC_VOICE parameter

  5. これは 入力を収集ノードは、次のような他の設定もできるようになっている:

    1. 再試行プロンプト(同じ内容でも可 合成音声パラメータか別のパラメータを指定します。

    2. さらに、発信者応答入力(音声、DTMF)、および無音検出を設定することもできます。

    3. さらに、特定のニーズに基づいて、コンテキストキーワードとエンティティのあいまいさを設定し、エージェントが人間と最適に対話できるようにします。

  6. これは 入力の収集ノードを使用した後に 分類ノードを追加することをお勧めします。 このノードについては こちら. このノードでは、エージェントがユーザの意図を処理できるように、知識とトレーニングを作成します。

結論

今日では、多くのTTSプロバイダーが音声合成パイプラインにLLMを組み込んでおり、より自然で表現力豊かな音声を実現しています。以前は、TTSは主に、事前に録音された音声スニペットをつなぎ合わせる連結合成や、隠れマルコフモデル(HMM)のような統計モデルを使用するパラメトリック合成のような手法で行われていました。このような初期の手法では、ロボット的でニュアンスの乏しい音声になることが多かった。

LLMは、膨大な量のデータと高度なニューラルネットワークアーキテクチャを活用することで、音声合成を強化し、人間のような音声パターンを理解・生成します。LLMは、文脈、感情、自然な音声リズムについてテキストを分析し、生成される音声により正確なイントネーション、ストレス、感情を与えます。その結果、より明瞭で聞き心地が良いだけでなく、微妙な感情や自然な会話のダイナミクスを伝えることができる音声が生成され、全体的なユーザー体験が大幅に向上します。

このブログでは、AI Studioと組み合わせてサードパーティの音声合成(TTS)プロバイダーを利用し、ユーザー体験を完全にカスタマイズする方法を紹介します。 私たちはコミュニティの参加を常に歓迎しています。 お気軽に GitHub および VonageコミュニティSlack.

シェア:

https://a.storyblok.com/f/270183/398x436/1c09fedd7d/tim-dentry.jpg
Tim Dentryヘルスケアカスタマーソリューションアーキテクト

ヘルスケアカスタマーソリューションアーキテクトであり、AI/ML、特に自然言語処理/理解、ナレッジグラフの分野に熱心。 仕事以外では、世界旅行、AI研究、社交ダンスを楽しんでいます。