En este documento, se describe cómo configurar las respuestas de voz sintetizada y la detección de actividad de voz en la API de Gemini Live. Puedes configurar respuestas en una variedad de voces y lenguajes en HD, y también configurar los parámetros de configuración de detección de actividad de voz para permitir que los usuarios interrumpan el modelo.
Cómo configurar el idioma y la voz
Los modelos de audio en vivo, como gemini-3.8-live, pueden cambiar de idioma de forma natural durante la conversación. También puedes restringir los idiomas en los que habla especificándolos en las instrucciones del sistema.
La voz se configura en el campo voice_name para todos los modelos.
En la siguiente muestra de código, se muestra cómo configurar el idioma y la voz.
from google.genai.types import LiveConnectConfig, SpeechConfig, VoiceConfig, PrebuiltVoiceConfig config = LiveConnectConfig( response_modalities=["AUDIO"], speech_config=SpeechConfig( voice_config=VoiceConfig( prebuilt_voice_config=PrebuiltVoiceConfig( voice_name=voice_name, ) ), language_code="en-US", ), )
Guía de tono y acento de la voz
Puedes guiar el tono y el acento de la voz con instrucciones del sistema, y la API de Gemini Live responderá con la voz que le indicaste. Por ejemplo, "Inglés con una voz positiva y alegre con acento francés".
Voces compatibles
La API de Gemini Live admite las siguientes 30 opciones de voz en el campo voice_name:
|
Zephyr: Brillante Kore: Firme Orus: Firme Autonoe: Brillante Umbriel: Tranquila Erinome: Clara Laomedeia: Optimista Schedar: Uniforme Achird: Amigable Sadachbia: Animada |
Puck: Animado Fenrir: Entusiasmado Aoede: Ligero Enceladus: Suave Algieba: Suave Algenib: Grave Achernar: Suave Gacrux: Maduro Zubenelgenubi: Informal Sadaltager: Informativo |
Caronte: Informativo Leda: Juvenil Calírroe: Tranquila Jápeto: Claro Despina: Suave Rasalgethi: Informativo Alnilam: Firme Pulcherrima: Directo Vindemiatrix: Suave Sulafat: Cálido |
Lenguajes compatibles
La API de Gemini Live admite los siguientes idiomas:
| Idioma | Código BCP-47 |
|---|---|
| Árabe (Egipto) | ar-EG |
| Bengalí (Bangladés) | bn-BD |
| Holandés (Países Bajos) | nl-NL |
| Inglés (India) | Paquete de en-IN y hi-IN |
| English (US) | en-US |
| Francés (Francia) | fr-FR |
| Alemán (Alemania) | de-DE |
| Hindi (India) | hi-IN |
| Indonesio (Indonesia) | id-ID |
| Italiano (Italia) | it-IT |
| Japonés (Japón) | ja-JP |
| Coreano (Corea) | ko-KR |
| Maratí (India) | mr-IN |
| Polaco (Polonia) | pl-PL |
| Portugués (Brasil) | pt-BR |
| Rumano (Rumania) | ro-RO |
| Ruso (Rusia) | ru-RU |
| Español (EE.UU.) | es-US |
| Tamil (India) | ta-IN |
| Telugu (India) | te-IN |
| Tailandés (Tailandia) | th-TH |
| Turco (Türkiye) | tr-TR |
| Ucraniano (Ucrania) | uk-UA |
| Vietnamita (Vietnam) | vi-VN |
Cómo usar una voz personalizada
En lugar de una voz prediseñada, puedes proporcionar una grabación corta de una voz que la API de Gemini Live replicará en las respuestas de voz sintetizada. Las voces personalizadas se configuran por sesión en el campo replicated_voice_config de voice_config. No es necesario subir ni entrenar nada con anticipación.
Requisitos de las muestras de voz
La muestra de voz debe cumplir con las siguientes especificaciones:
Formato de audio: Audio PCM
s16lecon una frecuencia de muestreo variable, por ejemplo,audio/pcm;rate=24000Duración: De 10 a 20 segundos
Cómo grabar una voz personalizada
Cuando grabes la muestra de voz, te recomendamos que sigas estas sugerencias para obtener la mejor calidad de voz:
Habla con naturalidad: No uses una "voz de radio" ni pronuncies demasiado, a menos que quieras que el avatar suene como un locutor. Lee el guion exactamente como si le hablaras a un amigo.
Limita el ruido de fondo: Limita el ruido de fondo lo más posible. Apaga los ventiladores y las unidades de aire acondicionado, y cierra las ventanas abiertas.
Sonríe levemente: Sonreír mientras grabas tiende a agregar calidez a la grabación, y esa calidez se agrega a la voz replicada.
Secuencias de comandos recomendadas para la voz personalizada
Te recomendamos que uses uno de los siguientes guiones para grabar voces personalizadas:
Estándar fonético, ideal para la calidad general: "Cuando la luz del sol golpea las gotas de lluvia en el aire, actúan como un prisma y forman un arcoíris. El arcoíris es la división de la luz blanca en muchos colores hermosos. Tienen la forma de un arco redondo largo".
Storyteller, ideal para capturar emociones y rango dinámico: "No podía creer lo que veía cuando abrí el viejo y polvoriento libro. Una pequeña llave dorada cayó con un golpe seco sobre el piso de madera. “¿De dónde salió esto?” Me dije en voz baja, sintiendo una repentina emoción. Todo estaba a punto de cambiar".
Cómo establecer la voz personalizada
Configura la voz personalizada en la carga útil setup inicial que envías a través de la conexión WebSocket:
import base64 import json import websockets # Load custom voice audio (PCM s16le, e.g., 24kHz) with open("/path/to/your/audio_sample.wav", "rb") as f: wav_b64 = base64.b64encode(f.read()).decode("utf-8") # Setup generation config with custom voice GENERATION_CONFIG = { "response_modalities": ["AUDIO"], "speech_config": { "voice_config": { "replicated_voice_config": { "voice_sample_audio": "VOICE_SAMPLE", "mime_type": "VOICE_MIME_TYPEaudio/pcm;rate=24000", } } }, } # Session setup message SETUP_MESSAGE = { "setup": { "model": "gemini-3.8-live", "generation_config": GENERATION_CONFIG, "system_instruction": { "parts": [{"text": "Your system instruction here"}] }, "input_audio_transcription": {}, "output_audio_transcription": {}, } }
Reemplaza lo siguiente:
VOICE_SAMPLE: Es una cadena de audio PCM codificada en base64 (muestra de 10 a 20 s).
VOICE_MIME_TYPE: Tipo de MIME para audio PCM, por ejemplo,
"audio/pcm;rate=24000".
Puedes vincular una voz personalizada con un avatar prediseñado o uno personalizado. Para obtener más información, consulta Cómo configurar avatares en vivo.
Cómo configurar la detección de actividad de voz
La detección de actividad de voz (VAD) permite que el modelo reconozca cuando una persona está hablando. Esto es fundamental para crear conversaciones naturales, ya que permite que el usuario interrumpa al modelo en cualquier momento.
Cuando el VAD detecta una interrupción, se cancela y descarta la generación en curso. En el historial de la sesión, solo se conserva la información que ya se envió al cliente. Luego, el servidor envía un mensaje de BidiGenerateContentServerContent para informar la interrupción. Luego, el servidor descarta cualquier llamada a función pendiente y envía un mensaje BidiGenerateContentServerContent con los IDs de las llamadas canceladas.
Python
config = { "response_modalities": ["audio"], "realtime_input_config": { "automatic_activity_detection": { "disabled": False, # default "start_of_speech_sensitivity": "low", "end_of_speech_sensitivity": "low", "prefix_padding_ms": 20, "silence_duration_ms": 100, } } }
¿Qué sigue?
- Cómo iniciar y administrar sesiones en vivo
- Envía transmisiones de audio y video
- Configura las capacidades de Gemini
- Prácticas recomendadas para la API de Gemini Live