Chuyển đến nội dung chính

Bắt đầu với Gemini Live API

Tìm hiểu cách xây dựng trợ lý giọng nói thời gian thực bằng Gemini Live API và Google ADK. Nắm vững WebSocket, gọi công cụ và phát âm thanh gốc.
· 11 phút đọc

Khám phá cùng AI

Nếu bạn từng thử xây dựng một trợ lý giọng nói, bạn sẽ biết quy trình truyền thống khá cồng kềnh. Bạn ghi âm giọng nói của người dùng, chuyển lời nói thành văn bản bằng mô hình STT, gửi văn bản đó tới LLM, chờ phản hồi, rồi đưa phản hồi qua bộ máy TTS. 

Khi người dùng nghe được câu trả lời, đã có vài giây im lặng lúng túng trôi qua. Trải nghiệm giống một vòng lặp yêu cầu - phản hồi chậm chạp hơn là một cuộc trò chuyện tự nhiên. 

Gemini Live API thay đổi quy trình này bằng cách cho phép bạn truyền trực tuyến âm thanh và video liên tục qua kết nối WebSocket có trạng thái. Vì mô hình xử lý và xuất âm thanh một cách tự nhiên, nó có thể phản ứng tức thời, thích ứng với các sắc thái giọng nói tự nhiên và thậm chí xử lý việc ngắt lời giữa chừng (barge-in). 

Trong hướng dẫn này, tôi sẽ chỉ bạn cách xây dựng Real-Time AI Travel Concierge bằng bộ công cụ phát triển tác tử (agent) định hướng mã nguồn Google Agent Development Kit (ADK). Chúng ta sẽ trang bị cho agent tính năng Google Search để tra cứu thời tiết điểm đến theo thời gian thực, kết nối với cơ sở dữ liệu chuyến bay mô phỏng và khởi chạy giao diện nhà phát triển cục bộ để kiểm thử hội thoại thời gian thực và việc gọi công cụ.

Nếu bạn mới làm quen với hệ sinh thái này, tôi khuyến nghị bắt đầu với khóa học Xây dựng AI Agents với Google ADK để nắm kiến thức nền tảng.

Bạn sẽ đạt được: 

  • Hiểu cách thức hoạt động bên trong, năng lực và giá của Gemini Live API.
  • Cấu hình môi trường Python với Google Agent Development Kit. 
  • Cung cấp cho trợ lý giọng nói cả công cụ tích hợp sẵn (Google Search) và logic nghiệp vụ tùy chỉnh (tra cứu cơ sở dữ liệu trạng thái chuyến bay). 
  • Khởi chạy một giao diện web cục bộ để trò chuyện trực tiếp với agent du lịch của bạn.

Yêu cầu tiên quyết: 

  • Hiểu biết cơ bản về Python. 
  • Một dự án Google Cloud (để truy cập Vertex AI) hoặc khóa API Google AI Studio.

Gemini Live API là gì? 

Cốt lõi của Gemini Live API là một công cụ dành cho nhà phát triển từ Google cho phép bạn xây dựng tương tác thời gian thực bằng giọng nói và thị giác với các mô hình Gemini. Thay vì chờ phản hồi theo lượt bằng văn bản, nó cho phép cuộc trò chuyện liên tục, tự nhiên giữa người dùng và tác tử AI. 

Về mặt kỹ thuật, Gemini Live API được thiết kế cho truyền phát hai chiều, thời gian thực. Không giống các HTTP REST API tiêu chuẩn sử dụng chu kỳ yêu cầu - phản hồi không trạng thái, Live API dựa trên WebSocket (WSS) có trạng thái và duy trì. Qua kênh mở này, phía khách hàng truyền trực tiếp âm thanh thô, video (truyền dưới dạng khung hình ảnh khoảng ~1 FPS) và văn bản, trong khi mô hình truyền ngược lại âm thanh và văn bản gốc tức thời.

