- Зачем:
- спецификация не должна оставлять неоднозначности перед реализацией диаризации.
- Что:
- уточнены сведение слов, таймкоды и предупреждение о малом кластере.
- очищены терминология и граница между ADR и спецификацией.
- сохранён результат сравнения WeSpeaker и CAMPPlus.
- Проверка:
- git diff --cached --check и проверка относительных ссылок.
- Зачем:
- решения карты должны стать устойчивой основой для реализации диаризации.
- Что:
- добавлены ADR-007 и спецификация пословной диаризации.
- дополнен доменный словарь и удалены закрытые направления из backlog.
- Проверка:
- git diff --cached --check.
- Зачем:
- потребовалось отделить временный результат диаризации от итоговых реплик транскрипта.
- Что:
- добавлено определение разметки говорящих и перечислены нежелательные синонимы.
- уточнено, что разметка не содержит текст, имена участников и голосовые эмбеддинги.
- Проверка:
- выполнена команда git diff --cached --check.
- Зачем:
- решение о пословной привязке должно использовать единый язык во всех документах карты.
- Что:
- определены сегмент распознавания и слово с временной привязкой.
- реплика говорящего отделена от единицы запуска модели распознавания.
- Проверка:
- git diff --check.
- Зачем:
- результат benchmark нужно интерпретировать с учётом ограничения питания ноутбука.
- Что:
- зафиксировано урезанное питание во время прогонов.
- визуальная оценка потери производительности около 30% явно отделена от измеренных результатов.
- Проверка:
- git diff --check.
- Зачем:
- требовалось проверить долю смешанных ASR-сегментов на трёх записях, включая разговоры на двоих.
- Что:
- добавлен отчёт с долями сегментов и времени для трёх рабочих созвонов.
- обвязка замеров переведена на откалиброванный порог 0,89.
- исследовательский скрипт приведён к формату ruff.
- Проверка:
- выполнены три полных прогона bench_conflict.py с WeSpeaker и порогом 0,89.
- uv run ruff check и ruff format --check прошли успешно.
- Зачем:
- слуховая проверка (#12) показала, что разметку диаризации читают как
истину, хотя она содержит ложный кластер, пропуски и неполные перекрытия.
- Что:
- в глоссарий добавлен термин «Опорная разметка» с запретом на
«эталонную», «истинную» и ground truth.
- определение описывает роль разметки в измерении, а не результат
конкретного прогона: выводы о пороге 0,9 остались в тикетах карты.
- Проверка:
- git show --stat HEAD и чтение CONTEXT.md.
- Зачем:
- выводы о жизненном цикле и возможностях моделей должны читаться как единое исследование.
- Что:
- материал перестроен вокруг слоёв, платформ и уровней доказательства.
- объединены выводы по Intel, AMD, Apple и браузерным путям.
- подтверждённые возможности отделены от выводов и необходимых экспериментов.
- Проверка:
- относительные ссылки и структура Markdown проверены.
- git diff --cached --check выполнен успешно.
- Зачем:
- нужна фактическая опора для решений карты о диаризации на Intel-пути.
- Что:
- исследованы жизненные циклы ORT, OpenVINO, DirectML и Windows ML.
- сравнены пути AMD, Apple Silicon и браузерные EP для текущих моделей.
- зафиксированы wheel-матрицы, fallback и необходимые model-specific тесты.
- Проверка:
- git diff --cached --check.
- Зачем:
- тикеты карты #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>
- Зачем:
- рабочие материалы заходов (замеры, черновики, обвязка) должны попадать в
историю вместе с веткой, а не жить только на машине разработчика.
- Что:
- строка .scratch/ удалена из .gitignore.
- Проверка:
- git check-ignore -v .scratch/ не должен ничего возвращать.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- навык 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>
- Зачем:
- схема из бэклога приписывала спикера целому 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>