你有没有遇到过这个问题:想给自己的 AI 产品加上语音对话,结果发现光是处理音频流、管理 WebRTC 连接、接 STT、接 LLM、接 TTS 就已经让你焦头烂额,还没开始写业务逻辑,架构就已经乱成一锅粥。

LiveKit 解决的正是这个问题。它给你一整套从实时媒体传输到 AI 模型调用的完整 pipeline,让你专注在"Agent 应该怎么说话、怎么反应",而不是"怎么把音频从 A 传到 B"。

LiveKit 是什么:从 WebRTC 基建到 AI Agent 平台

LiveKit 成立于 2021 年,最初是一个高性能的开源 WebRTC 媒体服务器,用 Go 编写,在 GitHub 上已累计超过 19,000 star。它的核心 livekit/livekit 仓库处理音视频的实时传输、房间管理、SFU(Selective Forwarding Unit)路由等底层逻辑。

2023 年之后,AI 浪潮改变了它的方向。LiveKit 推出了 livekit/agents 框架(11,000+ star),将自己从一个媒体服务器升级成了完整的 AI Agent 开发平台,支持语音、视频和机器人三个方向。

它的商业版 LiveKit Cloud 目前每年处理超过 25 亿次通话,覆盖全球 18+ 个地区节点,SOC 2 Type 2、HIPAA、GDPR 全部合规。客户名单里有 OpenAI(ChatGPT Advanced Voice 就跑在上面)、xAI、Salesforce、Skydio 等。

核心架构:STT-LLM-TTS 三段流水线

LiveKit Agents 的语音 AI 工作原理可以用一张图概括:用户说话,语音流通过 WebRTC 传到 Agent,Agent 经过三个环节处理后,把合成的语音回传给用户。

用户麦克风 -> WebRTC 流 -> STT(语音转文字)-> LLM(推理决策)-> TTS(文字转语音)-> 用户耳机

三个环节都是可以自由替换的插件:STT 支持 Deepgram、AssemblyAI、ElevenLabs Scribe 等;LLM 支持 OpenAI GPT 系列、Google Gemini、xAI Grok、DeepSeek 等;TTS 支持 Cartesia、ElevenLabs、Deepgram Aura 等。除了链式 pipeline,LiveKit 还支持直接对接 OpenAI Realtime API 这种 speech-to-speech 的一体化模型。

框架还内置了端点检测(Turn Detection)和打断处理(Interruption Handling),这两个细节决定了对话体验的自然程度,是自己用 WebSocket 搭一套通常会踩坑最久的地方。

10 分钟上手:Python 快速集成

先安装 LiveKit CLI,它会帮你初始化项目、配置凭证、连接云端:

# macOS
brew install livekit-cli

# Linux
curl -sSL https://get.livekit.io/cli | bash

# 登录并关联你的 LiveKit Cloud 项目
lk cloud auth

然后一条命令创建 Python Agent 项目模板:

lk agent init my-agent --template agent-starter-python
cd my-agent
uv sync
uv run --module livekit.agents download-files

模板生成的 agent.py 核心代码非常简洁,业务逻辑全在 instructions 里:

from livekit import agents
from livekit.agents import AgentServer, AgentSession, Agent, inference

class Assistant(Agent):
    def __init__(self) -> None:
        super().__init__(
            instructions="""你是一个专业的客服助手。
            回答简洁,不要使用 Markdown 格式或 emoji。"""
        )

server = AgentServer()

@server.rtc_session(agent_name="my-agent")
async def my_agent(ctx: agents.JobContext):
    session = AgentSession(
        # STT: 语音转文字
        stt=inference.STT(model="deepgram/nova-3", language="multi"),
        # LLM: 语言推理
        llm=inference.LLM(model="openai/chat-latest"),
        # TTS: 文字转语音
        tts=inference.TTS(model="cartesia/sonic-3"),
    )
    await session.start(room=ctx.room, agent=Assistant())
    await session.generate_reply(
        instructions="用中文问候用户并询问需要什么帮助。"
    )

if __name__ == "__main__":
    agents.cli.run_app(server)

本地启动开发模式,直接在终端就能和 Agent 说话:

# 开发模式,支持热重载
uv run src/agent.py dev

# 部署到 LiveKit Cloud
lk agent create

如果你更偏向 Node.js,LiveKit 同样提供完整的 TypeScript SDK 和 starter 模板,API 设计与 Python 版本几乎对称,切换成本很低。

后端生成 Token:Python 签发接口

前端连接 LiveKit 需要一个 JWT Token,必须由后端用 API Secret 签发,绝对不能在前端生成(否则会暴露密钥)。安装服务端 SDK:

pip install livekit-api fastapi uvicorn

用 FastAPI 暴露一个 token 接口,和之前的 Agent 共用同一套环境变量:

import os, time
from fastapi import FastAPI
from livekit.api import AccessToken, VideoGrants

app = FastAPI()

