Gemini Live API 教學:3 大概念打造實時語音 AI Agent,WebSocket 架構 + 官方程式碼

✏️ 原創內容| TechRitual 編輯部

Google Gemini Live API 嘅最大賣點,唔止係語音合成咁簡單:佢可以一邊聽你講嘢、一邊即時回答,仲可以畀你隨時打斷,感覺就似真正嘅電話對話。Google 最近發佈咗一段詳盡教學,將整個 live voice agent 拆解成 3 部分:Gemini Live 同傳統 TTS 嘅差異、三層架構同一個 web socket 核心循環、以及令個 agent「有生命」嘅 3 個關鍵概念。本文整理呢段教學嘅核心內容、附上 Google 官方提供嘅程式碼連結同文件,畀有興趣建立自家實時語音 AI agent 嘅開發者一個完整概覽。

Gemini Live 同傳統 TTS 嘅 3 大差異:audio-to-audio + 雙向 + 即時串流

傳統嘅 text-to-speech(TTS)系統運作好直接:你輸入文字,佢輸出語音,一個方向嘅 pipeline。TTS 系統識講嘢,但聽唔到你,佢根本唔知你係咪喺度。

Gemini Live 走嘅係完全唔同嘅方向:audio-to-audio,雙向同時進行。佢直接收你嘅語音訊號、檢測語氣、停頓、能量同你講嘢嘅方式,再即時生成並串流輸出語音。

核心 3 大差異:

  • 方向:TTS 係 text → audio 單向;Gemini Live 係 audio ↔ audio 雙向
  • 感知:TTS 唔知你喺度;Gemini Live 識聽 tone、pause、energy 等語音線索
  • 時序:TTS 等晒整個 response 先開始讀;Gemini Live 邊諗邊講,可以喺生成答案嘅同時已經開始串流音訊

換句話講:「TTS reads, Live hears」 — 傳統 TTS 會讀出嚟,Gemini Live 真係會聽你講嘢。

3 層架構:瀏覽器 + 後端 + Gemini Live,配 WebSocket 連接

整個 live voice agent 嘅架構由 3 個部分組成:

  • 瀏覽器:負責擷取你嘅咪高峰音訊、播放 Gemini 嘅回應
  • Gemini Live:live 語音模型本身
  • 後端:保留同 Gemini 嘅長連線,作為瀏覽器同 Gemini 之間嘅音訊通道

瀏覽器同後端之間嘅通訊用 WebSocket,而唔係一般嘅 HTTP request。原因係:一般 HTTP request 只能「問一次就斷」,但 live voice 需要雙向持續音訊流量,所以一定要用 WebSocket 維持長連線。

後端實際做緊 2 個並行任務:

  • 任務 A:將你嘅咪高峰音訊持續串流上傳到 Gemini
  • 任務 B:接收 Gemini 嘅語音回應,再傳返畀瀏覽器播放

兩個 task 互相獨立運行,所以 agent 講嘢嘅同時你都可以即時打斷。

核心循環只有 4 步:Open → Send → Receive → Play

實際寫 code 嘅時候,整個對話就係 4 個步驟嘅循環:

  • Open:開啟同 Gemini Live 嘅 session
  • Send:將瀏覽器擷取嘅咪高峰音訊送到後端
  • Receive:後端收到 Gemini 嘅語音回應,再傳返去瀏覽器
  • Play:瀏覽器即時播放 Gemini 嘅回應

Google 喺教學入面強調:「呢個循環好簡單 — Open、Send、Receive、Play,其他全部都係 plumbing(接駁細節)。」搞掂呢個循環,你已經有咗一個可運作嘅 voice agent。

令 agent「有生命」嘅 3 個核心概念:VAD、Barge-in、Tools

搞掂 4 步循環之後,技術上 agent 已經行得通,但係同真正嘅對話經驗仲有好大距離。要令佢感覺「活生生」,需要 3 個進階概念。

概念 1:Voice Activity Detection(VAD),點樣知道你講完?

VAD(Voice Activity Detection)係模型持續問自己嘅問題:而家係有人喺度講嘢,定係靜音?呢個判斷令模型可以搵到你嘅 turn 嘅起點同終點 — 即係知道你幾時開始講、幾時停。

