- Зачем:
- старые результаты решено сохранить до завершения и приемки задачи #46.
- Что:
- архивы задач #41/#42 закреплены как временные и доступные только для чтения;
- стенду #46 запрещено читать архивы или использовать их как основу A/B;
- удаление перенесено на момент после приемки нового отчета.
- Проверка:
- выполнены git diff --check и проверка формулировки в задаче #46.
- Зачем:
- локальные оптимизации каскада не достигли 30%-го порога ускорения;
- старые закрытые хранилища и капсулы не должны стать будущей зависимостью.
- Что:
- собран единый реестр результатов задач #41 и #42;
- опубликовано разложение Ryzen baseline и выбрана архитектурная гипотеза;
- подготовлены самодостаточная спецификация и ready-for-agent задача #46.
- Проверка:
- пройдены self-review и две независимые линии ревью;
- проверены 44 строки реестра, 42 арифметических инварианта и ссылки;
- выполнены ai-text-lint, privacy scan и post-lint guard.
Refs: #45
Зачем:
- Сохранить полный ход проверки гипотез и исключить ненужный повтор старой матрицы.
Что:
- Добавлен ledger этапов W/M/Q/E/C с рецептами, числами и причинами отсева.
- Зафиксированы правила переиспользования результатов и границы повторных прогонов.
- Связана следующая end-to-end карта в задаче #45.
Проверка:
- uv run --no-sync pytest -q (389 passed, 2 skipped).
- Codex taste-review и ai-text-lint: APPROVED.
Зачем:
- Проверить переносимость Intel-handoff на Ryzen и закрыть выбор CPU-профиля.
Что:
- Усилена проверка связи Ryzen-manifest с капсулой и переносимости рецептов.
- Добавлены регрессионные тесты и публичный отчет с исходом new map.
Проверка:
- uv run --no-sync pytest -q (389 passed, 2 skipped).
- uv run --no-sync ruff check src/local_transcriber/benchmark_experiment.py tests/test_benchmark_experiment.py.
- Зачем:
- требовалось сравнить облегченные модели диаризации на старом CPU без изменения рабочей конфигурации.
- Что:
- добавлен воспроизводимый и возобновляемый прогон матрицы Pyannote FP32/INT8 с WeSpeaker и TitaNet.
- зафиксированы измерения 108 ячеек, ограничения эксперимента и решение сохранить модель по умолчанию.
- локальные записи в каталоге tmp исключены из индекса Git.
- Проверка:
- .venv/bin/python -m pytest.
- /tmp/local-transcriber-ruff-bin/ruff check scripts/benchmarks/diarization_calibration.py tests/test_diarization_calibration.py.
Зачем:
- локальным транскриптам нужна структура реплик для конспектов и протоколов.
Что:
- добавлены пословные таймкоды для всех ASR-бэкендов и сведение с Sherpa-ONNX.
- реализованы CLI-флаги, деградация без потери ASR и speaker Markdown.
- добавлены проверяемый кеш моделей, тесты и документация.
Проверка:
- `pytest` — 283 passed, 1 skipped.
- `pyright` — 0 errors.
- Ruff и `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 прошли успешно.
- Зачем:
- схема из бэклога приписывала спикера целому 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>
- Зачем:
- пользователям без 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.
- Зачем:
- требуется подтвердить сравнение OpenVINO и ONNX на втором CPU и повторно проверить дубли medium.
- Что:
- добавлены метрики четырёх профилей на Ryzen 7 8845H.
- зафиксированы четыре одинаковых прогона RSQM без повторов и результаты двух слепых ревью.
- описаны аргументы для будущего выбора backend по умолчанию.
- Проверка:
- git diff --cached --check.
- Зачем:
- нужна практическая оценка нового CPU-профиля на русских встречах.
- Что:
- зафиксированы скорость, WER, пунктуация, нагрузка и отзывчивость.
- добавлены две независимые оценки качества и рекомендации пользователям.
- Проверка:
- uv run pytest.
- реальные прогоны четырёх профилей на трёх записях.
Зачем:
- зафиксировать сравнение моделей на одном и том же массиве записей
- сохранить воспроизводимый набор файлов для будущих прогонов
Что:
- добавлены метрики и качественный вывод по Parakeet v3
- записаны точные имена, размеры и SHA-256 видео и эталонов
- обновлена рекомендация в README
Проверка:
- git diff --check
- Зачем:
- выбор CPU-модели должен опираться на несколько реальных записей, а не на единичный прогон.
- Что:
- добавлены скорость, WER и качественное сравнение пяти моделей на трёх встречах.
- обновлены рекомендации README и открытый вопрос ADR-006 для E2E RNN-T.
- Проверка:
- git diff --cached --check.