Eleven v4を発表これまでで最も感情豊かなモデル、Eleven v4をご紹介します。

コンテンツへ移動

会話型ロボットバリスタ「KUBI」をご紹介

執筆者
Thor Schaeff
公開日
最終更新日

聴くこの記事を聴く

KUBIは、台湾・高雄にある次世代型24時間年中無休のコワーキングスペース、Second Spaceで働く会話型ロボットバリスタ兼受付係です。ワークスペースの運営が完全に自動化されているため、メンバーと最初に接するKUBIには、親しみやすく個性的な雰囲気が欠かせません。そこでSecond Spaceは、メンバーとの楽しく記憶に残るやり取りを実現するため、ElevenLabsの会話型AIを採用しました。実際に活躍するKUBIを見てみましょう。

KUBIの仕組み

KUBIは、人間らしいやり取りを再現するため、高度なマルチセンサーアーキテクチャを採用しています。システムの中核はマイクロサービスアーキテクチャで、各専門サービスが同時に動作し、リアルタイムのイベントストリームを介して通信します。これらのサービスは、リアルタイムAI推論による顔や物体の認識、カメラを使ったカップの検出と妥当性チェック、レシートの印刷、入退室管理用の安全な顔認識、ミルクやコーヒー豆のディスペンサーの精密制御など、さまざまなタスクを処理します。

同時に稼働しているサービスの一例は次のとおりです。

  • 環境カメラサービス:リアルタイムAI推論(PythonのPyTorch)を使い、顔や物体を検出します。
  • タブレットカメラサービス:環境カメラサービスとよく似ていますが、テーブル上のカップや異物を検出し、KUBIロボットが実際にカップを持っているかなど、状況の妥当性を確認します。
  • レシート印刷サービス:Node+TypeScriptで構築された、シンプルで信頼性の高いサービスです。RS232接続のサーマルプリンターと通信します。
  • 決済サービス:高い並行処理性能と型安全性を備えたKotlin/JVMで構築されています。政府へのレシート報告に対応し、クレジットカード端末、暗号資産決済ゲートウェイ、オンライン決済プロバイダーと通信します。
  • ミルク&コーヒー豆ディスペンサー:Arduinoで動作する個別の精密制御サービスです。時間精度が重要で、低レイテンシーが求められます。
  • 顔認識:入退室管理に使われる、安全で強い型付けを備えたKotlinサービスです。
  • ウォータージェットサービス:使用後のミルクスチーム用ピッチャーを自動洗浄します。Arduinoで動作します。
  • このほかにも、モバイルアプリ用APIやメニュー表示など、さまざまなサービスが動作しています…

なぜ、これほど多くのマイクロサービスを使うのでしょうか?理由はシンプルです。個別に管理でき、簡単にスケールできるうえ、タスクごとに最適なツールを使えるからです。

すべてをつなぐ、イベント駆動型の中央コア

これらすべてのマイクロサービスを統括するのが、ユーモアを込めて「BigBoy」と名付けられた中央サービスです。これは実質的に、巨大なノンブロッキング型イベントプロセッサーです。

BigBoyの仕組みは次のとおりです。

  1. すべてのサービスから届くイベントを受信します。
  2. 各シナリオがトリガー条件を満たしているか確認します。
  3. 最適なシナリオを選択します。
  4. 再生するアクションのスケジュールを設定します。

internal object WeatherIdleScenario: SingleTaskScenario(scenario){
   
    importance = Importance.Medium
    compilationTimeout = Time.ThreeSeconds
    interruptable = false
    exeutionExpiration = = Time.TenSeconds
   
    override fun isEligible(event: Event, environment: Environment): Maybe<Boolean> = withEnvironment(environment) {
        just {
            (event is IdleEvent 
                    && !triggeredInLast(40.minutes) 
                    && (personPresent() || hasActiveSessions) 
                    && environment.weatherService.lastReportWithin(10.minutes))
        }
    }
}

private val scenario = ScenarioRecipe { event, env, session ->


    invokeOneOf(
       
        phrase {
              sayWith { 
                "Rainy day today, isn't it? That's why I have my little umbrella! Look!".asEnglish
              }.withAutoGift().withAutoMotion()
        }.given { Weather.isRaining() },

        phrase {
            sayWith {
                "Friend, it's so cold outside! So sad for you... because you're a human. I don't really mind!".asEnglish
            }.withAutoMotion()

           sayWith {
                "Wait, that soudned a bit rude.".asEnglish
            }.withAutoMotion()

        }.given { Weather.isCold() },

    )


}

シナリオとは?

シナリオは、ロボットのアクションイベントを生成するノンブロッキング型コンパイラーのようなものです。アクションイベントは通常、イベントチェーンの最下流、つまり最後のステップにあり、動作や発話などの物理的な効果を生み出します。たとえば、あいさつのシナリオでは、次のようなイベントがトリガーされます。

SayEvent("Hello! Welcome!", wave.gif)
MotionEvent(HelloMotion)

