標籤: livekit

  • 用 livekit/agents 做一個即時語音 AI 助手

    用 livekit/agents 做一個即時語音 AI 助手

    📌 本文重點

    • livekit/agents 幫你包好即時語音串流與房間管理
    • 透過插件快速串接各家 LLM/STT/TTS
    • 適合打造客服、家教、會議助理、遊戲 NPC 等語音場景

    一句話先講清楚:livekit/agents 是一個「開箱即用」的實時語音/視頻 AI agent 開源框架,幫你處理好語音串流、通話房間、跟各家 LLM 串接,讓你專心寫「助理要做什麼」。

    專案連結:https://github.com/livekit/agents


    核心功能:它幫你省掉哪些麻煩

    1. 即時語音串流處理(含多方通話)

    用傳統方式做語音助手,你得自己處理:WebRTC 連線、音訊編碼、封包、延遲調優。livekit/agents 把這些變成幾行 Python

    💡 關鍵: 框架直接處理 WebRTC 與音訊串流細節,讓你用少量程式碼就能做出低延遲語音助手。

    • 自動接收使用者麥克風語音、轉成模型可用的 audio stream
    • 支援多人房間:每個人一條 audio track,可針對某人回應或廣播
    • LiveKit RTC 原生整合,等於直接接上一整套「類 Discord / Zoom 的底層基礎建設」

    實際操作可以從他們的 demo server 開始:

    # 1. 安裝套件
    pip install livekit-agents livekit-plugins-openai
    
    # 2. 跑官方 demo(語音助理)
    python -m livekit.agents.examples.voice_assistant
    

    跑起來後,你就有一個能接 LiveKit 房間、聽語音、回語音的 AI 助手,可以先拿來當「互動介面沙盒」。


    2. 一層抽象包掉 LLM、STT、TTS

    你不需要自己手動串「語音轉文字(STT)→ LLM → 文字轉語音(TTS)」,agents 已經有 plugin 模組

    💡 關鍵: 透過 plugin,你可以像換積木一樣替換不同家的 LLM/STT/TTS,而不必重寫整套語音流程。

    • 官方提供 OpenAI、Anthropic 等插件(livekit-plugins-openai 等)
    • 你可以像換積木一樣,改用別家雲端 LLM 或自建模型
    • 支援多模態(文字 + 語音,未來可加上影像)

    範例:用 OpenAI 做一個最小語音助手(簡化示意)

    from livekit.agents import AutoAgent
    from livekit.plugins import openai
    
    llm = openai.ChatCompletion(model="gpt-4o-mini")
    
    async def handle_event(event, ctx):
        if event.type == "speech":  # 使用者講話片段
            text = event.transcript
            resp = await llm.complete(text)
            await ctx.speak(resp.text)  # 語音回覆
    
    agent = AutoAgent(on_event=handle_event)
    agent.run()
    

    你只需要關心 handle_event 裡「收到什麼 → 要回什麼」,其餘串流、排程、回應時機都交給框架。


    3. 房間管理與多角色 Agent

    如果你想做「會議小秘書 + 客服機器人 + 語音監考官」這類多角色場景,livekit/agents 也有:

    • 房間(room)管理:每個房間有多名參與者與多個 agent
    • 可以設定 agent 只聽某個角色、只回某些人
    • 結合 LiveKit 原本的錄製、串流功能,做後續轉錄、紀錄

    典型用法:開一個房間,裡面放

    • 一個「會議紀錄 agent」專心記錄與摘要
    • 一個「Q&A agent」回覆指定問題
    • 再視需要增加自訂邏輯(例如檢查是否有敏感字)

    適合誰用?幾個具體場景

    1. 線上客服機器人(語音版)

    想像電話客服或網站語音客服:

    • 使用者進房間 → 說出問題
    • agent 即時聽、查 FAQ 或後端 API → 用自然語音回覆
    • 若遇到無法回答的問題,可把通話轉接真人(LiveKit 本來就支援真人進房)

    可以做的行動

    • 先用官方 voice assistant demo 跑起來
    • 把 LLM prompt 改成「客服知識庫助理」,接上你的 FAQ 文檔

    2. 語音家教、語言學習助手

    • 學生講英文/中文 → agent 即時糾錯、給例句
    • 用多房間管理不同學生,讓每個人有自己的語音助教

    可以做的行動

    • 把 LLM 的系統提示改成「語言老師」
    • agent 的回應邏輯改成:先評分、再給建議回覆

    3. 會議即時小秘書

    • 開一個房間,把所有會議成員加入
    • agent 只做三件事:即時紀錄要點、提醒超時、會後產出摘要

    可以做的行動

    • 使用 LiveKit SDK 做會議房間
    • agents 內部實作:每 5 分鐘自動整理一次目前紀錄、會後產出總結

    4. 遊戲語音 NPC

    • 玩家用麥克風跟 NPC 說話
    • agent 根據遊戲狀態(你可以從遊戲伺服器丟資料給 agent)決定 NPC 回應

    可以做的行動

    • 在遊戲伺服器中接 WebRTC / HTTP 與 LiveKit
    • 把玩家座標、任務進度寫進 LLM 的 context

    怎麼開始:最小可行示例

    下面是一條「從零到能跟 AI 說話」的最短路徑,假設你會基本 Python。

    步驟 1:準備環境

    1. 安裝 Python 3.10+(建議用虛擬環境)
    2. 安裝套件:

    bash
    pip install "livekit-agents[full]" livekit-plugins-openai

    1. 申請:

    2. LiveKit Cloud 帳號(或自己架 LiveKit Server)→ 拿到 LIVEKIT_API_KEYLIVEKIT_API_SECRETLIVEKIT_URL

    3. OpenAI API Key(或你要用的其他雲端 LLM)

    步驟 2:跑官方 voice assistant demo

    在專案 repo 裡會有類似示例,可以照以下思路:

    export LIVEKIT_API_KEY=xxx
    export LIVEKIT_API_SECRET=yyy
    export LIVEKIT_URL=wss://your-livekit-domain
    export OPENAI_API_KEY=sk-...
    
    python -m livekit.agents.examples.voice_assistant
    

    啟動後:

    1. 到 LiveKit 提供的範例前端(通常 repodocs 會有連結)
    2. 填上相同的房間名稱
    3. 打開麥克風,你就能跟 AI 說話

    串接主流雲端 LLM:以 OpenAI 為例

    使用 livekit-plugins-openai 可以快速改成使用你想要的 OpenAI 模型,例如 gpt-4ogpt-4o-mini

    💡 關鍵: 只要改動模型與插件設定,就能快速切換不同雲端 LLM,而保留同一套語音互動邏輯。

    示意程式:

    from livekit.agents import AutoAgent
    from livekit.plugins import openai
    
    system_prompt = """你是一個友善的即時語音助手,回答要簡短、口語化。"""
    
    llm = openai.ChatCompletion(
        model="gpt-4o-mini",
        system_prompt=system_prompt,
    )
    
    async def on_event(event, ctx):
        if event.type == "speech" and event.is_final:  # 完整一句話
            text = event.transcript
            resp = await llm.complete(text)
            await ctx.speak(resp.text)  # 由 agents 幫你轉語音播放
    
    agent = AutoAgent(on_event=on_event)
    agent.run()
    

    如果你要換成其他 LLM(Anthropic、DeepSeek 等),通常只要:

    • 換插件(例如 livekit-plugins-anthropic
    • 換初始化那一行,其他事件處理邏輯可以保持不變

    改造成「中文語音助手」

    要讓它好好講中文,關鍵有三個:

    1. STT 支援中文:選擇支援中文語音辨識的模型(例如 OpenAI 的多語 speech model)。

    2. LLM 語言偏好:在 system prompt 裡明講:

    text
    你是一個中文語音助手,只用繁體中文回覆。
    回覆要口語、句子不要太長,方便即時朗讀。

    1. TTS 選中文聲音

    2. 若使用 OpenAI TTS,在初始化時指定中文 voice

    3. 或用本地 TTS(如 Coqui TTS)輸出中文音頻,再由 agents 播放

    實作上,只要調整:

    • plugin 設定中的模型名稱、語言
    • prompt 描述

    其他語音串流邏輯不變。


    部署到雲端或自家伺服器

    livekit/agents 本身就是 Python 程式,你可以當作一般後端服務來部署。

    部署選項概覽

    方案 核心做法 適合誰
    LiveKit Cloud + 雲端 VM LiveKit 用官方雲服務,agents 跑在 AWS / GCP 想先跑起產品、不想維護 RTC 的團隊
    全自架(LiveKit Server + agents) 自己架 LiveKit Server + 部署 agents 對延遲、成本、數據有嚴格控管需求
    Docker / K8s agents 打包成容器,水平擴展 使用 k8s 的公司 / 團隊

    基本部署步驟:

    1. 把你的 agent 程式包成一個 Python app(例如 main.py
    2. uvicorn 或類似方式啟動(若你還要提供 HTTP API
    3. 在雲端 VM 或 K8s 上跑起來,設定環境變數(LIVEKIT_URLAPI keyLLM key
    4. 前端(Web / Mobile / 遊戲客戶端)只要接 LiveKit 的 SDK 就能加入房間

    和官方 GPT-Live 概念的關係

    OpenAI 在文章 Continuous voice interaction with GPT-Live 裡提到:

    GPT-Live 使用無回合(turnless)語音模型與低延遲架構,讓語音對話可以連續、不中斷。

    livekit/agents 跟它的角色有點像「自幹一個 GPT-Live 式的應用框架」

    • GPT-Live:OpenAI 自家的完整產品體驗
    • livekit/agents:你可以拿來做自己的「GPT-Live 版本」,接你選的 LLM、你自家的後端、你想要的 UI

    如果你希望的是:

    • 「我要一個可完全客製、可掛在自家雲上的即時語音 AI 助手」

    livekit/agents 正是為這種需求設計的工具。


    下一步可以做什麼?

    給你一條實作 checklist:

    1. pip 安裝 livekit-agents 與你要的 LLM plugin
    2. 在 LiveKit Cloud 建一個 project,拿到 API key / URL
    3. 跑官方 voice assistant 示例,確認可以講話互動
    4. 把 LLM prompt 改成你的場景(客服 / 家教 / 會議小秘書 / NPC)
    5. 加入最簡單的業務邏輯(查 FAQ、打你自家 API)
    6. 打包成服務部署到雲端,前端用 LiveKit SDK 接進來

    做到第 4 步,你就已經有第一個能上線試用的即時語音 AI app 了。之後再慢慢加功能,而不是一開始就被 WebRTC 和語音串流細節卡住。

    🚀 你現在可以做的事

    • 先在本機安裝 livekit-agents,跑起官方 voice_assistant 示例
    • 申請 LiveKit Cloud 和 OpenAI 等 LLM 帳號,設定好 API key 與環境變數
    • 把示例程式中的 system_prompt 改成你的實際場景(客服、家教或會議),開始調整互動邏輯