Rodar whisper local é uma das automações que mais se pagam no meu atendimento: em vez de mandar cada áudio de cliente para uma API, a transcrição acontece na minha própria máquina, com o Whisper da OpenAI ou, na versão que eu recomendo, o faster-whisper. E dá para plugar tudo direto no n8n, entregando texto pronto para o agente de atendimento. O caminho completo, da instalação ao webhook, está aí embaixo.

Por que rodar Whisper local (e quando a API da OpenAI ainda vale)

A Whisper API da OpenAI era cobrada a US$ 0,006 por minuto no lançamento e aceita arquivos MP3, MP4, WAV e WEBM. O preço parece pequeno, mas em atendimento com dezenas de áudios por dia a conta cresce rápido, e cada arquivo sai da sua infraestrutura.

Como rodar Whisper local e integrar ao n8n sem pagar API - Imagem complementar

Tem também o limite de 25 MB, que dá cerca de 20 minutos de áudio. Tanto que o template oficial do n8n para áudios longos divide o arquivo em blocos de 15 minutos por causa exatamente disso. Com transcrição local, esse limite deixa de existir.

A API ainda vale se o volume for baixo e esporádico, se a máquina for fraca ou se você não quiser manter nenhum serviço rodando. Fora esses casos, local ganha em custo, em privacidade e em tamanho de arquivo.

PUBLICIDADE

Whisper oficial x faster-whisper: qual instalar e por quê

O openai/whisper é a implementação de referência, e a versão mais recente é a v20250625, publicada em 26 de junho de 2025. Ele exige o ffmpeg instalado no sistema e é compatível com Python 3.8 a 3.11. Funciona bem, mas não é o caminho mais eficiente.

O faster-whisper é uma reimplementação do Whisper sobre o motor CTranslate2: até 4 vezes mais rápido, com a mesma acurácia e usando menos memória. A versão estável mais recente é a faster-whisper 1.2.1, lançada em 31 de outubro de 2025, que pede Python 3.9 ou superior e dispensa o FFmpeg: o áudio é decodificado pela biblioteca PyAV, que embute as libs do FFmpeg.

Os números são do benchmark do próprio repositório, com 13 minutos de áudio usando o large-v2 em GPU. A tabela resume a diferença:

ExecuçãoTempoVRAM
openai/whisper fp162m23s4708 MB
faster-whisper fp161m03s4525 MB
faster-whisper int859s2926 MB

Mais da metade do tempo cortado e quase metade da VRAM no modo int8. Por isso, o restante do tutorial usa faster-whisper.

Requisitos: Python, RAM, CPU e GPU (o que realmente importa)

  • Python: 3.9 ou superior para o faster-whisper 1.2.1. Se for usar o pacote oficial da OpenAI, o intervalo suportado é Python 3.8 a 3.11.
  • FFmpeg: não precisa instalar nada para o faster-whisper, a PyAV cuida da decodificação do áudio.
  • CPU: dá para rodar sem placa de vídeo. Num Core i7-12700K, o distil-large-v3 em int8 transcreve em 1m42s usando 1477 MB de RAM.
  • GPU: o faster-whisper atual exige cuBLAS para CUDA 12 e cuDNN 9 para CUDA 12, já que as versões recentes do ctranslate2 só suportam CUDA 12. Como referência de memória, o large-v2 em int8 usou 2926 MB de VRAM no benchmark.

Instalando faster-whisper 1.2.1 e fazendo o primeiro teste no terminal

Com o Python 3.9 ou superior no lugar, instale o pacote, de preferência num ambiente virtual para não bagunçar o resto da máquina:

pip install faster-whisper

Depois, crie um arquivo teste.py com o código mínimo abaixo, apontando para um áudio seu:

from faster_whisper import WhisperModel

modelo = WhisperModel("large-v3", device="cpu", compute_type="int8")
segmentos, info = modelo.transcribe("cliente.mp3", language="pt")

for trecho in segmentos:
    print(trecho.text)

Na primeira execução, o modelo é baixado da organização Systran no Hugging Face e fica em cache — o large-v3 convertido mora lá, junto com os demais, de tiny a large-v3, incluindo o distil-large-v3. Se for rodar em GPU, troque device="cpu" por device="cuda". Para qualquer opção além disso, o README do repositório oficial é a fonte certa.

Escolhendo o modelo: de tiny a large-v3-turbo e o truque do int8 para CPU

Para o faster-whisper, os modelos convertidos vão de tiny a large-v3, incluindo o distil-large-v3. A regra prática é simples: use o maior modelo que sua máquina aguentar e o int8 quando o recurso for apertado.

