스크립트
00:00:00私の名前はボーです。フロンティア・インテリジェンスを活用したリアルタイム音声エージェントについて発表します。
00:00:18私たちがどのようにして
00:00:22Elise AIの音声エージェントのハーネスを設計し、リアルタイムの音声と
00:00:28必要とされるフロンティアレベルの知性を実現したかについてお話します。始める前に、
00:00:36カスケード型音声エージェントを採用することにした理由について、いくつかの類似点を挙げたいと思います。
00:00:42特に、以前私が取り組んでいた自動運転車と比較しながら説明します。
00:00:48私にとって、カスケード型音声エージェントは、次のような視点で捉えると非常によく理解できます。
00:00:53まず「認識(Perception)」です。自動運転車の場合は、
00:00:59バウンディングボックス、カメラ、LiDARなどですね。音声の場合は、
00:01:05つまり文字起こしです。現実世界のこれらの信号を、
00:01:09言語モデルや使用しているあらゆる頭脳が処理できるデータ要素に変換する作業です。
00:01:172番目は「プランニング・スタック(計画)」で、これは非常にシンプルです。
00:01:23ここでは、言語モデルが認識ステージからの出力を受け取り、
00:01:29現実世界に出力したい結果を生成します。そして最後に「制御レイヤー(Controls)」があります。
00:01:36自動運転では、プランナーが出力する軌道を受け取り、それを実際の制御に変換して
00:01:43車を走行させます。ここでは、テキストを音声に変換して、
00:01:50音声エージェントの思考を表現するために使用します。それでは、これら各要素について詳しく掘り下げていきます。
00:02:00私たちは、これらすべての領域でいくつかの興味深い工夫を取り入れ、
00:02:08知性を損なうことなく音声エージェントの速度を向上させました。
00:02:13最初のレイヤーは文字起こし(トランスクライバー)レイヤーです。私たちは、
00:02:19「ストリーミング推測文字起こし(Streaming Speculative Transcriber)」という概念を考案しました。
00:02:24これは、より多くのコンテキストを取り込む正確なバッチ文字起こしであるScribe v2の下(または上)に、
00:02:33Fluxのような高速なストリーミング文字起こしを重ねる仕組みです。少し遅くなりますが、より正確な検出が可能です。
00:02:39それでは設定の流れを見てみましょう。この場合、エージェントが「お名前と生年月日を教えていただけますか」と尋ね、
00:02:44ユーザーが発話し、それがタイミング的にどのように展開するかを確認します。
00:02:49まず、初期の検出結果がストリーミングレイヤーから得られます。
00:02:57正確なレイヤーである補正レイヤーは、テキストが同じであるため作動しません。
00:03:05さらにストリーミングテキストの検出結果が得られますが、このケースでは、補正レイヤーは実際には
00:03:11キャンセルされます。新しいテキストが得られたため、より多くのコンテキストや音声の方が古い正確な結果よりも優先されるためです。
00:03:21そしてここで最初の補正が行われます。Scribe v2レイヤーが
00:03:27質問の文脈を理解しているため、これが名前と生年月日について話していることを認識できるからです。
00:03:34さらにいくつかの検出が行われますが、これらは単なる句読点であり重要ではありません。
00:03:37最終的に、このテキストがエージェントに渡されます。
00:03:44次に言語モデルのレイヤーに進みます。ここでは、処理は遅いが
00:03:52インテリジェントなLLMを使用しているため、ラウンドトリップの数を本当に減らしたいと考えています。
00:03:58多くの推論を引き起こす原因はツール呼び出しです。それを排除する1つの方法は、バックグラウンドエージェントにツール呼び出しを行わせ、
00:04:05その結果をメインエージェントのコンテキストに押し戻すことで、メインエージェント自身がツール呼び出しを行ったと錯覚させることです。
00:04:13先ほどの検出からの流れを思い出してください。何が起こるかというと、これらの各検出がエージェントの
00:04:26早期の生成をトリガーします。ただし、ユーザーが発話を完了したことを確認するまでは、実際にはこれを出力しません。
00:04:38この場合、ユーザーは「もちろん(sure)」と言います。エージェントはユーザーがさらに何かを話そうとしていることを察知します。
00:04:45ユーザーの検出から名前と生年月日を把握するのを助けるバックグラウンドのツール呼び出しは
00:04:51発動しないため、ここではあまり動きがありません。次のインスタント検出が到着しますが、まだ名前とは言えない状態です。
00:05:02エージェントはそれに合わせて話を続けます。
00:05:06ここでさらにコンテキストが戻ってきます。エージェントは名前があるはずだと感じます。
00:05:11文字起こしに何らかのエラーがあると考えている可能性が高いため、スペルアウトするように求めます。
00:05:16まだ名前も生年月日もありません。そして最終的に、これが文字起こし器(Scribe v2)からの
00:05:22補正された最終的なインスタント検出となります。
00:05:27ここでは、ツール呼び出しなしで行われていたエージェントの早期生成がキャンセルされます。
00:05:34バックグラウンドエージェントが、探していた名前と生年月日をようやく見つけることができたためです。
00:05:38そのため再トリガーされ、エージェントは必要なコンテキストを実際に持つことになります。
00:05:45ここでそれを行っているのがわかります。ここでのツール呼び出しには少しばかり
00:05:49知性が含まれており、名前の誤文字起こしを修正し、
00:05:53一種の音声マッチングを行っています。
00:05:57そして、これがユーザーの発話の終わりであると理解したら、それを音声として出力します。
00:06:02非常に標準的な仕組みです。
00:06:06さて、次のレイヤーは音声合成(Text-to-Speech)です。音声合成の目標は、
00:06:12エージェントが発話した内容を受け取り、エージェントはそれをストリーミング形式で
00:06:16出力することです。したがって、できる限り迅速に音声を生成する必要があります。理想的なのは、
00:06:24エージェントが完全なテキストの生成を終える前であっても、音声を再生し始めることです。これにより、
00:06:31生成完了までのレイテンシを隠すことができます。それでは、ストリーミングエージェントの
00:06:39出力を再生してみます。「U」から始まります。さらに深く説明する前に、
00:06:46ここで導入している「プレフィックスキャッシュ」という新しい概念について触れておきます。プレフィックスキャッシュは、
00:06:52エージェントのストリームを監視し、その一連の単語に対して既に音声が生成されているかどうかを確認します。
00:07:02それは以前の生成から、あるいは今回の通話内の同じ生成からのものである可能性があります。
00:07:10「U」という単語を検知します。このプレフィックスキャッシュでは、すべての単語ごとに
00:07:17即座にヒットさせたいわけではありません。もう少し単語が集まるのを待ちます。そのため、
00:07:243つの単語が揃った後、プレフィックスキャッシュで最初のヒットが発生します。右側にあるのは、
00:07:31標準的な音声合成プロバイダーです。CartesiaはWebSocketをサポートする音声合成エンジンです。
00:07:36そのため、エージェントをキャッシュ経由で流すと同時に、WebSocket経由でも流しています。
00:07:45さらにトークンが到着し、キャッシュへのヒットが増え、WebSocketへの送信が行われます。特筆すべきことはあまりありません。
00:07:51そして、最初のユニークな事象が発生します。実際にキャッシュミスタイムを引き起こす
00:07:59トークンが見つかったのです。以前の生成結果をキャッシュしていると考えれば理にかなっています。「You said your name is(お名前は〜とおっしゃいましたね)」は
00:08:05非常によくあるフレーズですが、そこに実際の名前を追加すると、突然キャッシュミスにつながります。
00:08:12この時点で、キャッシュされた音声を実際に出力します。「You said your name is」が、
00:08:19残りのストリーミングテキストが返ってくるのと同時に音声として出力されます。この時点でユーザーはエージェントの声を聴いています。
00:08:25ユーザーには裏で何が起きているかは分からず、ただ応答が非常に速いと感じるだけです。
00:08:32そして残りのテキストが流れてきます。この時点ですでにキャッシュから出力を行っており、
00:08:38キャッシュは役割を果たしました。残りの部分はCartesiaに処理させることができます。ここで、
00:08:46Cartesiaはこの時点までのトランスクリプト全体を既に認識しているというトリックがあります。Cartesiaの視点からは、
00:08:56このプレフィックスキャッシュの存在は分かりません。単に標準的で自然な抑揚で
00:09:01完全な文を生成しようとします。しかし私たちが何をするかというと、生成結果が返ってきたとき、
00:09:08すでにこちらの音声は再生済みなので、Cartesia側の音声の重複部分を抑制し、
00:09:13残りの部分だけを再生します。ユーザーにとっては、ごくわずかな違和感があるかもしれませんが、
00:09:21おそらく気づかないレベルでしょう。効果的にこれを処理し、
00:09:28この部分を取り出して、最初の音声の再生終了直後に直接繋げて出力します。そのためユーザーにはシームレスに聞こえます。
00:09:35技術的な詳細がかなり多かったので、一番良い方法は、実際の通話を再生して
00:09:43実際の動きを確認してもらうことだと思います。それでは、録音した通話を聴いてみましょう。
00:09:53こちらはボー産婦人科です。エリーがお話しします。
00:09:59こんにちは、妊娠しているかもしれないので確認のために超音波検査を予約したいのですが。
00:10:03それはおめでとうございます。お名前と生年月日を教えていただけますか?
00:10:08はい、エリー・トライアルです。生年月日は2303です。
00:10:15ありがとうございます。当院には初めてのご来院でしょうか?
00:10:24はい。ボー産婦人科へようこそ。保険証情報をアップロードするためのリンクをテキストメッセージでお送りしてもよろしいですか?
00:10:34はい。分かりました。送信しました。受け取ったらお知らせください。
00:10:48保険証情報を受信しました。ご案内できる最も早い予約は、7月2日(木)
00:10:53午前10時です。あ、少々お待ちください。カレンダーを確認させてください。
00:11:01はい、どうぞごゆっくり。来週の空きはありますか?
00:11:09来週でしたら、7月7日(火)午後2時または午後3時に、ノースクリニックのエブリー・ストーン医師による
00:11:14超音波検査をご案内できます。どちらかの時間はご都合がつきますか?
00:11:20はい、午後2時でお願いします。かしこまりました。ご予約が完了いたしました。お越しをお待ちしております。
00:11:29ありがとうございます。では失礼します。はい、大体こんな感じです。
00:11:35このように、ストリーミングや裏側で行われている様々な処理を
00:11:43ご覧いただけたかと思います。そしてこれこそが、音声エージェントを本当に面白いものにしている点です。
00:11:48ハーネス側で多くの工夫を行うことで、本当に自然な
00:11:55会話を実現することができます。私たちが目指しているのはまさにそれです。
00:11:59わかりました。では最後に、少しだけエリゼについてお話しさせてください。
00:12:04エリーの本社はニューヨークにあり、現在ベイエリアでの存在感を広げようとしています。
00:12:09私たちが手がけているのは、人々がサンフランシスコのAIスタートアップに対して
00:12:15一般的に抱くイメージとは少し異なるタイプの会社かもしれません。
00:12:23私たちは、人生において最も重要な領域で助けを必要としている人々を支援することに非常に特化しています。
00:12:31住宅や医療の分野に取り組んでおり、順調に成果を上げています。
00:12:37チームに参加するためのリンクがこちらにあります。また、
00:12:45Twitter(@Elyse.ai)でもたくさんの情報を投稿していく予定ですので、ぜひフォローしてください。それでは。
00:12:57Twitterでもさらに多くの情報を発信していく予定ですので、どうぞよろしくお願いいたします。
커뮤니티 글
아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!
이 영상에 대해 글쓰기