Este documento descreve como configurar respostas de fala sintetizada e detecção de atividade de voz na API Gemini Live. Você pode configurar respostas em uma variedade de vozes e idiomas em HD, além de configurar as opções de detecção de atividade de voz para permitir que os usuários interrompam o modelo.
Definir o idioma e a voz
Os modelos de áudio em tempo real, como o gemini-3.8-live, podem mudar de idioma naturalmente durante a conversa. Você também pode restringir os idiomas que ele fala
especificando isso nas instruções do sistema.
A voz é configurada no campo voice_name para todos os modelos.
O exemplo de código a seguir mostra como configurar o idioma e a 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", ), )
Orientar o tom e o sotaque da voz
Você pode orientar o tom e o sotaque da voz usando instruções do sistema, e a API Gemini Live responde com a voz que você instruiu. Por exemplo, "Inglês com uma voz positiva e animada com sotaque francês".
Vozes compatíveis
A API Gemini Live é compatível com as seguintes 30 opções de voz no campo
voice_name:
|
Zephyr -- Brilhante Kore -- Firme Orus -- Firme Autonoe -- Brilhante Umbriel -- Tranquilo Erinome -- Claro Laomedeia -- Animado Schedar -- Equilibrado Achird -- Amigável Sadachbia -- Animado |
Puck -- Animado Fenrir -- Entusiasmado Aoede -- Leve Enceladus -- Suave Algieba -- Calmo Algenib -- Grave Achernar -- Delicado Gacrux -- Maduro Zubenelgenubi -- Informal Sadaltager -- Conhecedor |
Charon: Informativa Leda: Jovem Callirrhoe: Tranquila Iapetus: Clara Despina: Suave Rasalgethi: Informativa Alnilam: Firme Pulcherrima: Direta Vindemiatrix: Delicada Sulafat: Calorosa |
Linguagens compatíveis
A API Gemini Live está disponível nos seguintes idiomas:
| Idioma | Código BCP-47 |
|---|---|
| Árabe (egípcio) | ar-EG |
| Bengali (Bangladesh) | bn-BD |
| Holandês (Holanda) | nl-NL |
| Inglês (Índia) | Pacote en-IN e hi-IN |
| Inglês (EUA) | en-US |
| Francês (França) | fr-FR |
| Alemão (Alemanha) | de-DE |
| Híndi (Índia) | hi-IN |
| Indonésio (Indonésia) | id-ID |
| Italiano (Itália) | it-IT |
| Japonês (Japão) | ja-JP |
| Coreano (Coreia) | ko-KR |
| Marati (Índia) | mr-IN |
| Polonês (Polônia) | pl-PL |
| Português (Brasil) | pt-BR |
| Romeno (Romênia) | ro-RO |
| Russo (Rússia) | ru-RU |
| Espanhol (EUA) | es-US |
| Tâmil (Índia) | ta-IN |
| Telugu (Índia) | te-IN |
| Tailandês (Tailândia) | th-TH |
| Turco (Turquia) | tr-TR |
| Ucraniano (Ucrânia) | uk-UA |
| Vietnamita (Vietnã) | vi-VN |
Usar uma voz personalizada
Em vez de uma voz predefinida, você pode fornecer uma gravação curta de uma voz que
a API Gemini Live replica em respostas de fala sintetizada. As vozes personalizadas são configuradas por sessão no campo replicated_voice_config de voice_config. Não é preciso fazer upload nem treinamento antecipado.
Requisitos de amostra de voz
A amostra de voz precisa atender às seguintes especificações:
Formato de áudio: áudio PCM
s16lecom taxa de amostragem variável, por exemploaudio/pcm;rate=24000Duração: de 10 a 20 segundos.
Gravar uma voz personalizada
Ao gravar a amostra de voz, recomendamos as seguintes dicas para ter a melhor qualidade de voz:
Fale naturalmente: não use uma "voz de rádio" nem pronuncie demais, a menos que você queira que o avatar soe como um locutor. Leia o roteiro exatamente como se estivesse falando com um amigo.
Limite o ruído de fundo: reduza o ruído de fundo o máximo possível. Desligue ventiladores e aparelhos de ar-condicionado e feche as janelas.
Sorria levemente: sorrir durante a gravação tende a adicionar calor à gravação, que é adicionado à voz replicada.
Scripts recomendados para voz personalizada
Recomendamos que você use um dos seguintes scripts para gravar vozes personalizadas:
Padrão fonético, melhor para qualidade geral: "Quando a luz do sol atinge as gotas de chuva no ar, elas agem como um prisma e formam um arco-íris. O arco-íris é uma divisão da luz branca em muitas cores bonitas. Elas têm a forma de um arco longo e redondo".
Narrador, ideal para capturar emoção e faixa dinâmica: "Não acreditei quando abri o livro velho e empoeirado. Uma pequena chave dourada caiu no chão de madeira. "De onde isso veio?" Eu sussurrei para mim mesma, sentindo uma emoção repentina. Tudo estava prestes a mudar."
Definir a voz personalizada
Configure a voz personalizada no payload setup inicial que você envia pela conexão
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": {}, } }
Substitua:
VOICE_SAMPLE: uma string de áudio PCM codificada em base64 (amostra de 10 a 20 segundos).
VOICE_MIME_TYPE: tipo MIME para áudio PCM, por exemplo,
"audio/pcm;rate=24000".
Você pode combinar uma voz personalizada com um avatar pré-criado ou personalizado. Para mais informações, consulte Configurar avatares dinâmicos.
Configurar a detecção de atividade de voz
A detecção de atividade de voz (VAD, na sigla em inglês) permite que o modelo reconheça quando uma pessoa está falando. Isso é essencial para criar conversas naturais, porque permite que um usuário interrompa o modelo a qualquer momento.
Quando a VAD detecta uma interrupção, a geração em andamento é cancelada e descartada. Somente as informações já enviadas ao cliente são mantidas no histórico da sessão. Em seguida, o servidor envia uma mensagem BidiGenerateContentServerContent
para informar a interrupção. Em seguida, o servidor descarta todas as chamadas de função pendentes e envia uma mensagem BidiGenerateContentServerContent com os IDs das chamadas 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, } } }