
Revolut selects ElevenLabs Agents to bolster customer support
Reducing time to ticket resolution by 8x with multilingual conversational agents.
KUBIはElevenLabsの会話型AIと連携する会話型バリスタです。仕組みをご紹介します。
KUBI は、会話型ロボットバリスタ兼受付ロボットとして Second Space(台湾・高雄の次世代型24時間コワーキングスペース)で活躍しています。ワークスペースの運営が完全自動化されているため、KUBIはメンバーとの最初の接点として、特別な親しみやすさを加えることがとても重要です。そのためSecond SpaceはElevenLabsの 会話型AI を選び、メンバーとの楽しく印象的なやりとりを実現しました。実際のKUBIの様子を見てみましょう。
KUBIは高度なマルチセンサリーアーキテクチャを採用し、人間らしいやりとりを再現します。システムはマイクロサービスアーキテクチャを基盤とし、各専門サービスが同時に動作し、リアルタイムのイベントストリームで連携します。これらのサービスは、リアルタイムAI推論による顔・物体認識、カメラによるカップ検出や状態確認、レシート印刷、入退室管理のためのセキュアな顔認証、ミルクやコーヒー豆ディスペンサーの精密制御など、さまざまなタスクを担当しています。
同時に動作している主なサービスはこちらです:
なぜこれほど多くのマイクロサービスを使うのか?簡単です—個別に管理でき、スケールしやすく、各タスクに最適なツールを使えるからです。
これらすべてのマイクロサービスを調整するのが、ユーモラスな名前の中央サービス 「BigBoy」 です。これは巨大なノンブロッキングイベントプロセッサのようなものです:
| 1 | |
| 2 | internal object WeatherIdleScenario: SingleTaskScenario(scenario){ |
| 3 | |
| 4 | importance = Importance.Medium |
| 5 | compilationTimeout = Time.ThreeSeconds |
| 6 | interruptable = false |
| 7 | exeutionExpiration = = Time.TenSeconds |
| 8 | |
| 9 | override fun isEligible(event: Event, environment: Environment): Maybe<Boolean> = withEnvironment(environment) { |
| 10 | just { |
| 11 | (event is IdleEvent |
| 12 | && !triggeredInLast(40.minutes) |
| 13 | && (personPresent() || hasActiveSessions) |
| 14 | && environment.weatherService.lastReportWithin(10.minutes)) |
| 15 | } |
| 16 | } |
| 17 | } |
| 18 | |
| 19 | private val scenario = ScenarioRecipe { event, env, session -> |
| 20 | |
| 21 | |
| 22 | invokeOneOf( |
| 23 | |
| 24 | phrase { |
| 25 | sayWith { |
| 26 | "Rainy day today, isn't it? That's why I have my little umbrella! Look!".asEnglish |
| 27 | }.withAutoGift().withAutoMotion() |
| 28 | }.given { Weather.isRaining() }, |
| 29 | |
| 30 | phrase { |
| 31 | sayWith { |
| 32 | "Friend, it's so cold outside! So sad for you... because you're a human. I don't really mind!".asEnglish |
| 33 | }.withAutoMotion() |
| 34 | |
| 35 | sayWith { |
| 36 | "Wait, that soudned a bit rude.".asEnglish |
| 37 | }.withAutoMotion() |
| 38 | |
| 39 | }.given { Weather.isCold() }, |
| 40 | |
| 41 | ) |
| 42 | |
| 43 | |
| 44 | } |
| 45 | |
| 46 |
シナリオとは?
シナリオは、ロボットの アクションイベント のためのノンブロッキングなコンパイラのようなものです。アクションイベントは通常、一連の流れの最終段階で発生し、動作や発話など物理的な効果をもたらします。たとえば、挨拶シナリオでは次のような動作が発生します:
LLMによるイベント生成:一部のアクションイベントはLLMによって自動生成されます。たとえば、withAutoMotion は、与えられた状況に応じて事前定義リストから最適な動作を選びます。また、withAutoGif は、LLMを使ってフレーズに最適なタグを生成します。このタグでGiphyからGIFを取得し、KUBIの顔にフレーズと一緒に表示します。
アクションイベントの同期:これらのイベントはスケジューラーを通じて流れ、発話・表情・動作が同期されます。同期によって、KUBIの発話とジェスチャーがぴったり合うようになります。
面白いのは、シナリオがアクションイベント を受け取り、新たなアクションイベント を動的に発火できることです。例えば:
BigBoyはまさに、すべての出来事を見て把握しています。すごいですよね?
ほとんどのサービスはローカルでホストされ、dockerコンテナでラップされています。コンテナ内ではSupervisorプロセス制御システムがライフサイクルを管理。エラーログはSentryで収集され、カスタム管理アプリに送られて例外やサービス・センサーのリアルタイム状況、遅延レポートなどを監視します。面白いのは、Flutterアプリの90%がAIによって自動生成されたことです。
Second SpaceはKUBIに、DeadpoolやPortalのWheatley、Apex LegendsのPathfinderをミックスした独自の個性を持たせたいと考えていました。実際にわずか15分で声をデザイン し、感情や間を加えてより人間らしい声に仕上げました。
ElevenLabsはKUBIの発話機能を2つのコアAPIで支えています:
お客様が「ねえ、KUBI!」 と話しかけると、ElevenLabsの会話型AIが200ms で応答し、本当に人間らしいやりとりを実現します。
ElevenLabsの会話型AIをWebSocket接続で利用し、KUBIはファンクションコールも活用できます。例えば:
ElevenLabsの管理パネルでLLMモデルを簡単に切り替えられるため、Second Spaceは理解度や精度を最適化できます。ツールのインテント をモデルごとに認識しやすさが異なることに気づいたからです。現在はGemini 2.0 Flashを会話型AIのコアモデル、ChatGPT 4oを静的な音声生成に使っています。
Second SpaceがElevenLabsに言及した最初のGitHubコミットは2023年1月にさかのぼります(多言語モデルリリース前)。早い段階でElevenLabsの品質へのこだわりを評価し、将来の多言語対応を見越したアーキテクチャを自信を持って構築しました。今では、日本や韓国など新しい市場への展開もスイッチ一つでOK—追加開発は不要です!
マイクロサービス、リアルタイムイベント、ElevenLabsの強力な音声技術によって、KUBIは本当に生きているような存在に。コーヒーとウィットに富んだやりとりで、世界中を楽しませていきます。

Reducing time to ticket resolution by 8x with multilingual conversational agents.
.webp&w=3840&q=95)
Yampa leverages ElevenLabs Flash V2.5 to scale human-like outbound voice agents with ultra-low latency and massive concurrency.