@livekit: 我们使用LiveKit上的Gemini 3.5 Live Translate构建了一个实时多语言多人视频通话。每个人选择自己的语言…
摘要
LiveKit 使用 Gemini 3.5 Live Translate 构建了一个实时多语言视频通话,参与者可以用自己的语言发言并实时听到翻译。开源代码可在 GitHub 上获取。
查看缓存全文
缓存时间: 2026/06/10 09:47
我们基于 LiveKit 和 Gemini 3.5 Live Translate 构建了一个实时多语言、多人视频通话应用。每人选择自己的语言,自然发言,实时听到对方用所选语言说话。观看演示并查看开源仓库:https://github.com/livekit-examples/gemini-live-translate…
livekit-examples/gemini-live-translate 来源:https://github.com/livekit-examples/gemini-live-translate
Live Translate 多语言视频通话。每人选择自己的语言。按需启动翻译。基于 LiveKit Agents (https://docs.livekit.io/agents/)(Python worker)和 Gemini Live API (https://ai.google.dev/gemini-api/docs/live)。架构 agent web
功能介绍
任何拥有链接的人都能作为参会者加入。每位参与者选择一种语言——这既是他们说话所用的语言,也是他们希望听到其他人说话的语言。当有人说话时,Gemini Live 会话会将其音频按需翻译成房间内存在的每一种其他语言。相同语言的配对之间直接听到原生语音,无需 Gemini 费用。
- 默认每房间最多 8 人(可配置)
- 支持 16 种语言,外加“无——原生直通”
- 摄像头和麦克风默认关闭;准备好后即可开启
- 字幕侧边栏(每位听众按其选择的语言显示),带自动滚动转写文本
- 已准备就绪可用于 LiveKit Cloud Agents:部署 Python worker,前端在令牌生成时通过房间配置分发任务
工作原理
flowchart LR
Alice(["AliceEN"])
Bob(["BobES"])
Agent["Translator agentPython workerone per LiveKit room"]
Alice -- mic --> Agent
Bob -- mic --> Agent
Agent -- "tx:bob:en" --> Alice
Agent -- "tx:alice:es" --> Bob
每位参与者选择的语言存放在其 LiveKit 的 attributes.lang 属性中。Agent 监听 participantAttributesChanged 事件,并维护一个 (说话者, 目标语言) 会话映射表——每个配对对应一个 Gemini Live 会话,跳过源语言与目标语言相同的配对。对于每个活跃的配对,Agent 向房间内发布两样东西:
- 一个名为
tx::的音频轨道,携带翻译后的语音 - 一个
lk.translation文本流,携带对应的字幕,标记有target_lang前端根据(收听者语言, 说话者语言)相同的判断条件,为每个对等方订阅原始麦克风或对应的tx:*轨道。
快速开始
你需要:
- Node.js 20+,pnpm (https://pnpm.io/)(或运行
corepack enable,并让仓库的packageManager字段固定版本) - Python 3.11+,uv (https://docs.astral.sh/uv/)
- 一个 LiveKit Cloud (https://cloud.livekit.io) 项目(免费版可用)
- 一个 Gemini API 密钥 (https://aistudio.google.com/apikey)
# 1. 安装依赖并生成环境文件
pnpm run setup
# 2. 在 .env.local 和 translator/.env.local 中填写凭证
# LIVEKIT_URL, LIVEKIT_API_KEY, LIVEKIT_API_SECRET(两个文件都需要)
# GEMINI_API_KEY(仅 translator/.env.local)
# 3. 同时运行前端和 agent worker
pnpm run dev
打开 ,点击 创建会话,将链接分享给另一个浏览器,选择不同的语言,取消静音。
仓库结构
gemini-live-translate-livekit/
├── src/ # Next.js 16 前端
│ ├── app/
│ │ ├── page.tsx # 着陆页
│ │ ├── api/token/route.ts # 生成令牌 + 分发翻译 agent
│ │ └── session/[id]/
│ │ ├── page.tsx # 进入前的操作(姓名 + 语言)
│ │ └── room/ # 通话中 UI
│ │ ├── RoomClient.tsx
│ │ ├── InCall.tsx
│ │ ├── VideoGrid.tsx + ParticipantTile, SelfView
│ │ ├── ControlBar.tsx + LanguagePill
│ │ ├── CaptionsSidebar.tsx
│ │ └── useTranslationRouting.ts
│ └── lib/
│ ├── languages.ts # 16 种语言 + "none" 哨兵值
│ └── config.ts # 容量上限、属性键
└── translator/ # Python LiveKit Agents worker
├── src/
│ ├── agent.py # @server.rtc_session(agent_name="gemini-translator")
│ ├── router.py # TranslationRouter(协调循环)
│ ├── session.py # GeminiSession(每对 说话者→目标语言)
│ ├── audio.py # PCM 胶水代码
│ └── config.py # 模型 ID、防抖、宽限时间等
├── tests/test_router.py # 按需集合计算
├── pyproject.toml
├── Dockerfile # 用于 LiveKit Cloud Agents 部署
└── livekit.toml
部署
Agent — 部署至 LiveKit Cloud Agents:
cd translator
lk agent create --secrets-file .env.local . # 首次使用
lk agent deploy # 后续部署
前端 — 任何能运行 Next.js 的地方均可。仓库包含一个 Dockerfile 用于容器化部署(Cloud Run、Fly.io、Render 等)。对于 Vercel,无需特殊配置,因为唯一的 API 路由是 /api/token 且无状态。在前端主机上设置:
LIVEKIT_URL、LIVEKIT_API_KEY、LIVEKIT_API_SECRET在 agent 主机上设置:LIVEKIT_URL、LIVEKIT_API_KEY、LIVEKIT_API_SECRET、GEMINI_API_KEY
配置
在 src/lib/config.ts 和 translator/src/config.py 中设置——需同步调整:
| 设置 | 默认值 | 位置 |
|---|---|---|
| 每房间最大参与者数 | 8 | MAX_PARTICIPANTS(token 路由) |
| 会话 TTL | 4h | token 路由 ttl |
| 空房间超时 | 60s | token 路由 |
| 静音时会话宽限时间 | 10s | SESSION_GRACE_SEC(agent) |
| 协调防抖时间 | 250ms | RECONCILE_DEBOUNCE_SEC(agent) |
| Gemini 模型 | gemini-3.5-live-translate-preview | GEMINI_MODEL(agent) |
技术栈
- 前端 — Next.js 16 (Turbopack),React 19,
@livekit/components-react,livekit-client - 令牌生成 —
livekit-server-sdk(RoomAgentDispatch+RoomConfiguration) - Agent 运行时 —
livekit-agents1.5,使用AgentServer.rtc_session() - 翻译 — Gemini Live API(原始的 v1beta
BidiGenerateContentWebSocket,带有translationConfig) - 音频 I/O —
livekit.rtc.AudioStream(16 kHz 单声道输入)+AudioSource(24 kHz 单声道输出) - 字体 — Instrument Serif(标题)、DM Sans(正文)、DM Mono(状态)
- 包管理 —
pnpm+uv
许可证 MIT
Google AI Developers (@googleaidevs): 我们最新的音频模型 Gemini 3.5 Live Translate 将实时语音翻译提升到了新高度,为开发者提供跨越 70 多种语言的低延迟翻译。
通过近乎实时地处理流式语音,该模型使开发者能够构建低延迟
相似文章
Gemini 3.5 Live Translate
Gemini 3.5 Live Translate 是一款全新的音频模型,用于实时语音到语音翻译。
@_philschmid:使用新的 Gemini Live Translate、Next.js、LiveKit 和 Cloud Run 构建实时翻译应用。内容包括:1.…
一篇关于使用 Gemini Live Translate、Next.js、LiveKit 和 Cloud Run 构建实时翻译应用的教程,涵盖音频流传输、翻译和部署。
借助 Gemini 3.5 Live Translate 实现流畅自然的语音翻译
Google 发布了 Gemini 3.5 Live Translate,这是一款音频模型,支持超过 70 种语言的近乎实时的语音到语音翻译,并保留说话者的语调和节奏。该功能正在 Google 产品中逐步推出,包括 Gemini Live API、Google Meet 和 Google Translate。
Google发布Gemini 3.5 Live Translate,实现即时语音到语音翻译
Google发布Gemini 3.5 Live Translate,这是一种语音到语音模型,可在70多种语言中提供即时语音翻译,并正在Google生态系统中推广。
@_philschmid: 文档: http://ai.google.dev/gemini-api/docs/live-api/live-translate… GitHub: http://github.com/google-gemini/gemini-live…
Google 推出了 Gemini Live API 用于实时翻译,并提供了文档、GitHub 示例和一篇博客文章。