Spaces:
Sleeping
Sleeping
update plan: add domain dictionaries integration strategy
Browse filesAdd dictionary section with planned usage: initial_prompt for Whisper,
post-processing corrections, WER normalization. Update TODO list and
workflow to reflect dictionary integration as high-priority task.
Made-with: Cursor
PLAN.md
CHANGED
|
@@ -54,6 +54,29 @@ Upload через UI ──┘ ┘ GigaAM ┘
|
|
| 54 |
- Спикеры: Продавец, Покупатель
|
| 55 |
- Служебные метки: «Начало диалога», «Конец диалога» (фильтруются при расчёте DER)
|
| 56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
## Модели
|
| 58 |
|
| 59 |
### Транскрипция (7 моделей)
|
|
@@ -158,32 +181,41 @@ onnxruntime>=1.17
|
|
| 158 |
## Рекомендованный workflow
|
| 159 |
|
| 160 |
```
|
| 161 |
-
1.
|
| 162 |
-
2.
|
| 163 |
-
3.
|
| 164 |
-
4. Tab
|
| 165 |
-
5. Tab
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
```
|
| 167 |
|
| 168 |
-
## Нерешённые проблемы
|
| 169 |
|
| 170 |
-
1. **Dev Mode не подхватывает git push автоматически
|
| 171 |
-
|
| 172 |
|
| 173 |
-
2. **
|
| 174 |
-
старый `_align_speakers` (сегмент-уровневый) вместо word-level alignment.
|
| 175 |
-
Нужно добавить `return_timestamps="word"` и `_words_to_speaker_segments`.
|
| 176 |
-
|
| 177 |
-
3. **Бенчмарк и Grid Search** не тестировались после исправлений:
|
| 178 |
- Удаление двойных пост-фильтров
|
| 179 |
- VAD fallback
|
| 180 |
-
- Word-level alignment
|
| 181 |
- Корректная фильтрация служебных меток в evaluation.py
|
| 182 |
|
| 183 |
-
|
| 184 |
одному спикеру (SPEAKER_01), второй (SPEAKER_00) — только шумовые сегмент��.
|
| 185 |
Возможные причины: плохое аудио, параметры `min_speakers`.
|
| 186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 187 |
## История изменений
|
| 188 |
|
| 189 |
1. Базовый пайплайн: pyannote 3.1 + Whisper large-v3 (faster-whisper) + GigaAM
|
|
@@ -194,4 +226,6 @@ onnxruntime>=1.17
|
|
| 194 |
6. Переход с ZeroGPU на Nvidia T4 small, фикс Python 3.10, numpy<2
|
| 195 |
7. Удаление избыточных пост-фильтров no_speech_prob/avg_logprob
|
| 196 |
8. VAD fallback (vad_filter=False при < 3 слов)
|
| 197 |
-
9.
|
|
|
|
|
|
|
|
|
| 54 |
- Спикеры: Продавец, Покупатель
|
| 55 |
- Служебные метки: «Начало диалога», «Конец диалога» (фильтруются при расчёте DER)
|
| 56 |
|
| 57 |
+
### Словари домена
|
| 58 |
+
|
| 59 |
+
Два справочника для повышения качества транскрипции:
|
| 60 |
+
|
| 61 |
+
- **`dictionary/baza_cvetov_24_domain_dictionary_clean.md`** — терминология цветочного магазина:
|
| 62 |
+
названия цветов, растений, упаковки, инструментов, размеры, цвета и т.д.
|
| 63 |
+
- **`dictionary/baza_cvetov_24_sales_phrases_dictionary.md`** — типовые фразы продавца
|
| 64 |
+
и покупателя: приветствия, вопросы, предложения, расчёт, прощание.
|
| 65 |
+
|
| 66 |
+
**Планируемое использование:**
|
| 67 |
+
|
| 68 |
+
1. **`initial_prompt` для Whisper** — подсказка модели о домене и лексике.
|
| 69 |
+
faster-whisper и transformers поддерживают параметр `initial_prompt`,
|
| 70 |
+
который задаёт контекст и смещает распознавание к нужной терминологии.
|
| 71 |
+
Пример: *"Разговор в цветочном магазине. Гвоздики, розы, хризантемы, лилии,
|
| 72 |
+
герберы, упаковка, лента, букет."*
|
| 73 |
+
|
| 74 |
+
2. **Пост-обработка текста** — автозамена частых ошибок распознавания
|
| 75 |
+
на основе словаря (напр. "воздичек" → "гвоздичек").
|
| 76 |
+
|
| 77 |
+
3. **Нормализация для WER** — приведение gold и predicted текста к единому виду
|
| 78 |
+
перед расчётом метрик (числа, сокращения, регистр).
|
| 79 |
+
|
| 80 |
## Модели
|
| 81 |
|
| 82 |
### Транскрипция (7 моделей)
|
|
|
|
| 181 |
## Рекомендованный workflow
|
| 182 |
|
| 183 |
```
|
| 184 |
+
1. Factory Reboot Space (подхватить весь новый код)
|
| 185 |
+
2. Загрузить словари домена в датасет (dictionary/)
|
| 186 |
+
3. Экспорт gold из Label Studio (JSON)
|
| 187 |
+
4. Tab 4 (Бенчмарк) — грубый отбор (3-5 моделей × 2 стратегии × 2-3 файла)
|
| 188 |
+
5. Tab 4 (Бенчмарк) — уточнение (топ-2 модели × все файлы)
|
| 189 |
+
6. Добавить initial_prompt из словаря → повторить бенчмарк
|
| 190 |
+
7. Tab 5 (Grid Search) — тонкая настройка параметров лучшей модели
|
| 191 |
+
8. Добавить пост-обработку ошибок из словаря → финальный замер
|
| 192 |
+
9. Tab 1 + Tab 3 — финальная проверка на отдельных файлах
|
| 193 |
```
|
| 194 |
|
| 195 |
+
## Нерешённые проблемы / TODO
|
| 196 |
|
| 197 |
+
1. **Factory Reboot Space** — Dev Mode не подхватывает git push автоматически.
|
| 198 |
+
Нужен ручной Factory Reboot для применения накопленных изменений.
|
| 199 |
|
| 200 |
+
2. **Бенчмарк и Grid Search** не тестировались после исправлений:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 201 |
- Удаление двойных пост-фильтров
|
| 202 |
- VAD fallback
|
| 203 |
+
- Word-level alignment (faster-whisper + transformers-whisper)
|
| 204 |
- Корректная фильтрация служебных меток в evaluation.py
|
| 205 |
|
| 206 |
+
3. **Pyannote diarization** на тестовом файле присваивает всю речь
|
| 207 |
одному спикеру (SPEAKER_01), второй (SPEAKER_00) — только шумовые сегмент��.
|
| 208 |
Возможные причины: плохое аудио, параметры `min_speakers`.
|
| 209 |
|
| 210 |
+
4. **Интеграция словарей домена** (приоритет — высокий):
|
| 211 |
+
- [ ] Загрузить словари в `Niko-NN/gold-store-dialogs/dictionary/`
|
| 212 |
+
- [ ] Сформировать `initial_prompt` из ключевых терминов словаря
|
| 213 |
+
- [ ] Передавать `initial_prompt` в faster-whisper (`model.transcribe(initial_prompt=...)`)
|
| 214 |
+
и transformers (`generate_kwargs={"prompt_ids": ...}`)
|
| 215 |
+
- [ ] Добавить `initial_prompt` как параметр Grid Search
|
| 216 |
+
- [ ] Реализовать пост-обработку с автозаменой частых ошибок
|
| 217 |
+
- [ ] Добавить нормализацию текста перед расчётом WER/CER
|
| 218 |
+
|
| 219 |
## История изменений
|
| 220 |
|
| 221 |
1. Базовый пайплайн: pyannote 3.1 + Whisper large-v3 (faster-whisper) + GigaAM
|
|
|
|
| 226 |
6. Переход с ZeroGPU на Nvidia T4 small, фикс Python 3.10, numpy<2
|
| 227 |
7. Удаление избыточных пост-фильтров no_speech_prob/avg_logprob
|
| 228 |
8. VAD fallback (vad_filter=False при < 3 слов)
|
| 229 |
+
9. Word-level speaker alignment (word_timestamps=True + midpoint matching)
|
| 230 |
+
10. Word-level alignment для transformers-whisper (return_timestamps="word")
|
| 231 |
+
11. **Текущий**: Планирование интеграции словарей домена (initial_prompt, пост-обработка)
|