Premiers pas avec l'API Gemini Live à l'aide du SDK Google Gen AI

Ce tutoriel vous explique comment vous connecter à l'API Gemini Live à l'aide de la version Python du SDK Google Gen AI. Dans ce tutoriel, vous allez configurer un projetGoogle Cloud pour utiliser l'API Live avec le SDK Gen AI, envoyer un fichier audio au modèle et recevoir de l'audio en réponse.

Avant de commencer

Avant de pouvoir envoyer des requêtes, vous devez configurer l'authentification avec Vertex AI. Vous pouvez configurer l'authentification à l'aide d'une clé API ou d'identifiants par défaut de l'application (ADC).

Pour ce tutoriel, le moyen le plus rapide de commencer est d'utiliser une clé API :

Pour obtenir des instructions sur la configuration de l'authentification à l'aide d'ADC, consultez notre démarrage rapide.

Installer le SDK Gen AI

Exécutez la commande suivante pour installer la bibliothèque google-genai :

pip install --upgrade google-genai

Configurer des variables d'environnement

Définissez des variables d'environnement pour l'ID et l'emplacement de votre projet. Remplacez PROJECT_ID par l'ID du projet Google Cloud.

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

Démarrer une session audio

Cet exemple établit une session, diffuse l'audio d'un fichier et affiche la taille des blocs audio dans la réponse.

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())

Étapes suivantes