LLMによるイベント生成:一部のアクションイベントはLLMによって自動生成されます。たとえば、withAutoMotionは与えられたコンテキストに基づき、事前定義されたリストから最適な動作を選択します。一方、withAutoGifはLLMを使い、指定されたフレーズに最適なタグを生成します。このタグを使ってGiphyからGIFを取得し、後からフレーズと一緒にKUBIの顔に表示します。

アクションイベントの同期:これらのイベントはスケジューラーに送られ、発話、表情、動作が同期した状態に保たれます。この同期により、KUBIの発話とジェスチャーがぴったり一致します。

柔軟で拡張可能

面白いのは、シナリオがアクションイベントを監視し、新しいアクションイベントを動的にトリガーできることです。たとえば、次のようなことができます。

  • BigBoyがSayEvent(「メリークリスマス」)を検出すると、室内の華やかな照明や特殊効果を自動的に起動できます。
  • もう1つの面白い例として、ユーザーがモバイルアプリから注文すると、商品をクリックする、支払いを行うといったすべての操作がイベントに変換され、BigBoyがリアルタイムで反応できます。たとえば、ユーザーが「オーツミルクラテ」をスクロールして通り過ぎると、KUBIが「本当にオーツミルクラテにしなくていいんですか?すごくおいしいですよ!」と話しかけることもできます。

BigBoyは、起きていることを文字どおりすべて見て、把握しています。すごいでしょう?

DevOpsとオブザーバビリティ

ほとんどのサービスはローカルでホストされ、Dockerコンテナ内で動作します。コンテナ内では、Supervisorプロセス制御システムが各サービスのライフサイクルを管理します。エラーログはSentryに収集され、独自の管理アプリに送信されます。このアプリでは、例外、サービスやセンサーのリアルタイムの状態、レイテンシーレポートを監視できます。さらに驚くことに、このFlutterアプリの90%はAIによって生成されました。

ElevenLabsで記憶に残るやり取りを実現

Second SpaceはKUBIに、デッドプール、ゲーム『Portal』のウィートリー、そして『Apex Legends』のパスファインダーを少しずつ組み合わせた、非常に個性的なキャラクターを想定していました。感情表現や間を含む、より人間らしい音声のデザインをわずか15分で完成させました。

ElevenLabsは、2つのコアAPIを通じてKUBIの発話機能を支えています。

テキスト読み上げ(TTS)

  • やり取りの約90%を処理します。
  • あらかじめ設計されたシナリオを使い、最適な雰囲気を演出します。
  • LLMが生成したメッセージはパーソナライズでき、高品質なオーディオと最適な発音を実現します。即時性を求めない場面で使用します。
  • 英語、中国語、スペイン語、日本語、さらにはラトビア語でも、驚くほど自然な多言語音声を提供します(ラトビア語を話すデッドプールはいかが?)。

会話モード(リアルタイム)

顧客が「Hey KUBI!」と呼びかけると起動し、ElevenLabsの会話型AIが200ミリ秒で応答するため、まるで人間と話しているような自然なやり取りを実現できます。

  • 優先事項:低レイテンシー。
  • 応答性を優先するため、オーディオ品質を一部抑えています。
  • ElevenLabsの新しいリアルタイムlanguage_detectionツールを使い、異なる言語へ瞬時かつ動的に対応します。
  • メンバーが施設に入ったとき、または「Hey, KUBI!」と話しかけたときに、必要に応じて会話型AIセッションを開始します。

カスタム会話ツール

KUBIはWebSocket接続を介してElevenLabsの会話型AIを利用し、たとえば次のような関数呼び出しを活用できます。

  • make_order:注文を認識し、イベントをBigBoyへ直接送信します。
  • make_payment:PaymentServiceへ即座に通知し、決済用のクレジットカード端末を起動します。

ElevenLabsの管理パネルでLLMモデルを簡単に切り替えられるため、Second Spaceは理解力と精度を最適化できます。モデルによってツールのインテントを認識する能力に差があることが分かったためです。現在は、会話型AIのコアモデルにGemini 2.0 Flash、静的な音声生成にChatGPT 4oを使用しています。

KUBIを新たな市場へ展開

Second SpaceがElevenLabsに初めて言及したGitHubコミットは、多言語モデルがリリースされる前の2023年1月にさかのぼります。ElevenLabsが品質を追求する姿勢を早くから評価し、将来の多言語対応を見据えたアーキテクチャを自信を持って構築しました。今では、日本や韓国などの市場への参入も、スイッチを切り替えるほど簡単です。追加の開発作業は必要ありません!

まとめ

マイクロサービス、リアルタイムイベント、ElevenLabsの強力な音声技術により、KUBIはまるで本当に生きているかのように振る舞います。コーヒー1杯と気の利いたやり取りを重ねながら、世界中の人々を魅了する準備は万全です。

執筆者

関連記事

最高品質のAIオーディオで創造する