store-dialogs-qa / INSTRUCTIONS.md
Niko-NN's picture
feat: benchmark pipeline + grid search + new Russian ASR models
e120525

A newer version of the Gradio SDK is available: 6.13.0

Upgrade

Инструкция по работе с Store Dialogs — Diarization Experiments

Общая информация

Приложение развёрнуто как HF Space: Niko-NN/store-dialogs-qa. Интерфейс состоит из 5 вкладок + утилиты внизу.


Подготовка: экспорт gold-разметки

Перед использованием бенчмарка и grid search нужен JSON-экспорт из Label Studio:

  1. Откройте проект в Label Studio
  2. Перейдите в Export (кнопка вверху справа)
  3. Формат: JSON (не JSON-MIN, не CSV)
  4. Скачайте файл (например project-1-at-2026-03-18.json)

Этот файл содержит все размеченные задачи с временными метками, спикерами и текстом.


Вкладка 1: Обработка файла

Обработка одного аудиофайла — диаризация + транскрипция.

  1. Выбрать аудио: либо из датасета HF (нажмите «Обновить» для загрузки списка), либо загрузите свой файл
  2. Модель диаризации: pyannote 3.1 (основная) или NeMo MSDD (если установлен nemo_toolkit)
  3. Модель транскрипции — 7 вариантов:
    • Whisper large-v3 / Whisper large-v3-turbo — базовые (faster-whisper)
    • Whisper Podlodka Turbo (RU)главный кандидат, дообучен на русской речи
    • Whisper large-v3 Russian — дообучен на Common Voice
    • Whisper TIES-merge Podlodka (RU) — merge двух русских моделей
    • GigaAM CTC / GigaAM RNNT — русские модели от Сбера
  4. Стратегия:
    • hybrid (рекомендуется) — транскрибирует весь файл целиком, потом присваивает спикеров из диаризации
    • per_segment — транскрибирует каждый сегмент диаризации отдельно
  5. Мин/Макс спикеров: 2 / 0 (авто) по умолчанию
  6. Нажмите Запустить — результат появится в таблице и JSON

Вкладка 2: Batch-режим

Обработка нескольких файлов одной моделью.

  1. Введите ID файлов (по одному на строку, без расширения)
  2. Выберите модель диаризации и транскрипции
  3. Нажмите Запустить batch

Вкладка 3: Сравнение с gold

Ручная оценка качества одного файла.

  1. Загрузите gold — Label Studio JSON экспорт (один раз, кэшируется)
  2. Обработайте файл на вкладке 1
  3. Перейдите сюда и нажмите Сравнить с результатом

Результат: таблица метрик (DER, WER, CER, speaker accuracy) и посегментное сравнение pred vs gold.


Вкладка 4: Бенчмарк (главная для подбора модели)

Автоматическое сравнение всех комбинаций модель × стратегия.

Порядок работы:

  1. Загрузите gold — Label Studio JSON экспорт
    • Статус покажет сколько файлов и сегментов распознано
  2. Выберите модели транскрипции (чекбоксы) — отметьте те, что хотите сравнить
    • Рекомендую начать с 2-3: Whisper Podlodka Turbo, Whisper large-v3, GigaAM RNNT
  3. Выберите модели диаризации — обычно только pyannote 3.1
  4. Выберите стратегииhybrid и/или per_segment
  5. Макс. файлов — начните с 2-3 для быстрой проверки, потом увеличьте
  6. Нажмите Запустить бенчмарк

Результат:

Сводная таблица, отсортированная по WER:

Модель Стратегия DER WER CER Спикер% Время Файлов Ошибок

Лучшая комбинация — вверху таблицы. В Raw JSON — детальные метрики по каждому файлу.

Сколько времени:

Каждая комбинация × файл ≈ 30–120 сек GPU. 3 модели × 2 стратегии × 3 файла = 18 прогонов ≈ 15–30 минут.


Вкладка 5: Grid Search (тонкая настройка)

