For the complete documentation index, see llms.txt. This page is also available as Markdown.

WhisperX con diarización

Ejecuta WhisperX para transcripción rápida de voz con marcas de tiempo a nivel de palabra y diarización de hablantes en GPUs de Clore.ai.

WhisperX amplía Whisper de OpenAI con tres mejoras críticas: marcas de tiempo a nivel de palabra mediante alineación forzada de fonemas, diarización de hablantes usando pyannote.audio, y hasta 70× de velocidad en tiempo real mediante inferencia por lotes con faster-whisper. Es la herramienta de referencia para flujos de transcripción en producción que necesitan tiempos precisos e identificación de hablantes.

GitHub: m-bain/whisperX PyPI: whisperx Licencia: BSD-4-Clause Artículo: arxiv.org/abs/2303.00747

Características clave

  • Marcas de tiempo a nivel de palabra — precisión de ±50 ms mediante alineación forzada con wav2vec2 (frente a ±500 ms en Whisper estándar)

  • Diarización de hablantes — identifica quién dijo qué mediante pyannote.audio 3.1

  • Inferencia por lotes — hasta 70× de velocidad en tiempo real en RTX 4090

  • Pre-filtrado VAD — Silero VAD elimina el silencio antes de la transcripción

  • Todos los modelos Whisper — desde tiny hasta large-v3-turbo

  • Múltiples formatos de salida — JSON, SRT, VTT, TXT, TSV

  • Detección automática de idioma — o fuerza un idioma específico para un procesamiento más rápido

Requisitos

Componente
Mínimo
Recomendado

GPU

RTX 3060 12 GB

RTX 4090 24 GB

VRAM

4 GB (modelo pequeño)

10 GB+ (large-v3-turbo)

RAM

8 GB

16 GB+

Disco

5 GB

20 GB (caché del modelo)

Python

3.9+

3.11

CUDA

12.8+

12.8+

Se requiere token de HuggingFace para la diarización de hablantes — acepta la licencia en pyannote/speaker-diarization-3.1.

Recomendación de Clore.ai: RTX 3090 ($0.07–0.21/h) para el modelo large-v3-turbo con tamaño de lote 16. RTX 4090 ($0.14–0.42/h) para el máximo rendimiento con tamaño de lote 32.

Instalación

Si encuentras conflictos de versión de CUDA:

Inicio rápido

Ejemplos de uso

Transcripción con diarización de hablantes

Uso desde la línea de comandos

Script de generación de SRT

Puntos de referencia de rendimiento

Método
Modelo
1 h de audio
GPU
Velocidad aprox.

Whisper estándar

large-v3

~60 min

RTX 3090

1×

faster-whisper

large-v3

~5 min

RTX 3090

~12×

WhisperX

large-v3-turbo

~1 min

RTX 3090

~60×

WhisperX

large-v3-turbo

~50 s

RTX 4090

~70×

Tamaño de lote
Velocidad (RTX 4090)
VRAM

4

~30× en tiempo real

6 GB

8

~45× en tiempo real

8 GB

16

~60× en tiempo real

10 GB

32

~70× en tiempo real

14 GB

Consejos para usuarios de Clore.ai

  • Liberar VRAM entre pasos — elimina los modelos y llama a torch.cuda.empty_cache() entre la transcripción, la alineación y la diarización

  • token de HuggingFace — debes aceptar la licencia del modelo de pyannote antes de que la diarización funcione; establece HF_TOKEN como variable de entorno

  • Ajuste del tamaño de lote — empieza con batch_size=16, reduce a 4–8 en tarjetas de 12 GB, aumenta a 32 en tarjetas de 24 GB

  • int8 compute — usa compute_type="int8" para reducir a la mitad el uso de VRAM con una pérdida mínima de calidad

  • Imagen Docker — pytorch/pytorch:2.11.0-cuda12.8-cudnn9-runtime

  • Caché persistente del modelo — monta /root/.cache/huggingface para evitar volver a descargar los modelos en cada reinicio del contenedor

Solución de problemas

Problema
Solución

CUDA sin memoria

Reduce batch_size, usa compute_type="int8", o usa un modelo más pequeño (medium, small)

La diarización devuelve UNKNOWN

Asegúrate de que el token de HuggingFace sea válido y de haber aceptado la licencia de pyannote

No module named 'whisperx'

pip install whisperx — asegúrate de que no haya un error tipográfico (es whisperx, no whisper-x)

Malas marcas de tiempo de palabras

Comprueba que whisperx.align() se llame después de transcribe() — la salida sin procesar de Whisper no tiene precisión a nivel de palabra

Detección de idioma incorrecta

Fuerza el idioma con --language en o language="en" en la API de Python

Procesamiento lento

Aumenta batch_size, usa large-v3-turbo en lugar de large-v3, asegúrate de que la GPU no esté compartida

Última actualización

¿Te fue útil?