Các khả năng chính của Gemini Live

  • Barge-in (Khả năng bị ngắt lời): Trong hội thoại tự nhiên, chúng ta không đợi người kia nói hết cả đoạn nếu cần làm rõ. Gemini Live hỗ trợ barge-in ngay từ đầu; người dùng có thể ngắt lời mô hình khi đang nói, và máy chủ lập tức dừng truyền âm thanh và thích nghi với đầu vào mới.
  • Hội thoại cảm xúc và âm thanh gốc: Thay vì tạo văn bản rồi chuyển qua bộ TTS, các mô hình như gemini-live-2.5-flash-native-audio và gemini-3.1-flash-live-preview xử lý và xuất âm thanh gốc. Điều này giữ được sắc thái cảm xúc, tiếng cười, điều chỉnh tông giọng và nhịp điệu lời nói, khiến tương tác trở nên tự nhiên như con người. 
  • Đầu vào đa phương thức và sử dụng công cụ: Live API không bị giới hạn ở âm thanh. Nó có thể “nhìn thấy” môi trường của bạn qua các khung hình video và kích hoạt các hàm hoặc công cụ bên ngoài (như Google Search hoặc API tùy chỉnh) theo thời gian thực, đưa kết quả trở lại luồng giọng nói.

Giá của Gemini Live API

Vì truyền phát thời gian thực liên quan đến kết nối song công liên tục, mô hình tính phí khác với các API văn bản tĩnh tiêu chuẩn. Google cung cấp bậc miễn phí rộng rãi để dựng thử nghiệm trên Google AI Studio và bậc trả phí sẵn sàng sản xuất trên Vertex AI. 

Mô hình gemini-3.1-flash-live-preview được tính phí theo mỗi triệu token hoặc chuyển đổi 

trực tiếp sang chỉ số theo thời lượng cho phương tiện âm thanh và video:

Chỉ số

Bậc Miễn phí (Google AI Studio)

Bậc Trả phí (Vertex AI)

Giá đầu vào (Văn bản)

Miễn phí

$0.75 mỗi 1 triệu token

Giá đầu vào (Âm thanh)

Miễn phí

$3.00 mỗi 1 triệu token (hoặc $0.005 / phút)

Giá đầu vào (Hình ảnh/Video)

Miễn phí

$1.00 mỗi 1 triệu token (hoặc $0.002 / phút)

Giá đầu ra (Văn bản)

Miễn phí

$4.50 mỗi 1 triệu token

Giá đầu ra (Âm thanh)

Miễn phí

$12.00 mỗi 1 triệu token (hoặc $0.018 / phút)

Grounding với Google Search

Miễn phí (Giới hạn tốc độ)

5.000 lời nhắc đầu/tháng miễn phí, sau đó $14 cho mỗi 1.000 truy vấn

Nếu bạn đang dựng thử nghiệm, tôi rất khuyến nghị kiểm thử miễn phí trên Google AI Studio, nơi cung cấp mức truy cập hào phóng nhưng có giới hạn tốc độ. 

Khi sẵn sàng mở rộng, bạn có thể chuyển dự án sang Vertex AI để vận hành với hình thức trả tiền theo mức sử dụng, đảm bảo thông lượng và SLA cấp doanh nghiệp.

Cách truy cập Gemini Live API

Là nhà phát triển, bạn có vài lựa chọn kiến trúc khi triển khai Live API. Vì dựa trên WebSocket, cách bạn định tuyến kết nối ảnh hưởng đến độ trễ và bảo mật.

Client-to-server và server-to-server

  • Client-to-server: Frontend của bạn (ví dụ web hoặc ứng dụng di động) kết nối trực tiếp tới điểm cuối WebSocket của Google. Đây là cách tốt nhất để giảm độ trễ vì luồng âm thanh không phải đi qua thêm nhiều chặng. 
    • Tuy nhiên, bạn không thể để lộ khóa API Google Cloud thô trên frontend; bạn phải triển khai luồng xác thực tạo token tạm thời, ngắn hạn để truy cập an toàn cho client.
  • Server-to-server: Frontend của bạn truyền âm thanh tới máy chủ backend của chính bạn, sau đó backend mở WebSocket tới Gemini Live API. Cách này rất an toàn và cho phép bạn chèn logic backend (như xác thực người dùng hoặc tra cứu cơ sở dữ liệu), nhưng sẽ thêm một chút độ trễ mạng cho luồng âm thanh.