После того как в бенчмарке определили лучшую модель, здесь подбираем оптимальные параметры.

Порядок работы:

  1. Загрузите gold (если ещё не загружен — кэш общий между вкладками)
  2. Выберите модель — ту, что показала лучший WER в бенчмарке
  3. Выберите стратегию — ту же
  4. Макс. файлов — 2-3 для быстрого поиска
  5. Чекбоксы:
    • Whisper параметры — перебирает: beam_size, no_speech_threshold, temperature, condition_on_previous_text, repetition_penalty
    • Diar параметры — перебирает: min_speakers, merge_gap, merge_min_dur
  6. Нажмите Запустить Grid Search

Алгоритм:

Один-параметр-за-раз. Фиксирует все параметры, варьирует один, выбирает лучшее значение, переходит к следующему параметру.

Результат:

Таблица с каждой попробованной конфигурацией + лучшие найденные параметры.

Сколько времени:

5 Whisper-параметров × ~3-4 значения + 3 Diar-параметра × ~3-4 значения ≈ 25 конфигураций × число файлов. При 2 файлах ≈ 50 прогонов ≈ 30–60 минут.


Рекомендованный workflow

Шаг 1: Экспорт gold из Label Studio (JSON)
    ↓
Шаг 2: Вкладка 4 (Бенчмарк) — грубый отбор
    - 3-5 моделей × 2 стратегии × 3 файла
    - Определить топ-2 модели
    ↓
Шаг 3: Вкладка 4 (Бенчмарк) — уточнение
    - Топ-2 модели × 2 стратегии × все файлы из gold
    - Определить лучшую комбинацию
    ↓
Шаг 4: Вкладка 5 (Grid Search) — тонкая настройка
    - Лучшая модель + стратегия
    - Подбор beam_size, thresholds, merge params
    ↓
Шаг 5: Вкладка 1 — финальная проверка
    - Прогнать несколько файлов с лучшими настройками
    - Вкладка 3 — сравнить с gold

Утилиты (внизу страницы)

  • Диагностика импортов — проверить что все библиотеки загружены (torch, pyannote, faster_whisper, gigaam и т.д.)
  • Выгрузить модели из памяти — освободить GPU VRAM перед загрузкой другой модели (важно при переключении между большими моделями)

Доступные модели

Транскрипция

ID Название Бэкенд Описание
whisper-large-v3 Whisper large-v3 faster-whisper Базовая Whisper, CTranslate2
whisper-large-v3-turbo Whisper large-v3-turbo faster-whisper Быстрая версия, CTranslate2
whisper-podlodka-turbo Whisper Podlodka Turbo (RU) transformers Дообучен на Podlodka/Taiga/RuLibrispeech
whisper-large-v3-russian Whisper large-v3 Russian transformers Дообучен на Common Voice 17
whisper-russian-ties-podlodka Whisper TIES-merge Podlodka (RU) transformers TIES-merge русских моделей
gigaam-ctc GigaAM CTC gigaam Сбер, 700K часов русской речи
gigaam-rnnt GigaAM RNNT gigaam Сбер, RNNT-архитектура

Диаризация

ID Название Описание
pyannote-3.1 pyannote speaker-diarization 3.1 Основная модель
nemo-msdd NeMo MSDD Экспериментальный, нужен nemo_toolkit

Важные нюансы

  • Первый запуск модели медленный (скачивание весов с HF Hub). Последующие запуски используют кэш.
  • ZeroGPU даёт максимум 300 секунд GPU на запрос. Если файл длинный — используйте обрезку (поля Начало/Конец).
  • NeMo MSDD не установлен по умолчанию (тяжёлая зависимость). Если pyannote не даёт приемлемый DER — установите вручную: pip install nemo_toolkit[asr] в терминале Space.
  • После изменения кода: git add . && git commit && git push из Dev Mode терминала Space.
  • Выгружайте модели перед переключением на другую крупную модель (кнопка внизу), чтобы не исчерпать GPU VRAM.