LiveKit + Groq:低遅延でリアルタイムに遮断できる AI 音声対話アプリの作成

この記事は約7分で読めます。

音声対話の分野では、スムーズさとリアルタイム性がユーザー体験の鍵です。今日は、LiveKit と Groq という2つの強力な技術を組み合わせて、低遅延でリアルタイムに遮断できる AI 音声対話アプリを作成する方法を紹介します。詳細なインストールと設定手順を通じて、簡単に始めることができ、すぐに自分の AI 音声アシスタントをデプロイできます。

リアルタイムデモ:滑らかな AI 音声対話の体験

インストールチュートリアルを始める前に、LiveKit + Groq による滑らかな体験をリアルタイムの対話デモで直感的に感じてみましょう。ビデオの 0:23 のところで、リアルタイムの対話デモを行いました。いくつかの質問を投げかけましたが、AI は迅速かつ正確に回答することができました。途中で遮断して別のトピックに切り替えても、AI は思路についてきて専門的な回答を出してくれました。整個対話プロセスの遅延が少なく、インタラクション体験が非常に自然でした。

LiveKit + Groq:強強連合で最高の体験を創出

LiveKit:リアルタイム通信の強力な基盤

LiveKit は、アプリケーションに強力でリアルタイムな通信の下層フレームワークを提供するオープンソースプラットフォームです。そのコアバリューは以下の通りです:

  • リアルタイム音声・ビデオ体験の構築:音声・ビデオの伝送とマルチパーティ間のインタラクションを簡単に実現し、ビデオ会議、ライブストリーミング、リアルタイムチャットなどのシーンに適しています。
  • WebRTCに基づく:最先端の WebRTC 技術を採用し、低遅延と高品質な音声・ビデオ伝送を保証します。
  • マルチユーザー同時通信のサポート:大量のユーザーが同時に音声・ビデオコミュニケーションを行うことができ、各种規模のアプリケーションシーンに対応します。
  • 大規模並列環境下での高品質伝送:高並列環境下でも、安定でスムーズな伝送効果を保ちます。
  • 開発難易度の簡素化:統一されたフロントエンドとバックエンドの SDK を提供し、開発難易度を大幅に下げ、開発者がビジネスロジックの実装により集中できるようにします。
  • 高度な音声処理能力:LiveKit には高度な音声処理モデルが内蔵されており、ユーザーの音声を正確に認識し、ノイズを低減し、より自然な対話体験を提供します。
  • オープンソースとセルフホスティング:オープンソースプロジェクトとして、セルフホスティングをサポートし、ユーザーに高いコントロール性和セキュリティ性を提供します。

Groq:高速推理で AI の思考を加速

Groq は、AI 推理に特化したクラウドコンピューティング会社で、最大の特徴は「速い」ことです。AI モデルに超高速の推理能力を提供し、AI のレスポンス速度を速くし、低い遅延を実現します。LiveKit と Groq を組み合わせることで、高品質なリアルタイム通信能力と高速推理能力を兼ね備えた AI 音声対話アプリを作成することができます。

手取り足取り教你インストールと設定、簡単に自分の AI 音声アシスタントを持つ

LiveKit と Groq の強力な機能を理解した後、次はインストールと設定を手取り足取り教える番です。

詳細な手順

01. アカウントの登録

  1. Groq のアカウントを登録する:https://console.groq.com/keys
  2. LiveKit Cloud の無料アカウントを登録する:https://cloud.livekit.io/
  3. ElevenLabs のアカウントを登録し、API Key を生成する:https://elevenlabs.io/
    • これらの3つのアカウントはすべて無料の使用枠があります。

02. LiveKit CLI のインストール

自分のオペレーティングシステムに応じて、適切なインストールコマンドを選択します。具体的な手順は、公式ドキュメントを参照してください:https://docs.livekit.io/home/cli/cli-setup/

03. バックエンド Python 音声プロキシのクローンと設定

  1. LiveKit CLI を使ってサンプルプロジェクトをクローンする:

    lk app create --template voice-pipeline-agent-python
  2. OpenAI と Deepgram の API キーを入力するよう求められたら、そのまま Enter キーを押してスキップしてください。因为我们将会使用 Groq と ElevenLabs を設定します。

  3. プロジェクトディレクトリに移動する:

    cd voice-pipeline-agent-python
  4. .env.local.example ファイルを編集し、.env.local にコピー&リネームします。OPENAI_API_KEYDEEPGRAM_API_KEY を以下の内容に置き換えてください:

    GROQ_API_KEY=
    ELEVEN_API_KEY=
    • 注意:<your-groq-api-key><your-elevenlabs-api-key> をそれぞれ自分の API キーに置き換えてください。
  5. requirements.txt ファイルを更新し、以下の1行を追加します:

    livekit-plugins-elevenlabs>=0.7.9

04. agent.py ファイルの設定

以下のコードを使用して agent.py ファイルの中身を置き換え、Groq を STT(whisper-large-v3 モデルを使用)、LLM(llama-3.3-70b-versatile モデルを使用)、ElevenLabs を TTS として設定します:

import logging

from dotenv import load_dotenv
from livekit.agents import (
    AutoSubscribe,
    JobContext,
    JobProcess,
    WorkerOptions,
    cli,
    llm,
)
from livekit.agents.pipeline import VoicePipelineAgent
from livekit.plugins import silero, openai, elevenlabs

load_dotenv(dotenv_path=".env.local")
logger = logging.getLogger("voice-agent")

def prewarm(proc: JobProcess):
    proc.userdata["vad"] = silero.VAD.load()

async def entrypoint(ctx: JobContext):
    initial_ctx = llm.ChatContext().append(
        role="system",
        text=(
            "你是由 LiveKit 创建的语音助手。你将通过语音与用户交流。"
            "你应该使用简短且简洁的回答。"
        ),
    )

    logger.info(f"connecting to room {ctx.room.name}")
    await ctx.connect(auto_subscribe=AutoSubscribe.AUDIO_ONLY)

    # Wait for the first participant to connect
    participant = await ctx.wait_for_participant()
    logger.info(f"starting voice assistant for participant {participant.identity}")

    agent = VoicePipelineAgent(
        vad=ctx.proc.userdata["vad"],
        stt=openai.STT.with_groq(model="whisper-large-v3"),
        llm=openai.LLM.with_groq(model="llama-3.3-70b-versatile"),
        tts=elevenlabs.TTS(),
        chat_ctx=initial_ctx,
    )

    agent.start(ctx.room, participant)

    # The agent should be polite and greet the user when it joins :)
    await agent.say("你好,我能帮你什么忙吗?", allow_interruptions=True)

if __name__ == "__main__":
    cli.run_app(
        WorkerOptions(
            entrypoint_fnc=entrypoint,
            prewarm_fnc=prewarm,
        ),
    )
  • 自分のニーズに応じて agent.py ファイル内の initial_ctxtext 部分を編集し、AI のプロンプトをカ
タイトルとURLをコピーしました