Questo tutorial mostra come connettersi all'API Gemini Live utilizzando la versione Python dell'SDK Google Gen AI. In questo tutorial configurerai un progettoGoogle Cloud per utilizzare l'API Live con l'SDK Gen AI, invierai un file audio al modello e riceverai l'audio in risposta.
Prima di iniziare
Prima di poter inviare richieste, devi configurare l'autenticazione con Vertex AI. Puoi configurare l'autenticazione utilizzando una chiave API o le credenziali predefinite dell'applicazione (ADC).
Per questo tutorial, il modo più rapido per iniziare è utilizzare una chiave API:
Se non hai mai utilizzato Google Cloud, ottieni una chiave API in modalità express.
Se hai già un progetto Google Cloud , ottieni una chiave API Google Cloud associata a un account di servizio. L'associazione di una chiave API a un account di servizio è possibile solo se è abilitata nelle impostazioni dei criteri dell'organizzazione. Se non riesci ad attivare questa impostazione, utilizza le credenziali predefinite dell'applicazione.
Per istruzioni sulla configurazione dell'autenticazione tramite ADC, consulta la nostra guida rapida.
Installa l'SDK Gen AI
Esegui questo comando per installare la libreria google-genai:
pip install --upgrade google-genai
Imposta le variabili di ambiente
Imposta le variabili di ambiente per l'ID progetto e la località. Sostituisci PROJECT_ID con l'ID progetto Google Cloud.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True
Avviare una sessione audio
Questo esempio stabilisce una sessione, riproduce in streaming l'audio da un file e stampa le dimensioni dei blocchi audio nella risposta.
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())