Gemini 3.5 Transcribe: guia prático para devs em produção

Gemini 3.5 Transcribe: guia prático para devs em produção

O que o Gemini 3.5 Transcribe resolve de verdade (e o que a maioria ainda ignora)

Testei vários serviços de transcrição nos últimos anos. A grande maioria erra no mesmo ponto: trata fala como sequência de palavras, não como intenção. Quando alguém fala “amanhã… quer dizer, hoje, às três”, um transcritor comum devolve exatamente esse amontoado. Já o Gemini 3.5 Transcribe, segundo o Eurisko.com.br, remove vícios, resolve autocorreções e reorganiza o texto como se um editor humano tivesse passado por cima.

Na minha experiência, isso muda o jogo para qualquer fluxo que dependa de transcrição limpa: atas de reunião, documentação de calls técnicas, legendagem de vídeos de produto, logs de suporte. A diferença entre um WER de 4% e 2,6% parece marginal no papel, mas na prática é a diferença entre revisar 20 minutos de gravação ou simplesmente copiar e colar.

Os números que importam (e o que eles significam de verdade)

O Google divulgou que o modelo reduz em 70% o tempo até a transcrição final comparado ao Chirp 3. Em testes independentes, o WER ficou em 4,0% em modo streaming e 2,6% em processamento em batch.

Traduzindo para quem não vive de métricas acadêmicas: WER (Word Error Rate) é basicamente a taxa de palavras erradas a cada 100. Um WER de 2,6% significa que a cada 100 palavras, pouco mais de 2 estão incorretas. Para contexto, humanos treinados em transcrição ficam na faixa de 3-5%. Estamos falando de uma IA batendo benchmark humano em condições favoráveis.

E tem mais: suporte a mais de 85 idiomas com detecção automática, troca de idioma no meio da conversa e speaker diarization (identificação de quem falou o quê). Isso não é só conveniência — é a diferença entre um sistema usável em call global ou um brinquedo que quebra quando alguém muda do português para o inglês no meio da frase.

Comparativo real: como ele se posiciona contra a concorrência

Se você está avaliando opções para colocar em produção, ignore marketing e olhe para arquitetura. Vou comparar com as alternativas que já implementei em projetos:

Serviço WER típico Streaming Detecção de idioma Diarization Pós-processamento
Gemini 3.5 Transcribe 2,6%–4,0% Sim 85+ idiomas Sim Remoção de vícios, correção
OpenAI Whisper (large-v3) ~3-5% Não nativo 99 idiomas (manual) Via pyannote Não
AWS Transcribe ~5-8% Sim 31 idiomas Sim Vocabulário custom
Azure Speech to Text ~4-6% Sim 100+ idiomas Sim Custom models
AssemblyAI Universal ~3-5% Sim Auto Sim Smart formatting

O Whisper ainda é meu favorito para rodar localmente e para cenários offline — ninguém supera ele quando você precisa de privacidade total ou processamento on-device. Mas o pós-processamento do Gemini (limpar “é”, “tipo”, “ah”, repetir e corrigir) é o que faz ele ganhar em UX final. AssemblyAI chegou perto disso com o “smart formatting”, então a corrida está acirrada.

Na Prática: integrando o Gemini 3.5 Transcribe via API

Vou mostrar como usar o endpoint de transcrição em um cenário real: processar áudio de uma reunião técnica e extrair transcrição limpa com speaker diarization. O exemplo abaixo assume que você já tem a SDK do Google Cloud instalada.

from google.cloud import speech_v2
from google.cloud.speech_v2.types import cloud_speech
import os

# Configuração do cliente
client = speech_v2.SpeechClient()

# Referência ao modelo Gemini 3.5 Transcribe
# Disponível em regiões us-central1 e europe-west4
recognizer = f"projects/{os.environ['GCP_PROJECT']}/locations/global/recognizers/_"

def transcribe_audio(gcs_uri: str, enable_diarization: bool = True):
    """Transcreve áudio do GCS usando Gemini 3.5 Transcribe."""

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        model="gemini-3-5-transcribe",
        language_codes=["pt-BR", "en-US"],  # auto-detecção entre esses
        features=cloud_speech.RecognitionFeatures(
            diarization_config=cloud_speech.SpeakerDiarizationConfig(
                enable_speaker_diarization=enable_diarization,
                min_speaker_count=2,
                max_speaker_count=10,
            ),
            enable_automatic_punctuation=True,
            enable_word_time_offsets=True,
        ),
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=recognizer,
        config=config,
        uri=gcs_uri,
    )

    response = client.recognize(request=request)

    # Agrupa palavras por speaker
    transcript_by_speaker = {}
    for result in response.results:
        for word in result.alternatives[0].words:
            speaker = word.speaker_label or "unknown"
            transcript_by_speaker.setdefault(speaker, []).append(word.word)

    return {
        speaker: " ".join(words)
        for speaker, words in transcript_by_speaker.items()
    }


# Uso real: processar gravação de reunião
resultado = transcribe_audio("gs://minha-bucket/reunioes/2026-01-15.m4a")
for speaker, texto in resultado.items():
    print(f"[{speaker}]: {texto}\n")