SDK và tích hợp đối tác

Mặc dù bạn có thể viết mã WebSocket thô, cách dễ nhất để bắt đầu là dùng GenAI SDK của Google hoặc Agent Development Kit (ADK). 

Ở cấp độ doanh nghiệp, hệ sinh thái đã nhanh chóng phát triển để hỗ trợ tích hợp WebRTC. Các nền tảng như LiveKit, Pipecat của Daily, Twilio và Voximplant cung cấp hạ tầng vững chắc để xử lý jitter mạng, khử vọng và định tuyến âm thanh thời gian thực trực tiếp vào Gemini Live API.

Xây dựng trợ lý giọng nói thời gian thực với Gemini Live API

Hãy bắt tay vào thực hành. Chúng ta sẽ xây dựng một AI Travel Concierge. 

Agent này sẽ dùng Gemini Live API để trò chuyện với người dùng qua giọng nói, và quan trọng hơn, nó sẽ có quyền truy cập vào các hàm Python tùy chỉnh để tra cứu trạng thái chuyến bay theo thời gian thực trong lúc hội thoại.

Chúng ta sẽ dùng Google Agent Development Kit (ADK) và mô hình gemini-3.1-flash-live-preview mạnh mẽ, được tối ưu cho cả tương tác văn bản tiêu chuẩn và truyền phát WebSocket thời gian thực.

1. Thiết lập môi trường

Trước tiên, bạn cần tạo môi trường ảo Python và cài gói ADK cần thiết. Chạy các lệnh sau trong terminal:

# Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install the Agent Development Kit
pip install google-adk

Tiếp theo, cấu hình biến môi trường để ADK có thể xác thực an toàn với dự án Google Cloud của bạn:

export GOOGLE_CLOUD_PROJECT="your-project-id" 
export GOOGLE_CLOUD_LOCATION="us-central1"

Nếu bạn dùng Gemini API Key từ Google AI Studio, hãy tạo file .env trong thư mục gốc:

GEMINI_API_KEY=your_google_ai_studio_api_key

2. Khởi tạo agent Gemini Live 

Tạo file tên agent.py trong thư mục dự án. ADK được thiết kế để tự động phát hiện và chạy biến root_agent. Trong đoạn mã này, chúng ta sẽ định nghĩa một hàm Python tùy chỉnh để kiểm tra trạng thái chuyến bay, rồi truyền trực tiếp vào bộ công cụ của agent. Khởi tạo thư mục agent: 

mkdir voice_assistant 
touch voice_assistant/__init__.py 
touch voice_assistant/agent.py

Công khai gói agent trong voice_assistant/__init__.py:

from . import agent

3. Định nghĩa agent và công khai công cụ tùy chỉnh 

Mở voice_assistant/agent.py và viết cấu hình cho agent du lịch. Trong mã dưới đây, chúng ta định nghĩa một hàm Python tiêu chuẩn check_flight_status. 

Trong Google ADK, bất kỳ hàm Python nào có type hint và docstring phù hợp sẽ tự động được chuyển thành công cụ của agent. LLM sử dụng mô tả docstring và tham số để quyết định khi nào và cách gọi hàm.

Cấu hình mô hình 

Tận dụng Gemini 3.1 Flash Live Preview. Để hỗ trợ cả hai chế độ tương tác trên máy chủ phát triển ADK—trò chuyện văn bản tiêu chuẩn (dùng các endpoint REST generateContent tiêu chuẩn) và giao diện micro WebSocket hai chiều thời gian thực—chúng ta đặt rõ mô hình là gemini-3.1-flash-live-preview.

Không giống các mô hình chỉ hỗ trợ truyền phát trước đây, vốn trả về 404 Not Found khi kích hoạt qua yêu cầu HTTP REST tiêu chuẩn, gemini-3.1-flash-live-preview hỗ trợ gốc cả tạo nội dung REST tiêu chuẩn và truyền phát WebSocket có trạng thái.

