Configurar idioma e voz

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 s16le com taxa de amostragem variável, por exemplo audio/pcm;rate=24000

  • Duraçã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:

  1. 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.

  2. 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.

  3. Sorria levemente: sorrir durante a gravação tende a adicionar calor à gravação, que é adicionado à voz replicada.

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,
        }
    }
}
      

A seguir