Começar a usar a API Gemini Live com o SDK da IA generativa do Google

Neste tutorial, mostramos como se conectar à API Gemini Live usando a versão em Python do SDK da IA generativa do Google. Neste tutorial, você vai configurar um projetoGoogle Cloud para usar a API Live com o SDK da IA generativa, enviar um arquivo de áudio para o modelo e receber áudio em resposta.

Antes de começar

Antes de enviar solicitações, você precisa configurar a autenticação com a Vertex AI. É possível configurar a autenticação usando uma chave de API ou usando as credenciais padrão do aplicativo (ADC).

Para este tutorial, a maneira mais rápida de começar é usar uma chave de API:

Para instruções sobre como configurar a autenticação usando o ADC, consulte nosso guia de início rápido.

Instalar o SDK de IA generativa

Execute o seguinte comando para instalar a biblioteca google-genai:

pip install --upgrade google-genai

Configurar variáveis de ambiente

Defina variáveis de ambiente para o ID e o local do projeto. Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

export GOOGLE_CLOUD_PROJECT=PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

Iniciar uma sessão de áudio

Este exemplo estabelece uma sessão, transmite áudio de um arquivo e imprime o tamanho dos trechos de áudio na resposta.

import asyncio
import os
import sys
from pathlib import Path
from google import genai
from google.genai import types

# Configuration
MODEL = "gemini-live-2.5-flash-preview-native-audio-09-2025"
config = {
   "response_modalities": ["audio"],
}

client = genai.Client()

async def main():
   # Establish WebSocket session
   async with client.aio.live.connect(model=MODEL, config=config) as session:
       print("Session established. Sending audio...")

       # Download sample if missing
       if not os.path.exists("input.wav"):
           !wget -q https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/where_the_nearest_train_station_is.wav -O input.wav

       # Send Input (Simulated from file)
       # In production, this would be a microphone stream
       # Format: PCM, 16kHz, 16-bit, Mono, Little-Endian
       with open("input.wav", "rb") as f:
           while chunk := f.read(1024):
               await session.send_realtime_input(
                   audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
               )
               await asyncio.sleep(0.01) # Simulate real-time stream

       # Receive Output
       async for message in session.receive():
           if message.server_content:
               # Check for interruptions (User barge-in)
               if message.server_content.interrupted:
                   print("[Interrupted] Clear client audio buffer immediately.")
                   continue

               # Process Audio Chunks
               model_turn = message.server_content.model_turn
               if model_turn and model_turn.parts:
                   for part in model_turn.parts:
                       if part.inline_data:
                           # Output is PCM, 24kHz, 16-bit, Mono
                           audio_data = part.inline_data.data
                           print(f"Received audio chunk: {len(audio_data)} bytes")

           if message.server_content.turn_complete:
               print("Turn complete.")

if "ipykernel" in sys.modules:
   # Run directly in notebook
   await main()
else:
   # Run as standard .py script
   asyncio.run(main())

A seguir