from google.adk.agents.llm_agent import Agent
from google.adk.tools import google_search
def check_flight_status(flight_no: str) -> str:
   """Check the real-time flight status (e.g. delays, gate info, cancellations).
   Args:
       flight_no: The flight number to look up (e.g., AA120, DL450, UA990).
   """
   flight_no = flight_no.upper().strip()
   if "AA120" in flight_no:
       return "Flight AA120 to Paris is currently delayed by 45 minutes due to air traffic control. New departure time: 3:15 PM. Gate status: B22."
   elif "DL450" in flight_no:
       return "Flight DL450 to London is on time. Gate status: Boarding now at Gate C10."
   elif "UA990" in flight_no:
       return "Flight UA990 to Tokyo is cancelled due to adverse weather conditions at the destination. Passengers are advised to rebook at the counter."
   else:
       return f"Flight {flight_no} is currently scheduled on time. No delay reports found in the flight database."
# Define the root agent with search grounding and custom database flight checks
root_agent = Agent(
   model='gemini-3.1-flash-live-preview',
   name='root_agent',
   description='A real-time AI Travel Concierge with flight tracking and search grounding.',
   instruction=(
       'You are an expert AI Travel Concierge. You assist users with real-time flight status checkups, '
       'destination recommendations, and general travel planning. '
       'Always answer professionally and conversationally. '
       'Use the check_flight_status tool when a user asks about a specific flight status. '
       'Use Google Search to look up weather, transit conditions, or travel advisories at destinations.'
   ),
   tools=[google_search, check_flight_status],
)

4. Chạy và kiểm thử giao diện dev tương tác

ADK bao gồm máy chủ phát triển và Web UI tích hợp sẵn. Điều này cho phép bạn kiểm thử agent cục bộ mà không cần viết mã frontend. Khởi động web server từ workspace của bạn:

.venv/bin/adk web .

Bạn sẽ thấy thông báo cho biết máy chủ đã khởi động:

adk web command in terminal

  1. Mở http://127.0.0.1:8000 trong trình duyệt web của bạn.
  2. Chọn agent của bạn từ danh sách ứng dụng.
  3. Nhấn nút Microphone để bắt đầu phiên trực tiếp.

adk web interface

Chọn root_agent từ danh sách ứng dụng để mở giao diện chat.

4. Nói vào micro: Bạn kiểm tra giúp trạng thái chuyến bay AA120 được không? Agent sẽ phân tích yêu cầu của bạn, nhận ra cần thông tin từ cơ sở dữ liệu, kích hoạt hàm Python tùy chỉnh check_flight_status và hiển thị kết quả gọi công cụ dạng JSON trước khi đọc phản hồi cho bạn.

chatting with voice_assistant

5. Kiểm thử Grounding bằng Google Search:  Tiếp theo, hỏi concierge về thời tiết điểm đến: Bây giờ thời tiết ở London thế nào? Agent sẽ kích hoạt công cụ google_search tích hợp sẵn, thu thập thông tin web và tổng hợp điều kiện thời tiết trực tiếp vào phần âm thanh phản hồi.

agent response

6. Kiểm thử tính năng Barge-in: Hỏi một câu rộng như: Hãy kể cho tôi về những di tích lịch sử đáng ghé thăm nhất ở Rome. Khi agent bắt đầu liệt kê, hãy nói đè to lên: Khoan đã! Kiểm tra giúp chuyến bay UA990 nhé!. Agent sẽ lập tức dừng luồng lời nói, ngắt phần chi tiết về Rome, chạy công cụ theo dõi chuyến bay tùy chỉnh và thông báo rằng chuyến UA990 đã bị hủy. Điều này minh họa bản chất độ trễ thấp, song công đầy đủ của kết nối Live API.

Follow up question for agent

Thực tiễn tốt nhất khi đưa Gemini Live API vào sản xuất

Xây dựng ứng dụng giọng nói thời gian thực đặt ra các yêu cầu riêng về kiến trúc prompt, quản lý trạng thái mạng, tiếp nhận âm thanh và mở rộng tài nguyên. Dưới đây là các thực tiễn tốt nhất rút ra từ hướng dẫn chính thức cho nhà phát triển.