亦因為咁,你嘅咪高峰需要喺你冇講嘢嘅時候都持續串流 audio 落模型,因為模型需要嗰段「持續嘅 stream」去捕捉你開口嘅一刻。

好消息係:Gemini Live 嘅 VAD 係內建嘅,你唔需要自己寫。

概念 2:Barge-in,可以打斷 agent 講嘢

Barge-in 嘅意思係:你喺 agent 講緊嘢嘅時候插嘴,agent 即時停。對講機做唔到呢樣嘢,但真正嘅人與人對話可以。

Gemini Live 內部就係用同一個 VAD 機制,去探測你係咪「開始喺 agent 上面搶話」。當探測到你打斷,模型會即刻停低自己,並發出一個「interrupted」訊號返後端。

令打斷感覺即時嘅關鍵技巧:

  • 唔好等個 interrupted 訊號跨越網絡先停本地音訊
  • 瀏覽器一旦從咪高峰「聽到」你開始講,就即刻暫停現有嘅 agent 語音播放
  • 等你嘅聲音輸入完咗,再由 model 嘅 interrupted 訊號確認狀態同步

呢個「本地即停」嘅設計就係令打斷感覺自然嘅秘密。

概念 3:Tools,畀 agent 嘅實際技能

Gemini Live 模型本身淨係識講嘢 — 佢冇能力播歌、skip 緊嘅歌、撳掣。所以你要畀佢 tools — 一啲 function call,每個 tool 都有自己嘅名、描述同代表一個 action。

教學入面嘅示範 tool 例子:

  • play_playlist:播放一個 playlist
  • skip_current_track:跳過當前歌曲
  • pause_music:暫停音樂

運作模式係:模型決定要用邊個 tool 之後,佢唔會單純「講」要做乜,而係會直接 emit「用呢個 tool + 呢啲 arguments」嘅指示,由你嘅後端 code 執行之後再回報結果。

Google 特別強調一條 voice 限定嘅規則:「tool-latency rule」:「當 tool 執行緊嘅時候,模型係 waiting 嘅。」如果 tool 太耐先 return,個對話就會入靜音狀態。所以你嘅音樂 tool 應該搵到指令即 return,唔好等成首歌播完先答。

總結 3 大概念一句講晒:VAD 捉你嘅 turn、Barge-in 畀你打斷、Tools 令個 agent 可以做事。

小結:raw API vs Google ADK 嘅選擇

今次教學嘅實作示範刻意用 raw GenAI SDK — 開發者可以睇到每個部分(session、stream、audio loop、tools)嘅運作原理,完全冇 framework 隱藏。但就係要寫多啲 plumbing code。

Google 提到嘅下一集將會用嘅 Google ADK(Agent Development Kit),就係為咗呢類 voice agent 提供 framework:

  • Agent、session、streaming loop 都由 framework 管理
  • 內置 queue 維持 live call 流暢
  • 開發者只係寫 high-level 業務邏輯(tools、prompts)

如果你只係想快啲試到 live voice agent,ADK 會係更易入手嘅選擇;如果你想了解底下運作原理或者做大量客製,今次教學嘅 raw API 更加清晰。

官方完整資源

  • Demo 程式碼:[g.dev/cloud/voicedemo1](https://g.dev/cloud/voicedemo1)
  • Gemini Live API 文件:[g.dev/cloud/gemini-live](https://g.dev/cloud/gemini-live)
  • Agent Development Kit 文件:[g.dev/cloud/adk-docs](https://g.dev/cloud/adk-docs)
  • Google Cloud 路線圖:[g.dev/cloud/mma-roadmap](https://g.dev/cloud/mma-roadmap)
  • 下一集預告:用 Google ADK 重建同一個 voice agent app
Henderson
Henderson

Henderson 是 TechRitual Hong Kong 科技編輯,專注報導智能手機、消費電子產品、SIM 卡及流動通訊市場。自加入 TechRitual 以來,累計撰寫數千篇科技報導及產品評測,內容同步發佈至 SINA 及 Yahoo Tech 等主要平台。

友情網站:日本語版 / TechNipponThe Base Principle(AI・工程)