
Requisitos de audio de Whisper: guía completa de formatos compatibles y especificaciones
Eric King
Author
Comprender los requisitos de audio de Whisper es clave para lograr la mejor precisión de transcripción. Aunque Whisper es flexible y admite muchos formatos, seguir especificaciones óptimas garantiza el máximo rendimiento.
Esta guía completa cubre todos los requisitos de audio, formatos compatibles, especificaciones técnicas y buenas prácticas para preparar archivos de audio para la transcripción con Whisper.
Formatos de audio compatibles
Whisper admite una amplia gama de formatos de audio y vídeo mediante FFmpeg. Lista completa:
Formatos de audio
| Formato | Extensión | Notas |
|---|---|---|
| WAV | .wav | ✅ Preferido, sin pérdidas |
| MP3 | .mp3 | ✅ Muy común, ampliamente usado |
| FLAC | .flac | ✅ Sin pérdidas, buena compresión |
| M4A | .m4a | ✅ Formato Apple, códec AAC |
| AAC | .aac | ✅ Compresión de alta calidad |
| OGG | .ogg | ✅ Formato de código abierto |
| OPUS | .opus | ✅ Baja latencia, ideal para web |
| WMA | .wma | ⚠️ Menos común |
| AMR | .amr | ⚠️ Baja calidad, grabaciones telefónicas |
Formatos de vídeo (extracción de audio)
| Formato | Extensión | Notas |
|---|---|---|
| MP4 | .mp4 | ✅ Formato de vídeo más común |
| AVI | .avi | ✅ Formato antiguo, aún compatible |
| MKV | .mkv | ✅ Formato contenedor |
| MOV | .mov | ✅ Formato QuickTime |
| WebM | .webm | ✅ Formato de vídeo web |
| FLV | .flv | ⚠️ Formato Flash heredado |
Importante: Whisper extrae automáticamente el audio de los archivos de vídeo; puede subir vídeos directamente.
Requisitos de frecuencia de muestreo
Frecuencia óptima: 16 kHz
Whisper remuestrea internamente todo el audio a 16 kHz mono antes de procesarlo. Es la frecuencia óptima para el reconocimiento de voz.
Frecuencias admitidas
Whisper acepta cualquier frecuencia de muestreo; esto es lo que debe saber:
| Frecuencia de entrada | Procesamiento en Whisper | Recomendación |
|---|---|---|
| 8 kHz | Remuestreado a 16 kHz | ✅ Llamadas, aceptable |
| 16 kHz | Se usa directamente | ✅ Óptimo, sin remuestreo |
| 22,05 kHz | Remuestreado a 16 kHz | ✅ Buena calidad |
| 44,1 kHz | Remuestreado a 16 kHz | ✅ Calidad CD, bien |
| 48 kHz | Remuestreado a 16 kHz | ✅ Audio profesional, bien |
| 96 kHz | Remuestreado a 16 kHz | ⚠️ Innecesario, archivos más grandes |
Idea clave: Frecuencias más altas no mejoran la precisión de Whisper. El modelo se entrenó con audio a 16 kHz; usar 16 kHz evita remuestreo y tamaño de archivo innecesarios.
Buena práctica
# 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 profundidad de bits
Profundidades admitidas
| Profundidad | Estado | Notas |
|---|---|---|
| 8 bits | ✅ Compatible | Baja calidad, no recomendado |
| 16 bits | ✅ Recomendado | Estándar, suficiente |
| 24 bits | ✅ Compatible | Profesional, archivos más grandes |
| 32 bits float | ✅ Compatible | Calidad de estudio, excesivo |
Recomendación: PCM de 16 bits es el estándar y ofrece excelente calidad para el reconocimiento de voz. Profundidades mayores no mejoran la precisión de la transcripción.
Configuración de canales: mono vs. estéreo
Mono (recomendado)
Whisper procesa internamente en mono, por lo que la entrada mono es óptima.
Ventajas:
- Archivos más pequeños
- Procesamiento más rápido
- No hace falta mezclar canales
- Óptimo para un solo hablante
Use mono para:
- Grabaciones de un hablante
- Llamadas telefónicas
- Podcasts con un presentador
- La mayoría de tareas de transcripción
Estéreo (compatible)
Los archivos estéreo se convierten automáticamente a mono (promedio o un canal).
Cuándo el estéreo ayuda:
- Hablantes en canales distintos (poco frecuente)
- La grabación original es estéreo (la conversión es automática)
Buena práctica: Convierta estéreo a mono antes de procesar si puede:
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)
Límites de tamaño de archivo
Límites prácticos
Whisper no tiene un límite estricto de tamaño, pero hay consideraciones prácticas:
| Tamaño | Tiempo de procesamiento | Recomendación |
|---|---|---|
| < 10 MB | Segundos | ✅ Ideal |
| 10–100 MB | Minutos | ✅ Bueno |
| 100–500 MB | 10–30 minutos | ⚠️ Considere fragmentar |
| > 500 MB | 30+ minutos | ⚠️ Debe fragmentar |
Memoria
Los archivos grandes requieren más 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
Buena práctica: Para archivos > 100 MB, divida en fragmentos (véase más abajo).
Límites de duración
Duración recomendada
| Duración | Estado | Notas |
|---|---|---|
| < 30 minutos | ✅ Óptimo | Procesar directamente |
| 30–60 minutos | ✅ Bueno | Puede requerir fragmentación |
| 1–2 horas | ⚠️ Fragmentar recomendado | Mejor precisión con fragmentos |
| > 2 horas | ⚠️ Debe fragmentar | Necesario para estabilidad |
¿Por qué fragmentar audio largo?
- Límites de memoria: Evita errores por falta de memoria
- Mejor precisión: Fragmentos pequeños mantienen mejor el contexto
- Procesamiento más rápido: Posible procesamiento paralelo
- Recuperación ante errores: Si falla un fragmento, los demás siguen
Estrategia de fragmentación:
# 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 calidad de audio
Estándares mínimos
Para una precisión aceptable, el audio debe cumplir:
| Factor | Mínimo | Óptimo |
|---|---|---|
| Relación señal/ruido | > 10 dB | > 20 dB |
| Bitrate (MP3) | ≥ 64 kbps | ≥ 128 kbps |
| Nivel de volumen | Audible | Normalizado a -3 dB |
| Ruido de fondo | Mínimo | Ninguno |
| Eco/reverberación | Mínimos | Ninguno |
Lista de comprobación de calidad
Antes de transcribir, verifique:
- ✅ Voz clara: Los hablantes se oyen y entienden
- ✅ Poco ruido: El fondo no tapa la voz
- ✅ Volumen constante: Sin cambios bruscos
- ✅ Sin clipping: Sin distorsión ni saturación
- ✅ Buen micrófono: Equipo de grabación adecuado
Requisitos de códec
Códecs recomendados
| Códec | Formato | Calidad | Recomendación |
|---|---|---|---|
| PCM | WAV | Sin pérdidas | ✅ Mejor para precisión |
| FLAC | FLAC | Sin pérdidas | ✅ Excelente, comprimido |
| AAC | M4A, MP4 | Alta | ✅ Muy bueno |
| MP3 | MP3 | Con pérdidas | ✅ Bueno a ≥128 kbps |
| OGG Vorbis | OGG | Con pérdidas | ✅ Buena calidad |
| OPUS | OPUS | Con pérdidas | ✅ Buena, baja latencia |
Buenas prácticas de códec
Para máxima precisión:
- Use PCM (WAV) o FLAC (sin pérdidas)
Uso práctico:
- AAC o MP3 a ≥128 kbps (resultados excelentes)
Evite:
- MP3 a bitrate muy bajo (< 64 kbps)
- Formatos muy comprimidos
- Códecs telefónicos (AMR, G.711) salvo necesidad
Recomendaciones de preprocesamiento de audio
Antes de transcribir
Whisper corrige mucho automáticamente; el preprocesamiento puede mejorar resultados:
1. Normalizar volumen
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. Eliminar silencio
# Remove leading/trailing silence
# Helps with processing time and accuracy
3. Reducción de ruido (opcional)
En grabaciones ruidosas:
# Use noise reduction libraries
# librosa, noisereduce, or specialized tools
# Only if background noise is significant
4. Remuestrear a 16 kHz (opcional)
Para optimizar el tamaño del archivo:
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 frecuentes de audio y soluciones
Problema 1: Frecuencia de muestreo muy baja (8 kHz)
Problema: Las grabaciones telefónicas a 8 kHz pueden tener menor precisión.
Solución:
- Use el modelo medium o large de Whisper (mejor con bajas frecuencias)
- Sobremuestree a 16 kHz (no recupera calidad pero ayuda al procesamiento)
Problema 2: Estéreo con hablantes distintos
Problema: Dos hablantes en canales separados.
Solución:
# 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 de bitrate variable
Problema: El MP3 VBR puede dar problemas en algunas herramientas.
Solución:
- Convierta a bitrate constante (CBR) o WAV
- Whisper suele manejar VBR bien, pero CBR es más predecible
Problema 4: Archivos de audio dañados
Problema: El archivo suena pero Whisper falla.
Solución:
# 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: Archivos de audio muy largos
Problema: Falta de memoria o procesamiento muy lento.
Solución:
- Divida en fragmentos de 30–60 segundos
- Procese en secuencia o en paralelo
- Una resultados con marcas de tiempo
Recomendaciones por formato
Para llamadas telefónicas
| Parámetro | Valor | Motivo |
|---|---|---|
| Frecuencia de muestreo | 8–16 kHz | Calidad telefónica |
| Formato | WAV o MP3 | Estándar |
| Bitrate | ≥ 64 kbps | Calidad del códec |
| Canales | Mono | Estándar en llamadas |
Para reuniones (Zoom, Teams)
| Parámetro | Valor | Motivo |
|---|---|---|
| Frecuencia de muestreo | 16–48 kHz | Alta calidad |
| Formato | MP4 (extraer audio) | Formato de vídeo |
| Bitrate | ≥ 128 kbps | Buena calidad |
| Canales | Mono o estéreo | Según configuración |
Para podcasts
| Parámetro | Valor | Motivo |
|---|---|---|
| Frecuencia de muestreo | 44,1–48 kHz | Calidad profesional |
| Formato | MP3, WAV o M4A | Formatos habituales |
| Bitrate | ≥ 128 kbps | Buena calidad |
| Canales | Mono | Estándar en podcasts |
Para entrevistas
| Parámetro | Valor | Motivo |
|---|---|---|
| Frecuencia de muestreo | 16–48 kHz | Alta calidad |
| Formato | WAV o FLAC | Máxima precisión |
| Bitrate | Sin pérdidas o ≥ 192 kbps | Profesional |
| Canales | Mono | Estándar |
Resumen: requisitos de audio de Whisper
Requisitos mínimos
- ✅ Formato: Cualquier formato compatible con FFmpeg
- ✅ Frecuencia de muestreo: Cualquiera (se recomienda mínimo 8 kHz)
- ✅ Profundidad de bits: 8 bits o superior
- ✅ Canales: Mono o estéreo (preferible mono)
- ✅ Tamaño de archivo: Sin límite estricto (fragmentar si > 100 MB)
- ✅ Duración: Sin límite estricto (fragmentar si > 1 hora)
Requisitos óptimos
- ✅ Formato: WAV, FLAC o MP3 (≥128 kbps)
- ✅ Frecuencia de muestreo: 16 kHz (óptimo, sin remuestreo)
- ✅ Profundidad de bits: PCM de 16 bits
- ✅ Canales: Mono
- ✅ Calidad: Voz clara, poco ruido
- ✅ Preprocesamiento: Volumen normalizado, sin clipping
Referencia rápida: lista de preparación de audio
Antes de transcribir con Whisper:
- Formato: WAV, MP3, FLAC, M4A u otro compatible
- Frecuencia de muestreo: 16 kHz (óptimo) o cualquier tasa admitida
- Profundidad de bits: 16 bits (recomendado)
- Canales: Mono (preferible) o estéreo
- Tamaño de archivo: < 100 MB (o plan de fragmentación)
- Duración: < 1 hora (o plan de fragmentación)
- Calidad: Voz clara, poco ruido de fondo
- Volumen: Normalizado, sin clipping
- Códec: Sin pérdidas (WAV/FLAC) o con pérdidas de alta calidad (MP3 ≥128 kbps)
Probar su audio
Prueba rápida
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")
Mensajes de error frecuentes
| Error | Causa | Solución |
|---|---|---|
| "File not found" | Ruta incorrecta | Compruebe la ruta |
| "Unsupported format" | Formato no compatible | Convierta a WAV/MP3 |
| "Out of memory" | Archivo demasiado grande | Fragmente el audio |
| "Empty audio" | Archivo dañado | Vuelva a codificar |
Resumen de buenas prácticas
- Use 16 kHz cuando sea posible (óptimo para Whisper)
- Prefiera mono al estéreo (Whisper trabaja en mono internamente)
- Use formatos sin pérdidas (WAV/FLAC) para máxima precisión
- Fragmente archivos largos (> 1 hora) para mejor precisión y estabilidad
- Normalice el audio a niveles de volumen consistentes
- Minimice el ruido de fondo para mejores resultados
- Use el tamaño de modelo adecuado (los modelos grandes toleran mejor el audio deficiente)
- Pruebe primero con el modelo base antes de usar modelos mayores
Conclusión
Whisper es muy flexible y admite muchos formatos y calidades de audio. Seguir especificaciones óptimas asegura la mejor precisión de transcripción:
- Formato: WAV, FLAC o MP3 (≥128 kbps)
- Frecuencia de muestreo: 16 kHz (óptimo)
- Profundidad de bits: PCM de 16 bits
- Canales: Mono
- Calidad: Voz clara con poco ruido
Recuerde: un audio claro supera especificaciones técnicas perfectas. Incluso con parámetros óptimos, una mala grabación reduce la precisión. Priorice voz clara, poco ruido y buena colocación del micrófono.
En producción, plataformas como SayToWords gestionan conversión de formato, remuestreo y optimización automáticamente, para que pueda centrarse en un audio claro y no en detalles técnicos.
¿Necesita ayuda para preparar audio para Whisper? Consulte nuestras otras guías sobre preprocesamiento, estrategias de fragmentación y optimización de precisión.
