
Requisitos de áudio do Whisper: guia completo de formatos suportados e especificações
Eric King
Author
Compreender os requisitos de áudio do Whisper é fundamental para obter a melhor precisão de transcrição. O Whisper é flexível e lida com muitos formatos; seguir especificações ótimas garante o máximo desempenho.
Este guia abrange todos os requisitos de áudio, formatos suportados, especificações técnicas e boas práticas para preparar arquivos de áudio para transcrição com o Whisper.
Formatos de áudio suportados
O Whisper suporta uma ampla variedade de formatos de áudio e vídeo via FFmpeg. Lista completa:
Formatos de áudio
| Formato | Extensão | Observações |
|---|---|---|
| WAV | .wav | ✅ Preferencial, sem perdas |
| MP3 | .mp3 | ✅ Muito comum |
| FLAC | .flac | ✅ Sem perdas, boa compressão |
| M4A | .m4a | ✅ Formato Apple, codec AAC |
| AAC | .aac | ✅ Compressão de alta qualidade |
| OGG | .ogg | ✅ Formato open source |
| OPUS | .opus | ✅ Baixa latência, adequado à web |
| WMA | .wma | ⚠️ Menos comum |
| AMR | .amr | ⚠️ Baixa qualidade, gravações telefônicas |
Formatos de vídeo (extração de áudio)
| Formato | Extensão | Observações |
|---|---|---|
| MP4 | .mp4 | ✅ Formato de vídeo mais comum |
| AVI | .avi | ✅ Formato antigo, ainda suportado |
| MKV | .mkv | ✅ Contêiner |
| MOV | .mov | ✅ QuickTime |
| WebM | .webm | ✅ Vídeo web |
| FLV | .flv | ⚠️ Flash legado |
Importante: O Whisper extrai automaticamente o áudio de arquivos de vídeo; você pode enviar vídeos diretamente.
Requisitos de taxa de amostragem
Taxa ideal: 16 kHz
O Whisper reamostra internamente todo o áudio para 16 kHz mono antes do processamento. É a taxa ideal para reconhecimento de fala.
Taxas suportadas
O Whisper aceita qualquer taxa; saiba o seguinte:
| Taxa de entrada | Processamento no Whisper | Recomendação |
|---|---|---|
| 8 kHz | Reamostrado para 16 kHz | ✅ Chamadas, aceitável |
| 16 kHz | Usado diretamente | ✅ Ótimo, sem reamostragem |
| 22,05 kHz | Reamostrado para 16 kHz | ✅ Boa qualidade |
| 44,1 kHz | Reamostrado para 16 kHz | ✅ Qualidade de CD, ok |
| 48 kHz | Reamostrado para 16 kHz | ✅ Áudio profissional, ok |
| 96 kHz | Reamostrado para 16 kHz | ⚠️ Desnecessário, arquivos maiores |
Ideia central: Taxas mais altas não melhoram a precisão do Whisper. O modelo foi treinado com áudio a 16 kHz; fornecer 16 kHz evita reamostragem e arquivos maiores.
Boa prática
# Convert audio to 16 kHz before processing (optional optimization)
import ffmpeg
def convert_to_16khz(input_file, output_file):
stream = ffmpeg.input(input_file)
stream = ffmpeg.output(
stream,
output_file,
acodec='pcm_s16le',
ac=1, # Mono
ar=16000 # 16 kHz
)
ffmpeg.run(stream, overwrite_output=True)
Requisitos de profundidade de bits
Profundidades suportadas
| Profundidade | Status | Observações |
|---|---|---|
| 8 bits | ✅ Suportada | Baixa qualidade, não recomendada |
| 16 bits | ✅ Recomendada | Padrão, suficiente |
| 24 bits | ✅ Suportada | Profissional, arquivos maiores |
| 32 bits float | ✅ Suportada | Qualidade de estúdio, excesso em muitos casos |
Recomendação: PCM de 16 bits é o padrão e oferece excelente qualidade para reconhecimento de fala. Profundidades maiores não melhoram a precisão da transcrição.
Configuração de canais: mono vs. estéreo
Mono (recomendado)
O Whisper processa o áudio internamente em mono, portanto entrada mono é ótima.
Vantagens:
- Arquivos menores
- Processamento mais rápido
- Sem necessidade de mixagem de canais
- Ideal para um único falante
Use mono para:
- Gravações com um falante
- Chamadas telefônicas
- Podcasts com um apresentador
- A maioria das tarefas de transcrição
Estéreo (suportado)
Arquivos estéreo são convertidos automaticamente para mono (média ou seleção de um canal).
Quando o estéreo ajuda:
- Falantes em canais separados (raro)
- Gravação original em estéreo (conversão automática)
Boa prática: Converta estéreo para mono antes do processamento, se possível:
import ffmpeg
# Convert stereo to mono
stream = ffmpeg.input('stereo_audio.wav')
stream = ffmpeg.output(
stream,
'mono_audio.wav',
ac=1 # Mono channel
)
ffmpeg.run(stream, overwrite_output=True)
Limites de tamanho de arquivo
Limites práticos
O Whisper não tem limite rígido de tamanho, mas há considerações práticas:
| Tamanho | Tempo de processamento | Recomendação |
|---|---|---|
| < 10 MB | Segundos | ✅ Ideal |
| 10–100 MB | Minutos | ✅ Bom |
| 100–500 MB | 10–30 minutos | ⚠️ Considere fragmentar |
| > 500 MB | 30+ minutos | ⚠️ Deve fragmentar |
Memória
Arquivos grandes exigem mais RAM/VRAM:
- Modelo base: ~1–2 GB VRAM
- Modelo small: ~2–3 GB VRAM
- Modelo medium: ~5–6 GB VRAM
- Modelo large: ~10–12 GB VRAM
Boa prática: Para arquivos > 100 MB, divida em partes (veja abaixo).
Limites de duração
Duração recomendada
| Duração | Status | Observações |
|---|---|---|
| < 30 minutos | ✅ Ótimo | Processar diretamente |
| 30–60 minutos | ✅ Bom | Pode exigir fragmentação |
| 1–2 horas | ⚠️ Fragmentação recomendada | Frequentemente mais preciso em partes |
| > 2 horas | ⚠️ Deve fragmentar | Necessário para estabilidade |
Por que fragmentar áudio longo?
- Limites de memória: Evita erros de falta de memória
- Melhor precisão: Partes menores preservam melhor o contexto
- Processamento mais rápido: Paralelização possível
- Recuperação de falhas: Se uma parte falhar, outras podem ter sucesso
Estratégia de fragmentação:
# Split long audio into 30-60 second chunks with 5-10 second overlap
def chunk_audio(audio_path, chunk_length=60, overlap=5):
# Implementation: split audio into segments
# Process each chunk separately
# Merge results with timestamps
pass
Requisitos de qualidade de áudio
Padrões mínimos
Para precisão aceitável, o áudio deve atender a:
| Fator | Mínimo | Ótimo |
|---|---|---|
| Relação sinal-ruído | > 10 dB | > 20 dB |
| Taxa de bits (MP3) | ≥ 64 kbps | ≥ 128 kbps |
| Nível de volume | Audível | Normalizado para −3 dB |
| Ruído de fundo | Mínimo | Nenhum |
| Eco/reverberação | Mínimos | Nenhum |
Lista de verificação de qualidade
Antes de transcrever, verifique:
- ✅ Fala clara: Falantes audíveis e compreensíveis
- ✅ Pouco ruído: O fundo não cobre a fala
- ✅ Volume consistente: Sem mudanças bruscas
- ✅ Sem clipping: Sem distorção ou saturação
- ✅ Bom microfone: Equipamento adequado
Requisitos de codec
Codecs recomendados
| Codec | Formato | Qualidade | Recomendação |
|---|---|---|---|
| PCM | WAV | Sem perdas | ✅ Melhor para precisão |
| FLAC | FLAC | Sem perdas | ✅ Excelente, comprimido |
| AAC | M4A, MP4 | Alta | ✅ Muito bom |
| MP3 | MP3 | Com perdas | ✅ Bom a ≥128 kbps |
| OGG Vorbis | OGG | Com perdas | ✅ Boa qualidade |
| OPUS | OPUS | Com perdas | ✅ Bom, baixa latência |
Boas práticas de codec
Para máxima precisão:
- Use PCM (WAV) ou FLAC (sem perdas)
Uso prático:
- Use AAC ou MP3 a ≥128 kbps (excelentes resultados)
Evite:
- MP3 com taxa muito baixa (< 64 kbps)
- Formatos muito comprimidos
- Codecs telefônicos (AMR, G.711) salvo necessidade
Recomendações de pré-processamento
Antes de transcrever
O Whisper corrige muito automaticamente; o pré-processamento pode melhorar:
1. Normalizar volume
import numpy as np
from scipy.io import wavfile
def normalize_audio(audio_path, output_path, target_dB=-3.0):
sr, audio = wavfile.read(audio_path)
audio = audio.astype(np.float32)
# Normalize to target dB
max_val = np.max(np.abs(audio))
target_linear = 10 ** (target_dB / 20)
audio = audio * (target_linear / max_val)
# Clip to prevent overflow
audio = np.clip(audio, -1.0, 1.0)
wavfile.write(output_path, sr, (audio * 32767).astype(np.int16))
2. Remover silêncio
# Remove leading/trailing silence
# Helps with processing time and accuracy
3. Redução de ruído (opcional)
Para gravações ruidosas:
# Use noise reduction libraries
# librosa, noisereduce, or specialized tools
# Only if background noise is significant
4. Reamostrar para 16 kHz (opcional)
Para otimizar o tamanho do arquivo:
import ffmpeg
stream = ffmpeg.input('input.wav')
stream = ffmpeg.output(
stream,
'output_16k.wav',
ar=16000 # Resample to 16 kHz
)
ffmpeg.run(stream, overwrite_output=True)
Problemas comuns de áudio e soluções
Problema 1: Taxa de amostragem muito baixa (8 kHz)
Problema: Gravações telefônicas a 8 kHz podem ter menor precisão.
Solução:
- Use o modelo medium ou large do Whisper (melhor em taxas baixas)
- Faça upsample para 16 kHz (não restaura qualidade, ajuda no processamento)
Problema 2: Estéreo com falantes diferentes
Problema: Dois falantes em canais separados.
Solução:
# Extract each channel separately
import torchaudio
audio, sr = torchaudio.load('stereo.wav')
speaker1 = audio[0] # Left channel
speaker2 = audio[1] # Right channel
# Transcribe each separately
result1 = model.transcribe(speaker1)
result2 = model.transcribe(speaker2)
Problema 3: MP3 com taxa variável
Problema: VBR pode causar problemas em algumas ferramentas.
Solução:
- Converta para taxa constante (CBR) ou WAV
- O Whisper lida bem com VBR; CBR é mais previsível
Problema 4: Arquivos de áudio corrompidos
Problema: O arquivo toca, mas o Whisper falha.
Solução:
# Re-encode the file
import ffmpeg
stream = ffmpeg.input('corrupted.mp3')
stream = ffmpeg.output(
stream,
'fixed.wav',
acodec='pcm_s16le'
)
ffmpeg.run(stream, overwrite_output=True)
Problema 5: Arquivos de áudio muito longos
Problema: Falta de memória ou processamento muito lento.
Solução:
- Divida em partes de 30–60 segundos
- Processe em série ou em paralelo
- Una resultados com carimbos de data/hora
Recomendações por cenário
Para chamadas telefônicas
| Parâmetro | Valor | Motivo |
|---|---|---|
| Taxa de amostragem | 8–16 kHz | Qualidade telefônica |
| Formato | WAV ou MP3 | Padrão |
| Taxa de bits | ≥ 64 kbps | Qualidade do codec |
| Canais | Mono | Padrão em chamadas |
Para reuniões (Zoom, Teams)
| Parâmetro | Valor | Motivo |
|---|---|---|
| Taxa de amostragem | 16–48 kHz | Alta qualidade |
| Formato | MP4 (extrair áudio) | Vídeo |
| Taxa de bits | ≥ 128 kbps | Boa qualidade |
| Canais | Mono ou estéreo | Depende da configuração |
Para podcasts
| Parâmetro | Valor | Motivo |
|---|---|---|
| Taxa de amostragem | 44,1–48 kHz | Qualidade profissional |
| Formato | MP3, WAV ou M4A | Comuns |
| Taxa de bits | ≥ 128 kbps | Boa qualidade |
| Canais | Mono | Padrão |
Para entrevistas
| Parâmetro | Valor | Motivo |
|---|---|---|
| Taxa de amostragem | 16–48 kHz | Alta qualidade |
| Formato | WAV ou FLAC | Máxima precisão |
| Taxa de bits | Sem perdas ou ≥ 192 kbps | Profissional |
| Canais | Mono | Padrão |
Resumo: requisitos de áudio do Whisper
Requisitos mínimos
- ✅ Formato: Qualquer formato suportado pelo FFmpeg
- ✅ Taxa de amostragem: Qualquer (mínimo 8 kHz recomendado)
- ✅ Profundidade de bits: 8 bits ou superior
- ✅ Canais: Mono ou estéreo (mono preferível)
- ✅ Tamanho do arquivo: Sem limite rígido (fragmente se > 100 MB)
- ✅ Duração: Sem limite rígido (fragmente se > 1 hora)
Requisitos ótimos
- ✅ Formato: WAV, FLAC ou MP3 (≥128 kbps)
- ✅ Taxa de amostragem: 16 kHz (ótimo, sem reamostragem)
- ✅ Profundidade de bits: PCM de 16 bits
- ✅ Canais: Mono
- ✅ Qualidade: Fala clara, pouco ruído
- ✅ Pré-processamento: Volume normalizado, sem clipping
Referência rápida: checklist de preparação
Antes de transcrever com o Whisper:
- Formato: WAV, MP3, FLAC, M4A ou outro suportado
- Taxa de amostragem: 16 kHz (ótimo) ou outra suportada
- Profundidade de bits: 16 bits (recomendada)
- Canais: Mono (preferível) ou estéreo
- Tamanho: < 100 MB (ou planeje fragmentação)
- Duração: < 1 hora (ou planeje fragmentação)
- Qualidade: Fala clara, pouco ruído de fundo
- Volume: Normalizado, sem clipping
- Codec: Sem perdas (WAV/FLAC) ou com perdas de alta qualidade (MP3 ≥128 kbps)
Testar seu áudio
Teste rápido
import whisper
# Load model
model = whisper.load_model("base")
# Test transcription
result = model.transcribe("your_audio.wav")
# Check if successful
if result["text"]:
print("✅ Audio format is compatible")
print(f"Detected language: {result['language']}")
else:
print("⚠️ Transcription failed - check audio format")
Mensagens de erro comuns
| Erro | Causa | Solução |
|---|---|---|
| "File not found" | Caminho incorreto | Verifique o caminho |
| "Unsupported format" | Formato não suportado | Converta para WAV/MP3 |
| "Out of memory" | Arquivo grande demais | Fragmente o áudio |
| "Empty audio" | Arquivo corrompido | Reencode |
Resumo das boas práticas
- Use 16 kHz quando possível (ótimo para o Whisper)
- Prefira mono ao estéreo (processamento interno em mono)
- Use formatos sem perdas (WAV/FLAC) para máxima precisão
- Fragmente arquivos longos (> 1 hora) para precisão e estabilidade
- Normalize o áudio para níveis consistentes
- Minimize ruído de fundo para melhores resultados
- Escolha o tamanho do modelo (modelos maiores lidam melhor com áudio ruim)
- Teste primeiro com o modelo base antes de modelos maiores
Conclusão
O Whisper é muito flexível e lida com muitos formatos e qualidades. Seguir especificações ótimas garante a melhor precisão de transcrição:
- Formato: WAV, FLAC ou MP3 (≥128 kbps)
- Taxa de amostragem: 16 kHz (ótimo)
- Profundidade de bits: PCM de 16 bits
- Canais: Mono
- Qualidade: Fala clara com pouco ruído
Lembre-se: áudio claro supera especificações de formato perfeitas. Mesmo com parâmetros ideais, gravação ruim reduz a precisão. Priorize fala clara, pouco ruído e bom posicionamento do microfone.
Em produção, plataformas como SayToWords tratam conversão de formato, reamostragem e otimização automaticamente, para que você foque em áudio claro em vez de detalhes técnicos.
Precisa de ajuda para preparar áudio para o Whisper? Veja nossos outros guias sobre pré-processamento, estratégias de fragmentação e otimização de precisão.
