Commit Graph
115 Commits
Author SHA1 Message Date
ddmitry f17c24ca60 Merge pull request 'feat(diarization): добавлено разделение транскрипта по говорящим' (#26) from codex/24-word-diarization into master
Reviewed-on: #26
2026-08-14 21:57:43 +03:00
Dmitriy Dementiev 98baf55572 docs(diarization): зафиксированы результаты приёмки и анализа
- Зачем:
  - решения по неопределённым словам и CPU-стоимости должны быть проверяемыми до публикации реализации.
- Что:
  - задокументировано отклонение post-hoc сглаживания Speaker ? по соседним кластерам.
  - добавлено исследование стоимости каскада и облегчённых embedding-моделей.
- Проверка:
  - `git diff --cached --check` — без ошибок.
2026-08-14 21:56:10 +03:00
Dmitriy Dementiev 726718197f feat(diarization): добавлено разделение транскрипта по говорящим
Зачем:
- локальным транскриптам нужна структура реплик для конспектов и протоколов.

Что:
- добавлены пословные таймкоды для всех ASR-бэкендов и сведение с Sherpa-ONNX.
- реализованы CLI-флаги, деградация без потери ASR и speaker Markdown.
- добавлены проверяемый кеш моделей, тесты и документация.

Проверка:
- `pytest` — 283 passed, 1 skipped.
- `pyright` — 0 errors.
- Ruff и `git diff --check` — без ошибок.
- выполнены три контрольных прогона на реальных записях.
2026-08-14 18:55:42 +03:00
ddmitry 63ba41d906 Merge pull request 'docs(diarization): собраны исследования и калибровка для карты' (#18) from feature/8-diarization-map into master
Reviewed-on: #18
2026-08-14 17:19:13 +03:00
Dmitriy Dementiev b8347004da docs(diarization): уточнены правила сведения и формат
- Зачем:
  - спецификация не должна оставлять неоднозначности перед реализацией диаризации.
- Что:
  - уточнены сведение слов, таймкоды и предупреждение о малом кластере.
  - очищены терминология и граница между ADR и спецификацией.
  - сохранён результат сравнения WeSpeaker и CAMPPlus.
- Проверка:
  - git diff --cached --check и проверка относительных ссылок.
2026-08-14 17:09:27 +03:00
Dmitriy Dementiev b8333ba583 docs(diarization): зафиксированы ADR и спецификация
- Зачем:
  - решения карты должны стать устойчивой основой для реализации диаризации.
- Что:
  - добавлены ADR-007 и спецификация пословной диаризации.
  - дополнен доменный словарь и удалены закрытые направления из backlog.
- Проверка:
  - git diff --cached --check.
2026-08-14 15:55:25 +03:00
Dmitriy Dementiev b260dab047 docs(domain): добавлена разметка говорящих
- Зачем:
  - потребовалось отделить временный результат диаризации от итоговых реплик транскрипта.
- Что:
  - добавлено определение разметки говорящих и перечислены нежелательные синонимы.
  - уточнено, что разметка не содержит текст, имена участников и голосовые эмбеддинги.
- Проверка:
  - выполнена команда git diff --cached --check.
2026-08-14 15:18:59 +03:00
Dmitriy Dementiev 26d4ca2f4a docs(context): добавлены термины диаризации
- Зачем:
  - решение о пословной привязке должно использовать единый язык во всех документах карты.
- Что:
  - определены сегмент распознавания и слово с временной привязкой.
  - реплика говорящего отделена от единицы запуска модели распознавания.
- Проверка:
  - git diff --check.
2026-08-14 14:16:01 +03:00
Dmitry Dementiev bbc2bdacfe docs(diarization): уточнены условия замера Intel
- Зачем:
  - результат benchmark нужно интерпретировать с учётом ограничения питания ноутбука.
- Что:
  - зафиксировано урезанное питание во время прогонов.
  - визуальная оценка потери производительности около 30% явно отделена от измеренных результатов.
- Проверка:
  - git diff --check.
2026-08-14 13:59:33 +03:00
Dmitry Dementiev 99ddf77af3 perf(diarization): добавлен замер на старом Intel
- Зачем:
  - требовалось оценить стоимость опциональной диаризации на доступном слабом Intel baseline.
- Что:
  - зафиксированы ASR, RTFx и peak RSS на трёх контрольных записях.
  - замер peak RSS адаптирован для Linux и macOS.
  - недоступный Core i5 явно заменён Core i7-6820HQ с сохранением ограничения применимости.
- Проверка:
  - uv run ruff check .scratch/diarization/common.py.
  - uv run pytest -q: 243 passed, 1 skipped.
2026-08-14 13:37:07 +03:00
Dmitriy Dementiev b8092aade5 docs(diarization): подтверждено смешение в ASR-сегментах
- Зачем:
  - требовалось проверить долю смешанных ASR-сегментов на трёх записях, включая разговоры на двоих.
- Что:
  - добавлен отчёт с долями сегментов и времени для трёх рабочих созвонов.
  - обвязка замеров переведена на откалиброванный порог 0,89.
  - исследовательский скрипт приведён к формату ruff.
- Проверка:
  - выполнены три полных прогона bench_conflict.py с WeSpeaker и порогом 0,89.
  - uv run ruff check и ruff format --check прошли успешно.
2026-08-14 11:44:02 +03:00
Dmitriy Dementiev 0fdeebb256 docs(diarization): добавлены отчёт и скрипт калибровки
- Зачем:
  - необходим устойчивый дефолт модели эмбеддингов и порога на русской речи.
- Что:
  - задокументирован выбор WeSpeaker ResNet34 LM с порогом 0,89.
  - добавлен возобновляемый скрипт свипа моделей и параметров диаризации.
- Проверка:
  - uvx --cache-dir .uv-cache ruff check scripts/benchmarks/diarization_calibration.py.
  - uv run --cache-dir .uv-cache pytest: 243 passed, 1 skipped.
2026-08-14 11:18:17 +03:00
Dmitriy Dementiev 8c55eaa87f docs(context): добавлен термин «Опорная разметка»
- Зачем:
  - слуховая проверка (#12) показала, что разметку диаризации читают как
    истину, хотя она содержит ложный кластер, пропуски и неполные перекрытия.
- Что:
  - в глоссарий добавлен термин «Опорная разметка» с запретом на
    «эталонную», «истинную» и ground truth.
  - определение описывает роль разметки в измерении, а не результат
    конкретного прогона: выводы о пороге 0,9 остались в тикетах карты.
- Проверка:
  - git show --stat HEAD и чтение CONTEXT.md.
2026-08-12 18:08:26 +03:00
Dmitriy Dementiev 388de09c42 docs(research): переработана структура исследования
- Зачем:
  - выводы о жизненном цикле и возможностях моделей должны читаться как единое исследование.
- Что:
  - материал перестроен вокруг слоёв, платформ и уровней доказательства.
  - объединены выводы по Intel, AMD, Apple и браузерным путям.
  - подтверждённые возможности отделены от выводов и необходимых экспериментов.
- Проверка:
  - относительные ссылки и структура Markdown проверены.
  - git diff --cached --check выполнен успешно.
2026-08-12 16:25:54 +03:00
Dmitriy Dementiev 4c7f2920c1 docs(research): исследован жизненный цикл ORT и OpenVINO
- Зачем:
  - нужна фактическая опора для решений карты о диаризации на Intel-пути.
- Что:
  - исследованы жизненные циклы ORT, OpenVINO, DirectML и Windows ML.
  - сравнены пути AMD, Apple Silicon и браузерные EP для текущих моделей.
  - зафиксированы wheel-матрицы, fallback и необходимые model-specific тесты.
- Проверка:
  - git diff --cached --check.
2026-08-12 16:12:43 +03:00
Dmitriy DementievandClaude Opus 5 1cb6a36c92 chore(diarization): добавлена обвязка замеров в .scratch
- Зачем:
  - тикеты карты #10-#13 опираются на измерительную обвязку, которая до сих пор
    жила во временном каталоге сессии и исчезла бы вместе с ним.
- Что:
  - перенесены четыре скрипта разведки: ASR, один прогон диаризации, свип порога
    кластеризации и подсчёт чистоты ASR-сегментов.
  - общая часть вынесена в common.py: пути от корня репозитория вместо
    захардкоженных, конфигурация диаризатора, проверка наличия моделей.
  - починен замер пиковой памяти: нужен экспорт K32GetProcessMemoryInfo из
    kernel32 и явные argtypes, иначе дескриптор процесса уезжает 32-битным.
  - модели и выход замеров исключены из истории локальным .gitignore.
- Проверка:
  - export PYTHONIOENCODING=utf-8
  - uv run --with sherpa-onnx python .scratch/diarization/bench_diar.py "<запись>" 8 0.9

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 15:35:20 +03:00
Dmitriy DementievandClaude Opus 5 87030e9718 chore(git): каталог .scratch больше не игнорируется
- Зачем:
  - рабочие материалы заходов (замеры, черновики, обвязка) должны попадать в
    историю вместе с веткой, а не жить только на машине разработчика.
- Что:
  - строка .scratch/ удалена из .gitignore.
- Проверка:
  - git check-ignore -v .scratch/ не должен ничего возвращать.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 15:26:55 +03:00
Dmitriy DementievandClaude Opus 5 a65cb74d88 docs(agents): описаны операции карты wayfinder в Gitea
- Зачем:
  - навык wayfinder ожидает раздел про операции карты в документе трекера, а
    в Gitea 1.27 нет подзадач, поэтому конвенции надо было зафиксировать явно.
- Что:
  - описана принадлежность тикета карте через метку и ссылку в теле, поскольку
    родительских связей в API нет.
  - блокировки заведены на нативные зависимости Gitea, добавлены запросы фронтира.
  - зафиксированы три особенности tea api: путь без ведущего слэша, обязательные
    owner и repo в теле зависимости, нулевой код возврата при HTTP 404.
- Проверка:
  - tea issues list --remote origin --labels wayfinder:map
  - tea api --remote origin repos/ddmitry/local-transcriber/issues/14/dependencies

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 15:23:16 +03:00
Dmitriy DementievandClaude Opus 5 7e348e400f docs(diarization): добавлен разведочный замер и пересмотрен бэклог
- Зачем:
  - схема из бэклога приписывала спикера целому ASR-сегменту, и до замера
    было неизвестно, насколько сильно это огрубляет результат.
- Что:
  - добавлен разведочный замер sherpa-onnx на одной записи: 11,1x RTFx против
    16,4x у ASR, свип порога кластеризации и доля загрязнённых сегментов.
  - пункт бэклога переписан: движок описан как практически закрытый вопрос,
    главной развилкой названа единица привязки спикера к тексту.
  - зафиксировано, что 27% сегментов содержат не менее секунды чужой речи и на
    них приходится больше половины времени транскрипта.
- Проверка:
  - методика и условия замера воспроизводятся по разделам «Оборудование и
    условия» и «Контрольная запись» в docs/benchmarks/2026-08-12-diarization-feasibility.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 15:22:51 +03:00
Dmitriy Dementiev 3378aac474 docs(readme): исправлен источник установки
- Зачем:
  - команды установки должны использовать основной Gitea-репозиторий, а не зеркало GitHub.
- Что:
  - обновлён источник первичной установки через uv tool.
  - обновлён источник принудительного обновления через uv tool.
- Проверка:
  - выполнена проверка git diff --cached --check.
2026-08-12 12:58:51 +03:00
ddmitry 668faf57e2 Merge pull request 'Обновление OpenVINO до 2026.3, large-v3-turbo и ONNX по умолчанию' (#6) from feature/4-openvino-2026-3 into master
Reviewed-on: #6
2026-08-12 12:43:44 +03:00
Dmitriy Dementiev 9ae013ad0f fix(onnx): подсказки предлагают доступный на платформе бэкенд
- Зачем:
  - подсказки в ошибке и предупреждении называли только OpenVINO и CUDA, которых нет на macOS и ARM, поэтому пользователю там предлагались заведомо нерабочие команды.
- Что:
  - в оба сообщения добавлен вариант --device cpu, работающий на любой платформе.
  - для large-v3-turbo подсказки по cpu и cuda подставляют medium, так как faster-whisper turbo не поддерживает.
- Проверка:
  - uv run pytest -q: 243 passed, 1 skipped.
2026-08-12 12:25:46 +03:00
Dmitriy Dementiev dae9d107c9 docs: уточнены ограничения авто-профиля и профиль turbo
- Зачем:
  - документация обещала large-v3-turbo на NVIDIA, где он недоступен, и умалчивала, что модель по умолчанию без CUDA понимает только русскую речь.
- Что:
  - large-v3-turbo перенесён из таблицы faster-whisper в раздел OpenVINO с измеренными размерами моделей.
  - языковое ограничение авто-профиля и предупреждение CLI описаны в README, gpu.md и ADR-006.
  - в backlog добавлен пункт про turbo для faster-whisper, в gpu.md снято расхождение по скорости openvino-cpu.
- Проверка:
  - вычитка diff, проверка якорной ссылки на docs/gpu.md.
2026-08-12 11:53:09 +03:00
Dmitriy Dementiev 9f11c32979 fix(cli)!: источник языка в шапке транскрипта на русском
- Зачем:
  - в одной строке шапки смешивались английские и русские значения, а при неизвестном языке в неё попадало служебное «unknown (не определён)».
- Что:
  - формулировки источника языка вынесены константами в formatter и переведены на русский.
  - оба бэкенда используют общий признак UNKNOWN_LANGUAGE вместо «auto» и «unknown».
  - неизвестный язык печатается одной строкой, без служебного значения.
- Проверка:
  - uv run pytest -q: 242 passed, 1 skipped.
  - ruff check .: 48 замечаний, столько же, сколько до правки.

BREAKING CHANGE: в шапке транскрипта значения detected и forced заменены на «определён автоматически» и «задан явно»; при неизвестном языке строка выглядит как «- **Язык**: не определён».
2026-08-12 11:52:50 +03:00
Dmitriy Dementiev 995dbe61f8 fix(auto)!: учтены ограничения ONNX-профиля
- Зачем:
  - после смены auto-профиля пользователю нужны явные предупреждения о языковых ограничениях и рабочие пути выбора Whisper-бэкенда.

- Что:
  - в MODEL_CATALOG добавлены поддерживаемые языки ONNX-моделей и предупреждение о несовместимом языке.
  - для Whisper-имён добавлены подсказки с совместимыми парами backend/model.
  - вывод языка различает детекцию, язык моноязычной модели и отсутствие детекции.
  - усилены тесты implicit compute type и turbo-каталога, удалены дубли auto-тестов.

- Проверка:
  - uv run pytest -q: 241 passed, 1 skipped.
  - uv lock --check, compileall и git diff --check.

BREAKING CHANGE: --device auto без NVIDIA теперь выбирает ONNX GigaAM RNN-T; прежний профиль возвращается явным --device или конфигурацией.
2026-08-12 11:18:57 +03:00
Dmitriy Dementiev 136e93765c feat(auto): выбран ONNX по умолчанию без CUDA
- Зачем:
  - пользователям без NVIDIA нужен самый быстрый и читаемый CPU-профиль без дополнительных параметров.
- Что:
  - auto-политика изменена на CUDA при наличии nvidia-smi, иначе ONNX GigaAM RNN-T int8.
  - сохранён приоритет явных значений CLI и конфигурации для OpenVINO и FasterWhisper CPU.
  - обновлены тесты, README, PRD, ADR, GPU-документация и вывод benchmark.
- Проверка:
  - uv run pytest -q: 232 passed, 1 skipped.
  - uv lock --check и git diff --cached --check.
2026-08-12 10:45:05 +03:00
Dmitriy Dementiev 12e17020bf docs(benchmark): добавлены результаты прогона на Ryzen
- Зачем:
  - требуется подтвердить сравнение OpenVINO и ONNX на втором CPU и повторно проверить дубли medium.
- Что:
  - добавлены метрики четырёх профилей на Ryzen 7 8845H.
  - зафиксированы четыре одинаковых прогона RSQM без повторов и результаты двух слепых ревью.
  - описаны аргументы для будущего выбора backend по умолчанию.
- Проверка:
  - git diff --cached --check.
2026-08-12 10:33:44 +03:00
Dmitry Dementiev f043f4e3b5 docs(openvino): добавлены результаты сравнения turbo
- Зачем:
  - нужна практическая оценка нового CPU-профиля на русских встречах.
- Что:
  - зафиксированы скорость, WER, пунктуация, нагрузка и отзывчивость.
  - добавлены две независимые оценки качества и рекомендации пользователям.
- Проверка:
  - uv run pytest.
  - реальные прогоны четырёх профилей на трёх записях.
2026-08-12 08:46:46 +03:00
Dmitry Dementiev a65e5039f5 feat(openvino): добавлена модель large-v3-turbo
- Зачем:
  - нужен быстрый качественный профиль Whisper для локального распознавания.
- Что:
  - добавлены официальные варианты large-v3-turbo INT8 и FP16.
  - покрыты каталог, выбор квантизации, ошибка и создание модели.
- Проверка:
  - uv run pytest.
2026-08-12 08:00:46 +03:00
Dmitry Dementiev 2e69c2f33d chore(openvino): обновлён стек до линии 2026.3
- Зачем:
  - нужна поддерживаемая линия OpenVINO для новых моделей Whisper.
- Что:
  - OpenVINO, GenAI и Tokenizers согласованно обновлены до 2026.3.
  - автоматический переход на следующую линию ограничен версией 2026.4.
- Проверка:
  - uv run pytest.
  - реальный прогон medium INT8 на трёх русскоязычных записях.
2026-08-12 07:59:04 +03:00
ddmitry 88e25c983c Merge pull request 'feat(onnx): добавлен каталог моделей GigaAM и Python 3.13' (#3) from feature/onnx-model-catalog into master
Reviewed-on: #3
2026-08-11 22:38:00 +03:00
Dmitry Dementiev 6f2dbf8e1c fix(cuda): обновлён CTranslate2 для стабильного пакетного режима
- Зачем:
  - CTranslate2 4.7.1 аварийно завершал Windows/CUDA-процесс кодом 0xC0000409 после успешной обработки пакета.
- Что:
  - версия CTranslate2 в uv.lock обновлена до 4.8.1.
  - устранён сбой освобождения CUDA-ресурсов после длинного пакетного прогона.
- Проверка:
  - uv lock --check; uv run pytest -q в Windows и WSL2.
  - полный пакет из трёх записей на Windows/CUDA и полные CUDA, ONNX и OpenVINO-прогоны в WSL2.
2026-08-11 21:49:39 +03:00
Dmitriy Dementiev 7f58a56913 feat(onnx): изменена модель по умолчанию на GigaAM RNN-T
- Зачем:
  - пользователям нужен читаемый транскрипт без обязательной LLM-обработки.
- Что:
  - моделью ONNX по умолчанию выбрана `gigaam-v3-e2e-rnnt`.
  - сохранён явный профиль `gigaam-v3` для более точного сырого текста.
  - обновлены тест, README, спецификация, ADR и benchmark.
- Проверка:
  - `uv run pytest -q` — 226 passed, 1 skipped.
  - `git diff --check`.
2026-08-11 16:47:09 +03:00
Dmitriy Dementiev a06dbe63a3 docs(benchmark): сравнены GigaAM Large и Parakeet
Зачем:
- зафиксировать сравнение моделей на одном и том же массиве записей
- сохранить воспроизводимый набор файлов для будущих прогонов

Что:
- добавлены метрики и качественный вывод по Parakeet v3
- записаны точные имена, размеры и SHA-256 видео и эталонов
- обновлена рекомендация в README

Проверка:
- git diff --check
2026-08-11 16:28:45 +03:00
Dmitriy Dementiev 8f85930616 feat(onnx): добавлена модель GigaAM Multilingual Large
- Зачем:
  - расширенный benchmark показал устойчивое улучшение multilingual large на трёх реальных записях.
- Что:
  - добавлен alias gigaam-multilingual-large-ctc с квантизациями int8 и float32.
  - обновлены README, спецификация, backlog и сравнительный benchmark.
- Проверка:
  - uv run pytest -q: 225 passed, 1 skipped.
  - uvx ruff check src/local_transcriber/backends/onnx_asr.py tests/test_onnx_asr.py.
2026-08-11 16:12:36 +03:00
Dmitriy Dementiev f0d7d06f93 docs(benchmark): расширено сравнение моделей на русских встречах
- Зачем:
  - выбор CPU-модели должен опираться на несколько реальных записей, а не на единичный прогон.
- Что:
  - добавлены скорость, WER и качественное сравнение пяти моделей на трёх встречах.
  - обновлены рекомендации README и открытый вопрос ADR-006 для E2E RNN-T.
- Проверка:
  - git diff --cached --check.
2026-08-11 15:45:28 +03:00
Dmitriy Dementiev 7392d72bca fix(onnx): исключены некорректные VAD-сегменты
- Зачем:
  - закрыты замечания независимого review по воспроизводимости и VAD-приёмке.
- Что:
  - рабочая версия Python точно зафиксирована на 3.13.13.
  - нулевые и обратные VAD-сегменты исключены из результата.
  - в README записаны наблюдаемые скорости новых моделей с указанием CPU.
- Проверка:
  - uv run pytest -q: 224 passed, 1 skipped.
  - ограниченная проверка Ruff и uv lock --check завершены успешно.
2026-08-11 13:21:45 +03:00
Dmitriy Dementiev 0af2dbdd17 feat(onnx): добавлен каталог моделей GigaAM
- Зачем:
  - добавлена локальная транскрипция смешанной речи и русского текста с пунктуацией.
- Что:
  - onnx-asr обновлён до 0.12 и зарегистрированы три модели GigaAM.
  - выбор compute_type учитывает опубликованные квантизации и явность настройки.
  - обновлены тесты, README и требования PRD.
- Проверка:
  - uv run pytest -q: 223 passed, 1 skipped.
  - выполнены smoke- и полные прогоны четырёх GigaAM-моделей.
2026-08-11 13:11:18 +03:00
Dmitriy Dementiev 3c519c6860 chore(runtime): обновлено окружение до Python 3.13
- Зачем:
  - подготовлена совместимая основа для ONNX Runtime 1.28 и onnx-asr 0.12.
- Что:
  - минимальная версия Python поднята до 3.13 и добавлен файл версии.
  - tomli заменён стандартным tomllib.
  - прямые runtime-зависимости ограничены сверху, ONNX Runtime объявлен явно.
- Проверка:
  - uv lock --check.
  - uv run pytest -q: 218 passed, 1 skipped.
  - выполнены реальные прогоны ONNX, OpenVINO CPU и FasterWhisper CPU.
2026-08-11 12:47:34 +03:00
Dmitriy DementievandClaude Opus 5 80b864077a docs(specs): спека onnx-каталога, Python 3.13 и границ версий
- Зачем:
  - смешанная русско-английская речь и отсутствие пунктуации у gigaam-v3-ctc
    закрываются моделями из onnx-asr 0.12, но обновление заблокировано пином.
- Что:
  - добавлена спека: три модели в каталог, Python 3.13 и ORT 1.28, верхние
    границы мажорных версий, ловушки и границы ручной приёмки.
  - в backlog добавлены ссылка на спеку из пункта про CPU-дефолт и новое
    направление «профили намерения вместо выбора модели».
- Проверка:
  - задача трекера #1 с порядком работ и критериями приёмки.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 11:39:28 +03:00
Dmitriy DementievandClaude Opus 5 579cb87bc0 docs(context): убраны термины процедуры сравнительной оценки
- Зачем:
  - формальной процедуры оценки моделей не будет: проект домашний, CI нет,
    репрезентативные записи приватны, а тяжёлый пайплайн повышает шанс
    забросить работу.
- Что:
  - удалены «Кандидатная модель», «Сравнительная оценка», «Контрольная
    модель», «Интеграционный smoke-тест» и «Локальный оценочный корпус».
  - оставлены «Движок распознавания», «Поддерживаемая модель» и «Модель по
    умолчанию» — они держат различие между поддержкой и рекомендацией.
- Проверка:
  - git diff HEAD~1 -- CONTEXT.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 11:37:30 +03:00
Dmitriy Dementiev b302e3dbb2 docs(agents): добавлена конфигурация инженерных навыков
- Зачем:
  - инженерным навыкам нужна единая конфигурация трекера задач и доменных документов.
- Что:
  - задокументированы Gitea workflow через tea и стандартные triage-метки.
  - добавлены доменный словарь и правила работы с ADR, research и specs.
- Проверка:
  - git diff --cached --check.
  - tea --version: 0.15.1.
2026-08-11 11:34:18 +03:00
Dmitriy Dementiev f8c6a4fc7e docs(asr): зафиксировано исследование обновлений и CPU-дефолта
- Зачем:
  - нужен проверяемый путь от обновления ASR-стека к выбору безопасного CPU-дефолта.
- Что:
  - добавлено исследование актуальных движков и моделей с корректным именем файла.
  - зафиксированы дефект OpenVINO, кандидаты GigaAM и матрица бенчмарка на Intel Core i5.
- Проверка:
  - выполнена проверка git diff --cached --check.
2026-08-10 19:07:59 +03:00
Dmitriy DementievandClaude Fable 5 5a7fc0d613 docs(backlog): направления по структуре транскрипта из внешнего ревью
- Зачем:
  - внешнее сравнение с облачным Hypescribe показало: главный разрыв локальной транскрипции — не качество распознавания, а структура (спикеры 2/10 против 8/10); без диаризации MoM не собрать.
- Что:
  - новый раздел «Структура транскрипта»: диаризация как опциональный пост-процессинг (sherpa-onnx vs pyannote, нужен ADR), ручка нарезки абзацев в formatter, словарь замен терминов как запасной план после бенчмарка RNN-T.
  - зафиксировано вне ядра CLI: LLM-чистка и сопоставление имён спикеров.
- Проверка:
  - docs-only, тесты не затронуты.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 10:44:24 +03:00
Dmitriy DementievandClaude Fable 5 b1dfd9dcca feat(quality): предупреждения о возможной потере содержания транскрипта
- Зачем:
  - транскрипция может тихо терять содержание: блоки галлюцинированных повторов и обрыв распознавания до конца файла выглядят как законченный транскрипт (класс ошибок из ADR-006), и читатель об этом не узнаёт.
- Что:
  - новый модуль quality.py: детектор разрыва в хвосте (строго >120 с) и детектор блоков повторяющихся сегментов (серия >=4 для длинного текста, >=10 для короткого вроде «ага»).
  - предупреждения жёлтым в консоли (single и batch) и строками «Внимание» в шапке markdown-транскрипта; _format_duration переименована в публичную format_duration.
  - 27 новых тестов: границы порогов, нормализация текста, шапка formatter, точные строки CLI-сообщений с обрезкой «(+ ещё N)».
- Проверка:
  - uv run pytest — 218 passed, 1 skipped.
  - ручной прогон записи 23:01 (gigaam-v3/onnx) — транскрипт полный, предупреждений нет.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 22:21:07 +03:00
Dmitriy DementievandClaude Fable 5 650e7580e5 chore(repo): убран посторонний app.py, идея чанкования сохранена в backlog
- Зачем:
  - в дереве с апреля лежал некоммиченный app.py (референсный Parakeet-сервер, не часть CLI) и служебный каталог .qwen/ — мусор в git status.
- Что:
  - удалён app.py; его единственная ценная идея (чанкование длинных файлов по паузам через ffmpeg silencedetect) описана в docs/backlog.md с рабочими константами.
  - .qwen/ добавлен в .gitignore (по аналогии с .codex).
- Проверка:
  - git status — дерево чистое, untracked-файлов нет.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:49:45 +03:00
Dmitriy DementievandClaude Fable 5 df204e5ae4 chore: .scratch/ добавлен в .gitignore
- Зачем:
  - рабочие файлы конвейера (задачи-файлы) не должны попадать в дерево.
- Что:
  - .scratch/ в .gitignore.
- Проверка:
  - git status не показывает .scratch/.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:33:02 +03:00
Dmitriy DementievandClaude Fable 5 9307486ceb docs: фича SendTo-меню отражена в README и AGENTS.md
- Зачем:
  - фича --install-menu была описана только в глубине README; верхний
    список возможностей и инструкция для AI-ассистентов о ней не знали.
- Что:
  - пункт «Из проводника Windows» в списке возможностей README со ссылкой
    на раздел; команды раздела приведены к tool-установке (без uv run).
  - строка context_menu.py в схеме архитектуры AGENTS.md.
- Проверка:
  - вычитка README, переход по якорю раздела.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:32:47 +03:00
Dmitriy DementievandClaude Fable 5 f18ad6ea2a feat(cli): добавлен пункт Transcribe в меню «Отправить» проводника
- Зачем:
  - запуск транскрипции правой кнопкой из проводника Windows без
    терминала, для пользователей без прав администратора.
- Что:
  - новый модуль context_menu.py: установка/удаление Transcribe.cmd
    в папке SendTo (OEM-кодировка, CRLF, без реестра).
  - флаги --install-menu / --uninstall-menu в cli.py с ранней
    валидацией до load_config; files стал необязательным аргументом.
  - раздел в README.md: установка, использование, ручное удаление
    через shell:sendto, известные ограничения.
- Проверка:
  - uv run pytest — 191 passed, 1 skipped.
  - uv run transcribe --install-menu и правый клик → Отправить →
    Transcribe на файле с кириллицей в имени.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 19:29:07 +03:00
ddadmin 966efc3bfe docs: добавлены AGENTS.md и CLAUDE.md для AI-ассистентов 2026-04-26 20:05:12 +03:00