Resposta rápida (agosto de 2026): O OpenAI Whisper é um modelo de fala para texto gratuito e open-source, lançado sob a licença MIT, que roda inteiramente na sua máquina sem custo algum. Instale com pip install -U openai-whisper, aponte para qualquer arquivo de áudio e tenha uma transcrição em segundos. Se preferir uma configuração gerenciada, a API da OpenAI disponibiliza o mesmo modelo como whisper-1 a $0.006 por minuto, sem assinatura. Seis tamanhos de modelo, do tiny com 39M de parâmetros ao large com 1,55B, permitem ajustar precisão e velocidade ao hardware disponível.
Última verificação: 1 de agosto de 2026, com base na documentação oficial e nas páginas de preços.
O que é o Whisper e quanto custa
O Whisper é um modelo de reconhecimento de fala de uso geral treinado em 680.000 horas de áudio multilíngue. A OpenAI lançou os pesos e o código em 2022; o pacote no PyPI (openai-whisper, versão 20250625) tem licença MIT, ou seja, você pode usá-lo em produtos comerciais sem pagar royalties.
Rodar localmente é gratuito no sentido operacional. Você paga a energia do seu hardware ou o tempo de VM na nuvem, mas não há chamadas de API nem medidores de uso. A API whisper-1 hospedada pela OpenAI custa $0.006 por minuto de áudio, cobrada por segundo sem cobrança mínima nem mensalidade por usuário.
Para uso pessoal pontual, rodar localmente é quase sempre mais barato. Para funções serverless, pipelines de CI ou times sem acesso a GPU, a API costuma fazer mais sentido quando se considera o custo de engenharia para manter infraestrutura de inferência.
Instalando o Whisper Localmente
Você precisa do Python 3.8 ou mais recente e do ffmpeg no PATH do sistema. Instale o ffmpeg primeiro, depois o pacote Python.
ffmpeg no Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg
ffmpeg no macOS (Homebrew):
brew install ffmpeg
ffmpeg no Windows (Chocolatey):
choco install ffmpeg
Depois instale o Whisper:
pip install -U openai-whisper
Se a instalação falhar ao compilar o tiktoken, você também precisará do Rust. Consulte o README oficial para a mensagem de erro exata e a correção. Após a instalação, o comando whisper fica disponível globalmente no seu ambiente Python.
Escolhendo o Modelo Certo
O Whisper vem com seis modelos. O turbo é o padrão recomendado: roda cerca de 8x mais rápido que o modelo large com apenas 6 GB de VRAM, sendo a escolha prática para a maioria das máquinas.
| Modelo | Parâmetros | VRAM necessária | Velocidade vs. large | Ideal para |
|---|---|---|---|---|
| tiny | 39M | ~1 GB | ~10x faster | Máquinas só CPU, rascunhos |
| base | 74M | ~1 GB | ~7x faster | Só CPU com precisão um pouco maior |
| small | 244M | ~2 GB | ~4x faster | Laptops com GPU integrada |
| medium | 769M | ~5 GB | ~2x faster | GPUs intermediárias, boa precisão |
| large | 1550M | ~10 GB | 1x (baseline) | Precisão máxima, GPU de alto desempenho |
| turbo | 809M | ~6 GB | ~8x faster | Padrão recomendado; melhor equilíbrio |
Para áudio apenas em inglês, as variantes com sufixo .en (tiny.en, base.en, small.en, medium.en) abrem mão da capacidade multilíngue em troca de precisão um pouco maior no conteúdo em inglês. O Whisper suporta 98 idiomas no total; omita o flag de idioma e ele detecta automaticamente nos primeiros 30 segundos de áudio.
Rodar inteiramente na CPU é possível. Em um laptop moderno sem GPU, espere que a transcrição leve aproximadamente o mesmo tempo que o áudio. Um Mac com Apple Silicon usando o backend MPS é visivelmente mais rápido. Uma GPU NVIDIA com CUDA é a opção local mais rápida.
Transcrevendo pela Linha de Comando
Após a instalação, o whisper fica disponível globalmente. A chamada mais simples:
whisper audio.mp3
Isso gera cinco arquivos de saída no diretório atual: audio.txt (texto simples), audio.vtt (legendas WebVTT), audio.srt (legendas SubRip), audio.tsv (separado por tabulação com timestamps) e audio.json (dados completos de segmentos com pontuações de confiança). O modelo padrão é o turbo.
Especifique um modelo:
whisper interview.mp4 --model turbo
Obtenha apenas um formato de saída:
whisper meeting.m4a --model turbo --output_format srt
Defina o idioma explicitamente (mais rápido e preciso do que a detecção automática):
whisper lecture.wav --model small --language French
O flag --language aceita nomes de idiomas ou códigos ISO de duas letras. Especificar o idioma pula a etapa de detecção automática e melhora a precisão em falas com sotaque.
Transcrevendo em Python
import whisper
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
print(result["text"])
load_model baixa e armazena em cache os pesos na primeira execução. Carregue o modelo uma vez e reutilize-o entre arquivos; recarregar por arquivo multiplica o tempo de inicialização desnecessariamente.
Para obter timestamps por segmento:
model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")
for segment in result["segments"]:
start = segment["start"]
end = segment["end"]
text = segment["text"]
print(f"[{start:.1f}s - {end:.1f}s] {text}")
Para timestamps por palavra, adicione word_timestamps=True à chamada do transcribe(). Cada dicionário de segmento passa a incluir uma lista words com valores de início, fim e probabilidade por palavra.
Usando a API da OpenAI
Se você precisa de transcrição em uma função serverless, um pipeline na nuvem ou qualquer ambiente onde instalar um runtime de GPU é inviável, a API hospedada é a alternativa prática. Veja nosso guia sobre criação de agentes de IA se quiser integrar a transcrição em uma automação maior.
from openai import OpenAI
client = OpenAI() # reads OPENAI_API_KEY from environment
with open("audio.mp3", "rb") as audio_file:
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
)
print(transcription.text)
A API aceita arquivos mp3, mp4, mpeg, mpga, m4a, wav e webm de até 25 MB por requisição. A $0.006 por minuto, uma entrevista de uma hora custa $0.36. Arquivos maiores que 25 MB precisam ser divididos antes do envio.
Divida um arquivo longo com ffmpeg em pedaços de 10 minutos:
ffmpeg -i interview.mp3 -f segment -segment_time 600 -c copy part%03d.mp3
Depois percorra as partes e concatene os campos de texto.
A documentação da OpenAI agora também destaca o gpt-transcribe como uma opção mais recente para algumas tarefas de transcrição; o whisper-1 continua sendo o modelo Whisper direto na API.
Lidando com Arquivos Grandes e Lotes
O Whisper processa o áudio em janelas de 30 segundos internamente. Para arquivos locais longos, passe-os inteiros na linha de comando e o Whisper cuida da segmentação automaticamente. Você só precisa pré-dividir ao atingir o limite de 25 MB da API.
Para transcrição em lote de muitos arquivos:
import whisper
from pathlib import Path
model = whisper.load_model("turbo")
for audio_path in Path("recordings/").glob("*.mp3"):
result = model.transcribe(str(audio_path))
output_path = audio_path.with_suffix(".txt")
output_path.write_text(result["text"])
print(f"Done: {output_path}")
Carregue o modelo uma vez fora do loop. Cada chamada de transcribe() reutiliza os mesmos pesos carregados.
Para lotes muito grandes (centenas de arquivos), considere rodar em uma instância de GPU na nuvem. A cerca de 8x a velocidade real, o turbo processa uma hora de áudio em menos de 8 minutos em uma GPU NVIDIA decente.
Perguntas Frequentes
O Whisper roda em um Mac com Apple Silicon?
Sim. O Whisper usa o backend MPS (Metal Performance Shaders) do PyTorch no Apple Silicon automaticamente após instalar o PyTorch normalmente. Turbo e small são os pontos práticos de equilíbrio em Macs da série M sem restrições de VRAM dedicada.
Qual a precisão do Whisper em áudio com ruído ou sotaque?
O Whisper foi treinado em áudio real diversificado, incluindo podcasts e aulas, portanto lida melhor com ruído de fundo moderado e uma ampla variedade de sotaques do que a maioria dos engines mais antigos. Áudio muito degradado (eco, barulho de multidão, gravações telefônicas com bitrate muito baixo) ainda vai gerar erros. Turbo e large são as escolhas de modelo mais robustas para áudio difícil.
O Whisper identifica quem está falando?
O Whisper não gera labels de locutor. Para diarização de locutores, combine a saída do Whisper com uma biblioteca separada como pyannote.audio, ou use o modelo gpt-4o-transcribe-diarize da API da OpenAI, que cuida da diarização nativamente mas é um produto diferente do Whisper.
Meu áudio é enviado para a OpenAI quando rodo o Whisper localmente?
Não. O pacote local roda inteiramente na sua máquina. Os arquivos de áudio nunca saem do seu sistema. Somente a rota de API (whisper-1) transmite áudio para os servidores da OpenAI, o que é relevante para gravações sensíveis sujeitas a obrigações de confidencialidade.
E se eu precisar de legendas com timing exato?
Use --output_format srt ou --output_format vtt pela CLI. Ambos os formatos incluem timestamps de início e fim para cada segmento. Para maior controle sobre o tamanho dos segmentos, adicione os flags --max_line_width e --max_line_count para limitar o tamanho das linhas de legenda.
Guias como este saem três vezes por semana no AI Weekly, de graça, lidos por mais de 40.000 profissionais de IA.