En este documento, se describe cómo enviar transmisiones de audio y video a la API de Live para la comunicación bidireccional en tiempo real con los modelos de Gemini. Aprende a configurar y transmitir datos de audio y video para crear aplicaciones dinámicas e interactivas.
Envía transmisiones de audio
La implementación de audio en tiempo real requiere un cumplimiento estricto de las especificaciones de la frecuencia de muestreo y una administración cuidadosa del búfer para garantizar una latencia baja y una capacidad de interrupción natural.
La API de Live admite los siguientes formatos de audio:
- Audio de entrada: Audio PCM sin procesar de 16 bits a 16 kHz, little-endian
- Audio de salida: Audio PCM sin procesar de 16 bits a 24 kHz, little-endian
En el siguiente muestra de código, se muestra cómo enviar datos de audio de transmisión:
import asyncio
# Assumes session is an active Live API session
# and chunk_data contains bytes of raw 16-bit PCM audio at 16 kHz.
from google.genai import types
# Send audio input data in chunks
await session.send_realtime_input(
audio=types.Blob(data=chunk_data, mime_type="audio/pcm;rate=16000")
)
El cliente debe mantener un búfer de reproducción. El servidor transmite audio en fragmentos dentro de mensajes server_content. El cliente es responsable de decodificar, almacenar en búfer y reproducir los datos.
En el siguiente muestra de código, se muestra cómo procesar datos de audio de transmisión:
import asyncio
# Assumes session is an active Live API session
# and audio_queue is an asyncio.Queue for buffering audio for playback.
import numpy as np
async for msg in session.receive():
server_content = msg.server_content
if server_content:
# 1. Handle Interruption
if server_content.interrupted:
print("\n[Interrupted] Flushing buffer...")
# Clear the Python queue
while not audio_queue.empty():
try: audio_queue.get_nowait()
except asyncio.QueueEmpty: break
# Send signal to worker to reset hardware buffers if needed
await audio_queue.put(None)
continue
# 2. Process Audio chunks
if server_content.model_turn:
for part in server_content.model_turn.parts:
if part.inline_data:
# Add PCM data to playback queue
await audio_queue.put(np.frombuffer(part.inline_data.data, dtype='int16'))
Enviar transmisiones de video por Internet
El video en streaming proporciona contexto visual. La API de Live espera una secuencia de fotogramas de imágenes discretos y admite la entrada de fotogramas de video a 1 FPS. Para obtener los mejores resultados, usa una resolución nativa de 768 x 768 a 1 FPS.
En el siguiente muestra de código, se muestra cómo enviar datos de video en transmisión:
import asyncio
# Assumes session is an active Live API session
# and chunk_data contains bytes of a JPEG image.
from google.genai import types
# Send video input data in chunks
await session.send_realtime_input(
media=types.Blob(data=chunk_data, mime_type="image/jpeg")
)
La implementación del cliente captura un fotograma del feed de video, lo codifica como un BLOB JPEG y lo transmite con la estructura del mensaje realtime_input.
import cv2
import asyncio
from google.genai import types
async def send_video_stream(session):
# Open webcam
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret: break
# 1. Resize to optimal resolution (768x768 max)
frame = cv2.resize(frame, (768, 768))
# 2. Encode as JPEG
_, buffer = cv2.imencode('.jpg', frame,)
# 3. Send as realtime input
await session.send_realtime_input(
media=types.Blob(data=buffer.tobytes(), mime_type="image/jpeg")
)
# 4. Wait 1 second (1 FPS)
await asyncio.sleep(1.0)
cap.release()
Cómo configurar la resolución de los medios
Puedes especificar la resolución de los medios de entrada configurando el campo media_resolution en la configuración de la sesión. Una resolución más baja reduce el uso de tokens y la latencia, mientras que una resolución más alta mejora el reconocimiento de detalles. Los valores admitidos son low, medium y high.
config = {
"response_modalities": ["audio"],
"media_resolution": "low",
}
¿Qué sigue?
- Cómo iniciar y administrar sesiones en vivo
- Configura las capacidades de la API de Live
- Prácticas recomendadas con la API de Live