1. Thiết kế chỉ dẫn hệ thống rõ ràng

Để đạt hiệu năng tốt nhất với Gemini Live, hãy cấu trúc chỉ dẫn hệ thống (SI) theo thứ bậc chặt chẽ: Persona, Quy tắc hội thoại và Guardrail.

  • Tách biệt persona: Giữ vai trò của mỗi agent trong một chỉ dẫn hệ thống riêng thay vì nhồi nhét nhiều persona vào một agent.
  • Phân định luồng hội thoại: Tách rõ các yếu tố một lần (ví dụ: “hỏi tên và số vé của người dùng một lần”) khỏi các vòng hội thoại mở (ví dụ: “trả lời câu hỏi gợi ý du lịch bao lâu cũng được”).
  • Viết lời gọi công cụ bằng câu hoàn chỉnh: Mô tả cách dùng công cụ theo trình tự. Ví dụ: ‘Đầu tiên, yêu cầu người dùng cung cấp số vé. Sau đó gọi look_up_ticket với số này.’
  • Cưỡng chế tính nhất quán ngôn ngữ: Các mô hình âm thanh gốc có thể trôi ngôn ngữ nếu ngữ cảnh thay đổi. Nếu agent của bạn chỉ dùng tiếng Anh, hãy buộc điều này trong chỉ dẫn: RESPOND IN English. YOU MUST RESPOND UNMISTAKABLY IN English.

2. Định nghĩa công cụ chính xác và điều kiện gọi

Khi cung cấp công cụ cho Live API:

  • Luôn bao gồm chú thích kiểu dữ liệu (type annotation) và mô tả tham số chi tiết.
  • Ghi rõ Điều kiện Gọi (Invocation Conditions) ngay trong phần mô tả metadata của công cụ (ví dụ: “Chỉ gọi công cụ này sau khi người dùng đã xác nhận ngày khởi hành và điểm đến”). Điều này ngăn LLM kích hoạt hàm quá sớm.

3. Quản lý ngữ cảnh âm thanh gốc (Nén)

Token âm thanh gốc tích lũy rất nhanh, khoảng 25 token mỗi giây hội thoại. Với các phiên giọng nói kéo dài, điều này có thể nhanh chóng làm đầy cửa sổ ngữ cảnh và tăng độ trễ.

  • Bật ContextWindowCompressionConfig trong thiết lập kết nối để loại bỏ lịch sử cũ khi đạt ngưỡng:
from google.genai import types
live_config = types.LiveConnectConfig(
   context_window_compression=types.ContextWindowCompressionConfig(
       trigger_tokens=100_000,
       sliding_window=types.SlidingWindow(target_tokens=4_000),
   ),
)

Lưu ý: Nén ngữ cảnh sẽ khiến lịch sử cuộc trò chuyện cũ bị mất.

4. Khôi phục phiên trong suốt

Kết nối di động thời gian thực dễ gặp mất gói và gián đoạn tạm thời. Thay vì bắt đầu lại trạng thái hội thoại từ đầu, hãy triển khai cơ chế khôi phục phiên trong suốt:

  • Cấu hình luồng với SessionResumptionConfig(transparent=True).
  • Lắng nghe sự kiện session_resumption_update từ máy chủ và lưu new_handle.
  • Duy trì bộ đệm cục bộ các thông điệp gửi đi. Khi kết nối rớt, bắt APIError hoặc tín hiệu GoAway, kết nối lại bằng handle đã lưu và phát lại chỉ các thông điệp phía khách chưa được xác nhận (dùng server-reported last_consumed_client_message_index để cắt tỉa bộ đệm).