@app.get("/api/token")
def get_token(room: str = "my-room"):
    token = (
        AccessToken(
            api_key=os.environ["LIVEKIT_API_KEY"],
            api_secret=os.environ["LIVEKIT_API_SECRET"],
        )
        .with_identity(f"user-{int(time.time())}")
        .with_grants(VideoGrants(room_join=True, room=room))
    )
    return {"token": token.to_jwt()}

启动服务:

uvicorn main:app --reload

Agent 和 token 接口共用 .env.local 里的三个变量,无需额外配置:

LIVEKIT_URL=wss://your-project.livekit.cloud
LIVEKIT_API_KEY=your_api_key
LIVEKIT_API_SECRET=your_api_secret

前端接入:Web SDK 接通 Agent

前端调用上面的 token 接口拿到 JWT,再通过 LiveKit Web SDK 接入。安装依赖:

npm install @livekit/components-react livekit-client

useVoiceAssistant() 必须在 LiveKitRoom 的子组件内调用,BarVisualizer 是官方提供的音频波形组件,两者配合就能实现带动画的对话 UI:

import { useState, useEffect } from 'react';
import { LiveKitRoom, RoomAudioRenderer, BarVisualizer, useVoiceAssistant } from '@livekit/components-react';

// BarVisualizer 必须放在 LiveKitRoom 子组件内,才能访问 Room context
function AgentVisualizer() {
  const { state, audioTrack } = useVoiceAssistant();
  return <BarVisualizer state={state} trackRef={audioTrack} />;
}

export default function VoiceChat() {
  const [token, setToken] = useState<string>('');

  useEffect(() => {
    // 从后端获取 token,room 名与 Agent 一致
    fetch('/api/token?room=my-room')
      .then(r => r.json())
      .then(d => setToken(d.token));
  }, []);

  if (!token) return <div>Loading...</div>;

  return (
    <LiveKitRoom
      serverUrl={process.env.NEXT_PUBLIC_LIVEKIT_URL}
      token={token}
      connect={true}
    >
      <RoomAudioRenderer />
      <AgentVisualizer />
    </LiveKitRoom>
  );
}

前端和 Agent 加入同一个 room(这里是 my-room),连接建立后 Agent 会自动接管音频流,整个 pipeline 就跑通了。除了 Web,LiveKit 还提供 iOS、Android、Flutter、Unity 的原生 SDK,以及 SIP/电话集成,让你的 Agent 真正能接打电话。

竞品横向对比:选 LiveKit 还是别的?

做实时音视频 AI,市面上绕不开以下几个选择:

维度 LiveKit Daily.co Agora Twilio
定位 AI Agent 平台 + 实时媒体 视频通话 API 实时音视频 SDK 通信平台
开源 完全开源 Apache 2.0 闭源 SDK 部分开源 闭源
AI Agent 框架 原生,pipeline 内置 Pipecat 集成 Conversational AI SDK 无原生框架
模型生态 30+ 模型 依赖第三方 OpenAI、Azure 为主 需自行对接
自托管 支持 不支持 支持私有化 不支持
电话/SIP 内置 需额外配置 支持 原生最强
免费额度 1,000 分钟/月 有限 按并发峰值 按分钟计费
适合场景 AI 语音 Agent、实时对话 视频会议、在线教育 直播互动、游戏语音 呼叫中心、企业通信

简单说:如果你要构建的是 AI 语音助手、电话机器人、实时对话产品,LiveKit 是当下生态最完整、开发体验最好的选择。Agora 在国内的延迟表现更好,如果用户主要在中国大陆,Agora 的网络基建更有优势。Twilio 的电话能力最强,但 AI Agent 部分需要大量自行搭建。

定价与选型建议

LiveKit Cloud 的免费套餐(Build 计划)包含每月 1,000 分钟 Agent 会话、2.5 美元推理额度、1 个免费电话号码,不需要信用卡,足够个人项目和原型验证使用。

语音 Agent 的综合成本约为每分钟 0.07 美元(含 Agent session、WebRTC、STT、LLM、TTS、可观测性),这个价格在同类产品中属于中等水平。Ship 计划每月 50 美元起,适合正式上线的小团队;Scale 计划每月 500 美元起,提供 HIPAA 合规、Region Pinning 和推理折扣。

对于想要完全控制成本和数据的团队,LiveKit 的开源服务器(livekit/livekit)可以自托管,Agents 框架也完全支持自行对接任意模型 API,不依赖 LiveKit Cloud 的推理服务。


真正的极客不会从零造轮子,而是选对工具之后,把时间花在真正有价值的地方。

LiveKit 已经把实时音视频传输和 AI 模型接入这两件最繁琐的事情打包好了,剩下的问题是:你的 Agent 该说什么,该怎么思考。那才是真正值得花时间的问题。

仓库地址:github.com/livekit/agents,在线体验:livekit.com,有问题可以加官方 Slack 社区。


我是 Yuguo,软件设计师,正在用 AI 重构自己的开发工作流。
踩过的坑、跑通的方案、省下来的时间,都记在绿泡泡 Feed 中。 一起把 AI 真正用起来。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