Tutorial da API Gemini Live: 3 conceitos para criar um agente de voz AI em tempo real, estrutura WebSocket + código oficial

O maior atrativo da Google Gemini Live API não é apenas a síntese de voz: ela pode ouvir o que você diz e responder em tempo real, além de permitir que você a interrompa a qualquer momento, proporcionando a sensação de uma conversa telefónica real. A Google Cloud Tech lançou recentemente um tutorial detalhado que divide todo o agente de voz ao vivo em 3 partes: as diferenças entre Gemini Live e TTS tradicional, a arquitetura de três camadas e um ciclo central de WebSocket, e os 3 conceitos-chave que dão “vida” ao agente. Este artigo resume o conteúdo central desse tutorial, incluindo links de código e documentação fornecidos pela Google, para dar aos desenvolvedores interessados em criar seu próprio agente de IA de voz em tempo real uma visão completa.

As 3 principais diferenças entre Gemini Live e TTS tradicional: audio-to-audio + bidirecional + streaming em tempo real

Os sistemas tradicionais de text-to-speech (TTS) funcionam de forma bastante direta: você insere texto, e ele gera voz, numa pipeline unidirecional. O sistema TTS sabe falar, mas não consegue ouvir você, não tem ideia se você está presente.

A Gemini Live segue uma direção completamente diferente: audio-to-audio, funcionando de forma bidirecional. Ela recebe diretamente o seu sinal de voz, detecta o tom, as pausas, a energia e a forma como você fala, e gera e transmite a voz em tempo real.

As 3 principais diferenças são:

  • Direção: TTS é text → audio unidirecional; Gemini Live é audio ↔ audio bidirecional
  • Percepção: TTS não sabe que você está presente; Gemini Live consegue ouvir pistas de voz como tom, pausa, energia, etc.
  • Temporização: TTS espera que toda a resposta esteja pronta antes de começar a ler; Gemini Live pode pensar e falar ao mesmo tempo, começando a transmitir áudio enquanto gera a resposta.

Em outras palavras: “TTS lê, Live ouve” — o TTS tradicional lê, enquanto a Gemini Live realmente ouve você falar.

Arquitetura de 3 camadas: navegador + backend + Gemini Live, com conexão WebSocket

A arquitetura do agente de voz ao vivo é composta por 3 partes:

  • Navegador: responsável por capturar o áudio do seu microfone e reproduzir as respostas da Gemini
  • Gemini Live: o modelo de voz ao vivo em si
  • Backend: mantém a conexão de longa duração com a Gemini, servindo como canal de áudio entre o navegador e a Gemini

A comunicação entre o navegador e o backend utiliza WebSocket, em vez de uma requisição HTTP comum. A razão é que uma requisição HTTP normal só pode “perguntar uma vez e desconectar”, mas a voz ao vivo requer um fluxo contínuo de áudio bidirecional, portanto, é necessário usar WebSocket para manter a conexão de longa duração.

O backend realiza 2 tarefas paralelas:

  • Tarefa A: transmitir continuamente o áudio do seu microfone para a Gemini
  • Tarefa B: receber a resposta de voz da Gemini e retransmiti-la para o navegador

As duas tarefas funcionam de forma independente, permitindo que você interrompa o agente em tempo real enquanto ele fala.

O ciclo central tem apenas 4 etapas: Open → Send → Receive → Play

Ao escrever o código, todo o diálogo é um ciclo de 4 etapas:

  • Open: abrir uma sessão com a Gemini Live
  • Send: enviar o áudio do microfone capturado pelo navegador para o backend
  • Receive: o backend recebe a resposta de voz da Gemini e a retransmite para o navegador
  • Play: o navegador reproduz imediatamente a resposta da Gemini

A Google enfatiza no tutorial: “Este ciclo é muito simples — Open, Send, Receive, Play; o resto é tudo plumbing (detalhes de conexão).” Dominando esse ciclo, você já terá um agente de voz funcional.

Os 3 conceitos-chave que dão “vida” ao agente: VAD, Barge-in, Tools

Depois de dominar o ciclo de 4 etapas, tecnicamente o agente já funciona, mas ainda há uma grande distância até a experiência de conversa real. Para que ele pareça “vivo”, são necessários 3 conceitos avançados.

Conceito 1: Detecção de Atividade Vocal (VAD), como saber quando você terminou de falar?

