WhisperX con Diarización

Ejecuta WhisperX para transcripción de voz rápida 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 oradores usando pyannote.audio, y hasta 70× la velocidad en tiempo real a través de inferencia por lotes con faster-whisper. Es la herramienta de referencia para canalizaciones de transcripción en producción que necesitan sincronización precisa e identificación de oradores.

GitHub: m-bain/whisperXarrow-up-right PyPI: whisperxarrow-up-right Licencia: BSD-4-Clause Artículo: arxiv.org/abs/2303.00747arrow-up-right

Características clave

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

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

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

  • Prefiltrado VAD — Silero VAD elimina silencios 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 forzar 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é de modelos)

Python

3.9+

3.11

CUDA

11.8+

12.1+

Token de HuggingFace requerido para diarización — acepta la licencia en pyannote/speaker-diarization-3.1arrow-up-right.

Recomendación de Clore.ai: RTX 3090 ($0.30–1.00/día) para el modelo large-v3-turbo con tamaño de lote 16. RTX 4090 ($0.50–2.00/día) 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 oradores

Uso en línea de comandos

Script de generación SRT

Pruebas de rendimiento

Método
Modelo
Audio de 1 h
GPU
Velocidad aproximada

Whisper estándar

large-v3

~60 min

RTX 3090

faster-whisper

large-v3

~5 min

RTX 3090

~12×

WhisperX

large-v3-turbo

~1 min

RTX 3090

~60×

WhisperX

large-v3-turbo

~50 seg

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 — eliminar modelos y llamar torch.cuda.empty_cache() entre transcripción, alineación y diarización

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

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

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

  • Imagen Dockerpytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime

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

Solución de problemas

Problema
Solución

CUDA fuera de memoria

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

Diarización devuelve UNKNOWN

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

No hay módulo llamado 'whisperx'

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

Marcas de tiempo de palabras pobres

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

Detección de idioma incorrecta

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

Procesamiento lento

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

Última actualización

¿Te fue útil?