Vale conhecer o large-v3-turbo do pacote oficial: ele tem apenas 4 camadas de decoder, contra 32 da série large, e desde o pacote v20240930 é o padrão do comando whisper. Menos camadas, inferência mais leve.

O truque do int8 aparece claro no benchmark: na GPU, foi o modo mais rápido (59s contra 1m03s do fp16) e o mais econômico (2926 MB contra 4525 MB de VRAM). Em CPU, é o que viabiliza modelos grandes: o distil-large-v3 em int8 gastou só 1477 MB de RAM no Core i7-12700K.

Na prática: como uso isso aqui

Eu rodo o faster-whisper 1.2.1 no Windows, tanto em CPU quanto em GPU. Como modelo principal eu uso o Qwen3 ASR, e o Whisper large-v3 fica de fallback para quando a transcrição precisa de segurança extra.

O serviço fica interligado ao meu n8n para transcrever os áudios que recebo do WhatsApp no atendimento aos clientes. Assim fica mais fácil o agente já receber o texto processado do que o áudio puro.

Um cuidado que aprendi: esses modelos menores ainda não são 100% confiáveis e podem gerar transcrições com erros. Vale um node com JavaScript no n8n para pequenas correções, o que já melhora bastante o texto final.

Integrando ao n8n: endpoint local, webhook e automação

O fluxo é direto: o webhook do n8n recebe o áudio, o workflow chama o serviço de transcrição e devolve o texto para o agente. Os dois caminhos comuns para essa chamada são um nó HTTP Request apontando para um endpoint local que expõe o faster-whisper, ou um nó Execute Command rodando o script direto na máquina.

Como a transcrição é local, você não depende do limite de 25 MB da Whisper API nem da divisão em blocos de 15 minutos do template oficial. O serviço é um processo Python como outro qualquer: pode rodar na mesma máquina do n8n, como faço aqui no Windows, ou isolado num homelab com Proxmox, numa VM separada da instância principal.

Para a configuração exata dos nós, siga a documentação do n8n, porque credenciais e parâmetros mudam conforme a versão. O essencial é o n8n enxergar o endpoint local e o áudio chegar num formato decodificável, como MP3 ou WAV.

Dicas finais: VAD, timestamps por palavra, português e erros comuns de CUDA

  • VAD: o faster-whisper integra o filtro de VAD Silero, que descarta trechos sem fala antes da transcrição. Em áudio de WhatsApp, cheio de pausa longa, isso ajuda bastante.
  • Timestamps por palavra: o faster-whisper gera timestamps por palavra, não só por segmento. Isso abre porta para legenda e para localizar um trecho específico num áudio longo.
  • Português: se o áudio é sempre em português, fixe language="pt" na chamada, como no exemplo acima, para tirar uma variável do caminho.
  • CUDA: se der erro de cuBLAS ou cuDNN, confira as versões. O faster-whisper atual exige cuBLAS para CUDA 12 e cuDNN 9 para CUDA 12, e as versões recentes do ctranslate2 só suportam CUDA 12 — GPU com CUDA mais antigo não vai funcionar com o pacote atual.

Conclusão

Transcrever com whisper local deixou de ser projeto de fim de semana: com faster-whisper 1.2.1, um pip install e meia dúzia de linhas você tem um serviço de transcrição rodando em casa, sem pagar por minuto e sem limite de arquivo. Se você já opera atendimento no n8n, integrar os áudios do WhatsApp é o passo natural para o agente trabalhar com texto em vez de áudio cru.

Perguntas frequentes

Preciso instalar o FFmpeg para usar o faster-whisper?

Não. O faster-whisper 1.2.1 decodifica o áudio com a PyAV, que embute as libs do FFmpeg. Quem exige o ffmpeg instalado no sistema é o openai/whisper oficial.

Whisper local é realmente mais rápido que o Whisper original?

No benchmark oficial com 13 minutos de áudio (large-v2 em GPU), o faster-whisper int8 levou 59s contra 2m23s do openai/whisper fp16, usando 2926 MB de VRAM contra 4708 MB, com a mesma acurácia.

Como transcrever áudios longos no n8n sem esbarrar nos 25 MB da API?

Com whisper local o limite de 25 MB da Whisper API (cerca de 20 minutos de áudio) não se aplica, porque não há upload para serviço externo. Esse limite é justamente o motivo de o template oficial do n8n dividir áudios longos em blocos de 15 minutos.