5. Tối ưu truyền phát âm thanh

  • Bộ đệm phía client: Không đệm các khung âm thanh dài ở phía client trước khi gửi. Hãy truyền các đoạn âm thanh nhỏ (từ 20 ms đến 40 ms) liên tục để giảm độ trễ đầu-cuối.
  • Resample micro: Đảm bảo việc thu âm phía client chuyển đổi tần số mẫu đầu vào (thường 44,1 kHz hoặc 48 kHz) xuống 16 kHz PCM trước khi gửi qua WebSocket.
  • Tín hiệu VAD tường minh: Hãy để mô hình xử lý Voice Activity Detection (VAD). Nếu frontend của bạn cần hiển thị ngay chỉ báo UI (ví dụ “AI đang lắng nghe” vs “AI đang suy nghĩ”), bật explicit_vad_signal=True trong cấu hình để nhận sự kiện bắt đầu/kết thúc VAD trực tiếp trong luồng thông điệp máy chủ.

6. Bảo mật (quản lý token)

  • Không hardcode khóa chính: Tránh để lộ khóa API AI Studio hoặc thông tin tài khoản dịch vụ Google Cloud trong mã phía client (trình duyệt hoặc ứng dụng di động).
  • Triển khai trao đổi token tạm thời: Xây dựng endpoint xác thực trên backend an toàn của bạn. Khi client muốn bắt đầu phiên giọng nói, backend tạo token OAuth hoặc API ngắn hạn, giới hạn quyền (ví dụ qua Vertex AI IAM) và chuyển cho client. Client dùng thông tin xác thực tạm thời này để mở kết nối WebSocket trực tiếp.

Kết luận: Chân trời của Hội thoại AI

Việc chuyển từ các LLM chỉ văn bản theo lượt sang truyền phát đa phương thức, độ trễ thấp là một thay đổi mô hình trong cách chúng ta xây dựng giao diện người - máy. Bằng cách xử lý âm thanh và video gốc qua các kết nối WebSocket có trạng thái, Gemini Live API cho phép chúng ta xây dựng trải nghiệm agent giống giao tiếp giữa con người hơn là các chương trình phần mềm tĩnh.

Xuyên suốt hướng dẫn, chúng ta đã khám phá kiến trúc bên trong của Gemini Live, xem xét mô hình giá và xây dựng một AI Travel Concierge hoàn chỉnh sử dụng Google Agent Development Kit (ADK). Chúng ta đã thấy ADK ánh xạ các hàm Python tiêu chuẩn thành công cụ hoạt động của agent như thế nào, giúp trợ lý giọng nói truy cập cả grounding tìm kiếm web rộng và tra cứu cơ sở dữ liệu nội bộ riêng tư.

Xây dựng gì tiếp theo? 

Giờ bạn đã nắm các nền tảng của agent giọng nói thời gian thực, hãy cân nhắc mở rộng AI Travel Concierge của mình: 

  1. Cung cấp luồng Video Trực tiếp: Thêm hỗ trợ truyền ảnh từ camera để concierge có thể “nhìn” bản đồ, thẻ lên máy bay hoặc phiếu/voucher du lịch bản cứng theo thời gian thực. 
  2. Tích hợp Công cụ Giao dịch Tùy chỉnh: Triển khai công cụ book_flight hoặc reserve_hotel có khả năng thay đổi trạng thái thực, tích hợp phạm vi xác thực để xác nhận người dùng an toàn. 
  3. Định tuyến Middleware Sản xuất: Chuyển từ kiểm thử ADK cục bộ sang khung WebRTC dùng LiveKit hoặc Pipecat để truyền các cuộc gọi giọng nói sản xuất trực tiếp từ web và ứng dụng di động.

Sẵn sàng xây dựng các quy trình hội thoại nâng cao hơn? Xem lộ trình kỹ năng AI Agent Fundamentals của DataCamp để đào sâu kiến thức về kiến trúc agentic, sử dụng công cụ và triển khai AI tạo sinh.

Aryan Irani

Tác giả

Aryan Irani

Tôi viết và sáng tạo trên internet. Chuyên gia Nhà phát triển Google (GDE) cho Google Workspace, tốt nghiệp Khoa học Máy tính tại NMIMS, và là người đam mê xây dựng trong lĩnh vực tự động hóa và Trí tuệ nhân tạo sinh tạo.

Chủ đề

Liên quan