- Зачем:
- навык 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>
- Зачем:
- команды установки должны использовать основной Gitea-репозиторий, а не зеркало GitHub.
- Что:
- обновлён источник первичной установки через uv tool.
- обновлён источник принудительного обновления через uv tool.
- Проверка:
- выполнена проверка git diff --cached --check.
- Зачем:
- подсказки в ошибке и предупреждении называли только OpenVINO и CUDA, которых нет на macOS и ARM, поэтому пользователю там предлагались заведомо нерабочие команды.
- Что:
- в оба сообщения добавлен вариант --device cpu, работающий на любой платформе.
- для large-v3-turbo подсказки по cpu и cuda подставляют medium, так как faster-whisper turbo не поддерживает.
- Проверка:
- uv run pytest -q: 243 passed, 1 skipped.
- Зачем:
- документация обещала 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.
- Зачем:
- в одной строке шапки смешивались английские и русские значения, а при неизвестном языке в неё попадало служебное «unknown (не определён)».
- Что:
- формулировки источника языка вынесены константами в formatter и переведены на русский.
- оба бэкенда используют общий признак UNKNOWN_LANGUAGE вместо «auto» и «unknown».
- неизвестный язык печатается одной строкой, без служебного значения.
- Проверка:
- uv run pytest -q: 242 passed, 1 skipped.
- ruff check .: 48 замечаний, столько же, сколько до правки.
BREAKING CHANGE: в шапке транскрипта значения detected и forced заменены на «определён автоматически» и «задан явно»; при неизвестном языке строка выглядит как «- **Язык**: не определён».
- Зачем:
- после смены 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 или конфигурацией.
- Зачем:
- пользователям без 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.
Зачем:
- зафиксировать сравнение моделей на одном и том же массиве записей
- сохранить воспроизводимый набор файлов для будущих прогонов
Что:
- добавлены метрики и качественный вывод по Parakeet v3
- записаны точные имена, размеры и SHA-256 видео и эталонов
- обновлена рекомендация в README
Проверка:
- git diff --check
- Зачем:
- выбор CPU-модели должен опираться на несколько реальных записей, а не на единичный прогон.
- Что:
- добавлены скорость, WER и качественное сравнение пяти моделей на трёх встречах.
- обновлены рекомендации README и открытый вопрос ADR-006 для E2E RNN-T.
- Проверка:
- git diff --cached --check.
- Зачем:
- закрыты замечания независимого review по воспроизводимости и VAD-приёмке.
- Что:
- рабочая версия Python точно зафиксирована на 3.13.13.
- нулевые и обратные VAD-сегменты исключены из результата.
- в README записаны наблюдаемые скорости новых моделей с указанием CPU.
- Проверка:
- uv run pytest -q: 224 passed, 1 skipped.
- ограниченная проверка Ruff и uv lock --check завершены успешно.
- Зачем:
- добавлена локальная транскрипция смешанной речи и русского текста с пунктуацией.
- Что:
- onnx-asr обновлён до 0.12 и зарегистрированы три модели GigaAM.
- выбор compute_type учитывает опубликованные квантизации и явность настройки.
- обновлены тесты, README и требования PRD.
- Проверка:
- uv run pytest -q: 223 passed, 1 skipped.
- выполнены smoke- и полные прогоны четырёх GigaAM-моделей.
- Зачем:
- смешанная русско-английская речь и отсутствие пунктуации у 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>
- Зачем:
- формальной процедуры оценки моделей не будет: проект домашний, CI нет,
репрезентативные записи приватны, а тяжёлый пайплайн повышает шанс
забросить работу.
- Что:
- удалены «Кандидатная модель», «Сравнительная оценка», «Контрольная
модель», «Интеграционный smoke-тест» и «Локальный оценочный корпус».
- оставлены «Движок распознавания», «Поддерживаемая модель» и «Модель по
умолчанию» — они держат различие между поддержкой и рекомендацией.
- Проверка:
- git diff HEAD~1 -- CONTEXT.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- инженерным навыкам нужна единая конфигурация трекера задач и доменных документов.
- Что:
- задокументированы Gitea workflow через tea и стандартные triage-метки.
- добавлены доменный словарь и правила работы с ADR, research и specs.
- Проверка:
- git diff --cached --check.
- tea --version: 0.15.1.
- Зачем:
- нужен проверяемый путь от обновления ASR-стека к выбору безопасного CPU-дефолта.
- Что:
- добавлено исследование актуальных движков и моделей с корректным именем файла.
- зафиксированы дефект OpenVINO, кандидаты GigaAM и матрица бенчмарка на Intel Core i5.
- Проверка:
- выполнена проверка git diff --cached --check.
- Зачем:
- внешнее сравнение с облачным 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>
- Зачем:
- транскрипция может тихо терять содержание: блоки галлюцинированных повторов и обрыв распознавания до конца файла выглядят как законченный транскрипт (класс ошибок из 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>
- Зачем:
- в дереве с апреля лежал некоммиченный 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>
- Зачем:
- рабочие файлы конвейера (задачи-файлы) не должны попадать в дерево.
- Что:
- .scratch/ в .gitignore.
- Проверка:
- git status не показывает .scratch/.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- фича --install-menu была описана только в глубине README; верхний
список возможностей и инструкция для AI-ассистентов о ней не знали.
- Что:
- пункт «Из проводника Windows» в списке возможностей README со ссылкой
на раздел; команды раздела приведены к tool-установке (без uv run).
- строка context_menu.py в схеме архитектуры AGENTS.md.
- Проверка:
- вычитка README, переход по якорю раздела.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- запуск транскрипции правой кнопкой из проводника 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>
Зафиксированы два направления развития:
- temperature fallback и фильтры галлюцинаций для OpenVINO бэкенда
- тестирование int8_float32/int8_float16 на CUDA
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Добавлена секция CPU бэкенда: int8_float32 как рекомендация, тюнинг потоков
- Объяснение разницы качества OpenVINO vs CTranslate2 (pipeline декодирования)
- Секция CUDA: int8_float32/int8_float16 как альтернатива для тестирования
- Обновлена таблица OpenVINO моделей (medium fp16)
- Обновлены таблицы скорости и качества
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
OpenVINO/whisper-medium-fp16-ov доступна через --compute-type fp16.
На CPU fp16 эмулируется программно (медленно), но на Intel Arc GPU
даёт аппаратное ускорение через XMX. Не меняет дефолты.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Бенчмарк показал: int8_float32 даёт 1.5x ускорение на CPU при сохранении
качества float32. Добавлен как рекомендуемый вариант для CPU.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Бенчмарк показал: OpenVINO fp16 даёт 3.7x ускорение, но теряет качество
на русской разговорной речи. CTranslate2 int8_float32 — оптимальный баланс.
Следующий шаг — DirectML бэкенд для AMD Radeon iGPU.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>