WhisperX с диаризацией

Запускайте WhisperX для быстрой транскрипции речи с показа́ми временных меток по словам и диаризацией говорящих на GPU Clore.ai.

WhisperX расширяет Whisper от OpenAI тремя ключевыми улучшениями: метки времени на уровне слов через принудительное выравнивание фонем, диаризация говорящих с использованием pyannote.audio, и до 70× реального времени через пакетную инференцию с faster-whisper. Это инструмент выбора для производственных конвейеров транскрибации, которым нужны точные временные метки и определение говорящих.

GitHub: m-bain/whisperXarrow-up-right PyPI: whisperxarrow-up-right Лицензия: BSD-4-Clause Статья: arxiv.org/abs/2303.00747arrow-up-right

Ключевые особенности

  • Метки времени на уровне слов — точность ±50 мс благодаря принудительному выравниванию wav2vec2 (в сравнении с ±500 мс в обычном Whisper)

  • Диаризация говорящих — определение, кто сказал что, с помощью pyannote.audio 3.1

  • Пакетная инференция — до 70× реального времени на RTX 4090

  • Предварительная фильтрация VAD — Silero VAD удаляет тишину перед транскрибацией

  • Все модели Whisper — от tiny до large-v3-turbo

  • Несколько форматов вывода — JSON, SRT, VTT, TXT, TSV

  • Автоматическое определение языка — или принудительно задать конкретный язык для более быстрой обработки

Требования

Компонент
Минимум
Рекомендуется

GPU

RTX 3060 12 ГБ

RTX 4090 24 ГБ

VRAM

4 ГБ (маленькая модель)

10 ГБ+ (large-v3-turbo)

ОЗУ

8 ГБ

16 ГБ+

Диск

5 ГБ

20 ГБ (кеш моделей)

Python

3.9+

3.11

CUDA

11.8+

12.1+

Требуется токен HuggingFace для диаризации говорящих — примите лицензию на pyannote/speaker-diarization-3.1arrow-up-right.

Рекомендация Clore.ai: RTX 3090 ($0.30–1.00/день) для модели large-v3-turbo с размером батча 16. RTX 4090 ($0.50–2.00/день) для максимальной пропускной способности при размере батча 32.

Установка

Если возникают конфликты версий CUDA:

Быстрый старт

Примеры использования

Транскрибация с диаризацией говорящих

Использование из командной строки

Скрипт генерации SRT

Тесты производительности

Метод
Модель
Аудио 1ч
GPU
Прибл. скорость

Обычный Whisper

large-v3

~60 мин

RTX 3090

faster-whisper

large-v3

~5 мин

RTX 3090

~12×

WhisperX

large-v3-turbo

~1 мин

RTX 3090

~60×

WhisperX

large-v3-turbo

~50 сек

RTX 4090

~70×

Размер батча
Скорость (RTX 4090)
VRAM

4

~30× реального времени

6 GB

8

~45× реального времени

8 ГБ

16

~60× реального времени

10 ГБ

32

~70× реального времени

14 ГБ

Советы для пользователей Clore.ai

  • Освобождайте VRAM между шагами — удаляйте модели и вызывайте torch.cuda.empty_cache() между транскрибацией, выравниванием и диаризацией

  • Токен HuggingFace — вы должны принять лицензию модели pyannote перед тем, как диаризация заработает; установите HF_TOKEN как переменную окружения

  • Настройка размера батча — начните с batch_size=16, уменьшите до 4–8 на картах 12 ГБ, увеличьте до 32 на картах 24 ГБ

  • int8 вычисление — используйте compute_type="int8" чтобы сократить использование VRAM вдвое с минимальной потерей качества

  • Docker-образpytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime

  • Постоянный кеш моделей — смонтируйте /root/.cache/huggingface чтобы не скачивать модели заново при каждом перезапуске контейнера

Устранение неполадок

Проблема
Решение

CUDA — недостаточно памяти

Уменьшите batch_size, используйте compute_type="int8", или используйте меньшую модель (medium, small)

Диаризация возвращает UNKNOWN

Убедитесь, что токен HuggingFace действителен и вы приняли лицензию pyannote

Модуль 'whisperx' не найден

pip install whisperx — убедитесь, что нет опечатки (это whisperx, а не на whisper-x)

Плохие метки времени слов

Проверьте, что whisperx.align() вызывается после transcribe() — сыой вывод Whisper не имеет точности по словам

Неправильное определение языка

Принудительно задайте язык с помощью --language en или language="en" в Python API

Медленная обработка

Увеличьте batch_size, используйте large-v3-turbo вместо large-v3, убедитесь, что GPU не используется совместно

Последнее обновление

Это было полезно?