Algumas decisões técnicas que apliquei aqui e que vale entender o porquê:

  • Por que language_codes com múltiplos valores? Habilita a detecção automática de mudança de idioma. Se a reunião começa em português e alguém entra falando inglês no minuto 30, o modelo continua sem quebrar.
  • Por que usar GCS URI em vez de bytes inline? Áudios maiores que 10 MB precisam ser enviados via URI. Para reuniões longas, isso é praticamente obrigatório.
  • Por que min/max speaker count? Forçar essa faixa melhora a acurácia da diarization. Se você sabe que a call teve 4 pessoas, declare. O modelo usa isso como hint.

Erros comuns que devs cometem com transcrição em produção

Coloquei transcrição em três sistemas diferentes em produção. Esses são os problemas recorrentes que vi (e cometi):

1. Confiar cegamente no WER divulgado

O número bonito no site do fornecedor foi medido em áudio limpo de estúdio com um único falante nativo. Sua reunião de equipe em uma cafeteria com ventilador ligado e três sotaques diferentes vai performar pior. Faça benchmark com seu áudio real, não confie em marketing.

2. Ignorar custo de streaming vs batch

Modo streaming cobra por minuto de áudio processado em tempo real. Batch cobra por minuto de áudio total. Se você está transcrevendo uma call de 1 hora mas só processa 30 minutos em tempo real (e o resto em batch depois), você economiza quase 50%. Modele isso antes de colocar em produção.

3. Esquecer do pós-processamento de timestamps

Você vai querer timestamps para gerar legendas SRT ou VTT. enable_word_time_offsets=True te dá isso, mas o formato não vem pronto para SRT. Você precisa converter offsets de segundos para o formato HH:MM:SS,mmm. Tem lib pra isso, mas muita gente reinventa a roda.

4. Não tratar o caso de silêncio e ruído

Modelos de transcrição geralmente devolvem string vazia ou alucinam (“Obrigado.” do nada) quando recebem silêncio. Filtre áudios com RMS abaixo de um threshold antes de enviar. Isso economiza dinheiro e reduz alucinações.

5. Misturar diarization com áudios de podcast

Diarization funciona melhor com 2-6 falantes distintos. Em podcasts longos com narrador + convidado, o modelo pode acabar juntando falas do narrador em um speaker e do convidado em outro, mas criar um terceiro “speaker fantasma” quando o narrador muda o tom. Pós-processamento manual é inevitável nesse caso.

Implicações reais para o seu workflow de dev

Se você trabalha em equipe remota, documente suas calls técnicas. Se você faz review de PR assíncrono gravando vídeo, isso vira texto buscável. Se você atende suporte por áudio, vira ticket estruturado. Se você cria conteúdo técnico, vira artigo base.

O ponto que ninguém fala é: transcrição deixou de ser feature e virou infraestrutura. Em 2026, é tão básico quanto CI/CD. E ferramentas como o Gemini 3.5 Transcribe, com pós-processamento embutido, abrem espaço para casos que antes eram inviáveis — por exemplo, gerar documentação automaticamente a partir de dailys.

Para começar sem gastar nada, você pode testar com áudios curtos no AI Studio do Google. Quando decidir escalar, o pricing está na casa de $0.016 por minuto de áudio (valores de referência no lançamento, sempre confirme no pricing oficial atualizado). Faça a conta: 100 horas de reunião por mês custam menos que $100. Para o tempo economizado em atas e documentação, é uma das melhores relações custo-benefício que existem hoje.

Perguntas que devs realmente fazem

O Gemini 3.5 Transcribe funciona offline?
Não. É um modelo hosted no Google Cloud. Para offline, use Whisper rodando localmente com llama.cpp ou Ollama. Você perde o pós-processamento automático, mas ganha privacidade total e zero custo de API.

Posso usar para transcrever áudios com termos técnicos em português?
Sim, mas com ressalva. Termos muito específicos de domínio (nomes de bibliotecas, siglas internas) podem ser grafados errado. Solução: use vocabulário customizado quando disponível (AWS e Azure têm isso nativamente, no Gemini via contexto de prompt com exemplos). Alternativa simples: rode uma segunda passada com GPT-4 corrigindo termos técnicos baseado no contexto.

Como ele lida com sotaques fortes e gírias regionais?
Melhor que a média, mas não é perfeito. Sotaque nordestino carregado ou caipira extremo ainda gera erros. Gírias funcionam bem quando o modelo tem dados suficientes — “mano”, “tipo”, “valeu” são reconhecidos com tranquilidade.

Dá pra rodar em tempo real com latência baixa?
O modo streaming tem latência na faixa de 300-500ms, que é aceitável para legendagem ao vivo ou assistentes conversacionais. Para tradução simultânea com latência sub-200ms, ainda não é o ideal — modelos menores especializados em tradução (como o SeamlessM4T) performam melhor nesse cenário específico.

Vale migrar do Whisper que já está rodando em produção?
Depende do seu caso. Se você precisa de privacidade total e roda local, fique com Whisper. Se você quer qualidade de saída final com mínimo de pós-processamento manual, o Gemini compensa. Para cenários híbridos (transcrição local + cleanup via LLM na nuvem), o pipeline Whisper + GPT-4 ainda entrega resultado equivalente com mais controle.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto. Se quiser, posso escrever um comparativo head-to-head entre Gemini 3.5 Transcribe, Whisper large-v3 e AssemblyAI Universal rodando nos mesmos áudios — só pedir.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.