# Инструкция по работе с 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.