Niko-NN commited on
Commit
a0c305f
·
1 Parent(s): 7b455ca

update plan: add domain dictionaries integration strategy

Browse files

Add 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

Files changed (1) hide show
  1. PLAN.md +50 -16
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. Экспорт gold из Label Studio (JSON)
162
- 2. Tab 4 (Бенчмарк) — грубый отбор (3-5 моделей × 2 стратегии × 2-3 файла)
163
- 3. Tab 4 (Бенчмарк) — уточнение (топ-2 модели × все файлы)
164
- 4. Tab 5 (Grid Search) — тонкая настройка параметров лучшей модели
165
- 5. Tab 1 + Tab 3 финальная проверка на отдельных файлах
 
 
 
 
166
  ```
167
 
168
- ## Нерешённые проблемы
169
 
170
- 1. **Dev Mode не подхватывает git push автоматически** — нужен Factory Reboot
171
- после каждого пуша, или ручной `git pull` в терминале Space.
172
 
173
- 2. **transformers-whisper бэкенд** (3 русские fine-tuned модели) использует
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
- 4. **Pyannote diarization** на тестовом файле присваивает всю речь
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. **Текущий**: Word-level speaker alignment (word_timestamps=True + midpoint matching)
 
 
 
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, пост-обработка)