добавлены пословные таймкоды для FasterWhisper, ONNX-ASR и OpenVINO;
реализована офлайн-диаризация через sherpa-onnx с проверяемым кешем Pyannote segmentation 3.0 и WeSpeaker ResNet34 LM;
добавлены --diarize и --speakers N, batch-owned lifecycle и деградация без потери готового ASR;
реализовано пословное сведение, Speaker N / Speaker ?, малые кластеры и speaker Markdown;
обновлены README, ADR, зависимости и отчёты приёмки/производительности.
Поведение
без новых флагов формат и путь ASR не меняются;
ошибка preflight останавливает запуск до первого ASR;
ошибка диаризации отдельного файла сохраняет обычный транскрипт, продолжает batch и возвращает ненулевой статус;
неизвестные слова и малые кластеры не скрываются;
post-hoc назначение Speaker ? соседнему кластеру отклонено после проверки на трёх транскриптах: совпадение с независимой опорой составило около 52%.
Проверка
pytest: 283 passed, 1 skipped;
Pyright: 0 errors;
Ruff и git diff --check: без ошибок;
ручная приёмка на Data Test, T2 BDMA и Yantar;
ASR-текст speaker-вывода посимвольно сверён с обычным ASR без потерь и перестановок;
на 61:13 контрольного аудио полный последовательный запуск с диаризацией занял 12:50.
Дальше
CPU-стоимость и облегчённые модели вынесены в #25. Параллельный запуск ASR и диаризации остаётся отдельной оптимизацией wall-clock.
Closes #24.
## Что сделано
- добавлены пословные таймкоды для FasterWhisper, ONNX-ASR и OpenVINO;
- реализована офлайн-диаризация через sherpa-onnx с проверяемым кешем Pyannote segmentation 3.0 и WeSpeaker ResNet34 LM;
- добавлены `--diarize` и `--speakers N`, batch-owned lifecycle и деградация без потери готового ASR;
- реализовано пословное сведение, `Speaker N` / `Speaker ?`, малые кластеры и speaker Markdown;
- обновлены README, ADR, зависимости и отчёты приёмки/производительности.
## Поведение
- без новых флагов формат и путь ASR не меняются;
- ошибка preflight останавливает запуск до первого ASR;
- ошибка диаризации отдельного файла сохраняет обычный транскрипт, продолжает batch и возвращает ненулевой статус;
- неизвестные слова и малые кластеры не скрываются;
- post-hoc назначение `Speaker ?` соседнему кластеру отклонено после проверки на трёх транскриптах: совпадение с независимой опорой составило около 52%.
## Проверка
- `pytest`: 283 passed, 1 skipped;
- Pyright: 0 errors;
- Ruff и `git diff --check`: без ошибок;
- ручная приёмка на Data Test, T2 BDMA и Yantar;
- ASR-текст speaker-вывода посимвольно сверён с обычным ASR без потерь и перестановок;
- на 61:13 контрольного аудио полный последовательный запуск с диаризацией занял 12:50.
## Дальше
CPU-стоимость и облегчённые модели вынесены в #25. Параллельный запуск ASR и диаризации остаётся отдельной оптимизацией wall-clock.
Зачем:
- локальным транскриптам нужна структура реплик для конспектов и протоколов.
Что:
- добавлены пословные таймкоды для всех ASR-бэкендов и сведение с Sherpa-ONNX.
- реализованы CLI-флаги, деградация без потери ASR и speaker Markdown.
- добавлены проверяемый кеш моделей, тесты и документация.
Проверка:
- `pytest` — 283 passed, 1 skipped.
- `pyright` — 0 errors.
- Ruff и `git diff --check` — без ошибок.
- выполнены три контрольных прогона на реальных записях.
- Зачем:
- решения по неопределённым словам и CPU-стоимости должны быть проверяемыми до публикации реализации.
- Что:
- задокументировано отклонение post-hoc сглаживания Speaker ? по соседним кластерам.
- добавлено исследование стоимости каскада и облегчённых embedding-моделей.
- Проверка:
- `git diff --cached --check` — без ошибок.
ddmitry
merged commit f17c24ca60 into master2026-08-14 21:57:45 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #24.
Что сделано
--diarizeи--speakers N, batch-owned lifecycle и деградация без потери готового ASR;Speaker N/Speaker ?, малые кластеры и speaker Markdown;Поведение
Speaker ?соседнему кластеру отклонено после проверки на трёх транскриптах: совпадение с независимой опорой составило около 52%.Проверка
pytest: 283 passed, 1 skipped;git diff --check: без ошибок;Дальше
CPU-стоимость и облегчённые модели вынесены в #25. Параллельный запуск ASR и диаризации остаётся отдельной оптимизацией wall-clock.