VAD (Voice Activity Detection) é a pergunta que o modelo se faz continuamente: agora há alguém falando ou está em silêncio? Essa avaliação permite que o modelo encontre o início e o fim do seu turno — ou seja, saber quando você começa a falar e quando para.

Por isso, seu microfone precisa transmitir continuamente áudio para o modelo mesmo quando você não está falando, pois o modelo precisa desse “fluxo contínuo” para capturar o momento em que você começa a falar.

A boa notícia é que o VAD da Gemini Live é embutido, você não precisa escrevê-lo.

Conceito 2: Barge-in, a capacidade de interromper o agente enquanto ele fala

Barge-in significa: você interrompe o agente enquanto ele está falando, e ele para imediatamente. Um walkie-talkie não consegue fazer isso, mas uma conversa real entre pessoas pode.

A Gemini Live usa o mesmo mecanismo de VAD para detectar se você “começou a interromper o agente”. Quando detecta que você interrompeu, o modelo para imediatamente e envia um sinal de “interrompido” para o backend.

A chave para fazer a interrupção parecer imediata é:

  • Não esperar que o sinal de interrompido atravesse a rede antes de parar o áudio local
  • Assim que o navegador “ouve” você começar a falar, ele deve pausar imediatamente a reprodução da voz do agente
  • Depois que sua entrada de voz terminar, o sinal de interrompido do modelo confirma a sincronização do estado

Esse design de “parada local imediata” é o segredo para fazer a interrupção parecer natural.

Conceito 3: Ferramentas, dando habilidades práticas ao agente

O modelo Gemini Live em si só sabe falar — ele não tem a capacidade de tocar música, pular uma música ou pressionar botões. Portanto, você precisa dar a ele ferramentas — algumas chamadas de função, cada ferramenta tem seu próprio nome, descrição e representa uma ação.

Exemplos de ferramentas demonstradas no tutorial:

  • play_playlist: reproduzir uma playlist
  • skip_current_track: pular a música atual
  • pause_music: pausar a música

O modo de operação é: depois que o modelo decide qual ferramenta usar, ele não simplesmente “diz” o que fazer, mas emite diretamente a instrução “usar esta ferramenta + estes argumentos”, que seu código de backend executa e depois retorna o resultado.

A Google enfatiza uma regra de limitação de voz: “regra de latência da ferramenta”: “quando a ferramenta está em execução, o modelo está esperando.” Se a ferramenta demorar muito para retornar, a conversa entra em estado de silêncio. Portanto, sua ferramenta de música deve retornar imediatamente assim que receber o comando, sem esperar a música tocar até o fim.

Resumindo os 3 conceitos em uma frase: VAD captura seu turno, Barge-in permite que você interrompa, e Tools permitem que o agente faça coisas.

Conclusão: escolha entre API bruta e Google ADK

O exemplo prático deste tutorial foi intencionalmente feito com o raw GenAI SDK — os desenvolvedores podem ver como cada parte (sessão, stream, loop de áudio, ferramentas) funciona, sem nenhum framework oculto. Mas isso significa que você terá que escrever mais código de plumbing.

A Google mencionou que o próximo episódio usará o Google ADK (Agent Development Kit), que fornece um framework para esse tipo de agente de voz:

  • Agente, sessão e loop de streaming são geridos pelo framework
  • Fila embutida para manter chamadas ao vivo suaves
  • Os desenvolvedores apenas escrevem lógica de negócios de alto nível (ferramentas, prompts)

Se você só quer experimentar rapidamente um agente de voz ao vivo, o ADK será uma escolha mais fácil; se você deseja entender os princípios de funcionamento ou fazer muitas personalizações, a API bruta deste tutorial é mais clara.

Recursos oficiais completos

  • Código de demonstração: [g.dev/cloud/voicedemo1](https://g.dev/cloud/voicedemo1)
  • Documentação da Gemini Live API: [g.dev/cloud/gemini-live](https://g.dev/cloud/gemini-live)
  • Documentação do Agent Development Kit: [g.dev/cloud/adk-docs](https://g.dev/cloud/adk-docs)
  • Roteiro do Google Cloud: [g.dev/cloud/mma-roadmap](https://g.dev/cloud/mma-roadmap)
  • Próximo episódio: reconstruindo o mesmo aplicativo de agente de voz usando o Google ADK

Conteúdo original
Este artigo é a versão em português de um conteúdo original do TechRitual.
Stein Yep
Stein Yep