- Зачем:
- выбор 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-моделей.
- Зачем:
- фича --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>
Переименовано из 005 в 006: на master уже есть ADR-005-parakeet-evaluation
от прошлого эксперимента (Opus, отклонение Parakeet), нумерация бы конфликтовала.
Качество замерено независимым agent-judge'ем по методологии ADR-005
на 9 транскриптах (3 файла × 3 backend), а не субъективными пометками
"Отлично/Хорошо" на одном файле, как в первой версии. Артефакты транскриптов
лежат в /mnt/c/ddmitry/Videos/OBS/ для верификации.
Подтверждены три класса проблем Parakeet из ADR-005 (Mm-hmm-редукция,
иноязычные вставки, искажение IT-терминов) на новом наборе файлов
с конкретными цитатами и таймкодами.
Обнаружен новый класс ошибок Whisper medium: галлюцинации на длинных
файлах с тихими фрагментами (до 17 минут потеряно на одном файле,
многоминутные повторы, приписывание несуществующих имён). Не описано
в ADR-005, потому что там были 15-минутные отрывки.
GigaAM v3 подтверждён как лучший backend для русских встреч на CPU
(summary utility 4/5 на всех файлах, единственный без потерь содержания).
Рекомендация в README уточнена: parakeet-v3 для русского не подходит,
openvino-cpu medium — только для встреч ≤30 мин с равномерной громкостью.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Зачем:
- в README не было рекомендаций по выбору между gigaam-v3 и parakeet-v3.
- Что:
- добавлена таблица ONNX-моделей с RTFx, языками и пунктуацией.
- пример parakeet-v3 изменён на --language ru.
- рекомендации: gigaam-v3 для скорости, parakeet-v3 для пунктуации.
- Проверка:
- uv run pytest -q (172 passed).
- Зачем:
- CTranslate2 по умолчанию использует 4 потока; на многоядерных CPU (8+ ядер)
это неоптимально — --threads 8 даёт +13% ускорения.
- Не было данных по int8_float32/int8_float16 на NVIDIA GPU.
- Что:
- --threads / -t: новый CLI-флаг, пробрасывается через load_model →
backend.create_model(cpu_threads=...) → WhisperModel(cpu_threads=...).
- Валидация min=0 на входе (typer), Backend протокол синхронизирован.
- docs/gpu.md: результаты бенчмарка 6 комбинаций CUDA compute_type
(medium/large-v3 × float16/int8_float32/int8_float16) на двух файлах
(16 мин и 46 мин). Ключевой вывод: float16 — оптимальный дефолт;
large-v3 ненадёжен на длинных записях.
- README: --threads добавлен в таблицу опций.
- Фикс теста: test_resolve_repo_explicit_unsupported_pair_raises обновлён
под добавление medium fp16 модели.
- Проверка:
- uv run pytest: 157 passed.
- transcribe file.mp4 --device cpu --threads 8: 277с vs 320с (дефолт).
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 backend хардкодил "CPU", хотя Intel Arc GPU доступен и даёт ~2x ускорение.
- Что:
- новые device modes: --device openvino-gpu, openvino-cpu; openvino — авто-детект GPU/CPU.
- detect_device() проверяет Intel GPU через OpenVINO Core API (с fail-safe).
- OpenVINOBackend передаёт "GPU"/"CPU" в WhisperPipeline вместо хардкода "CPU".
- подсказка "Совет: --model large-v3" при наличии GPU и модели не large-v3.
- .gitattributes для нормализации line endings (eol=lf).
- 150 тестов, включая GPU detection, routing, fallback, CLI device info.
- README, docs/gpu.md, docs/PRD.md обновлены для Intel GPU.
- Проверка:
- uv run pytest (150 passed).
- uv run transcribe --device openvino-gpu file.mp4 на Intel Arc 140T GPU.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Зачем:
- cublas64_12.dll not found не распознавалась как CUDA-ошибка, fallback на CPU не срабатывал
- Что:
- _is_cuda_error теперь матчит cublas и cudnn в дополнение к cuda и out of memory
- README: добавлен шаг GPU-ускорения в установку, зафиксирована CUDA 12 (ctranslate2 4.7)
- Проверка:
- uv run pytest (97 passed)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- README перегружен деталями GPU/бенчмарков, нет Quick Start, macOS/Windows — второй класс.
- системный ffmpeg не нужен — PyAV (зависимость faster-whisper) включает FFmpeg в wheels.
- Что:
- переписан README: Quick Start в первых строках, установка без клонирования через uv tool install, паритет платформ, progressive disclosure через <details>.
- удалена функция check_ffmpeg() из utils.py, убраны импорт и вызовы из cli.py.
- убраны моки check_ffmpeg и тест ffmpeg-ошибки из test_cli.py.
- GPU-контент вынесен в docs/gpu.md, добавлен CONTRIBUTING.md.
- Проверка:
- uv run pytest — 97 passed, 1 skipped.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- тестирование на реальных записях показало, что int8 даёт галлюцинации на длинных файлах, auto-detect языка ошибается — нужны оптимальные дефолты по устройству.
- Что:
- дефолты: medium float16 (GPU), medium float32 (CPU), language=ru.
- добавлены DEVICE_DEFAULTS и apply_device_defaults() в config.py.
- убран preprocessor_config.json из обязательных файлов модели (отсутствует у medium).
- README обновлён: таблицы скоростей, качества, результаты тестирования compute_type.
- Проверка:
- uv run pytest — 98 passed, 1 skipped.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- обработка нескольких файлов за один вызов с загрузкой модели один раз.
- хранение дефолтов (модель, язык, устройство) в .transcriber.toml.
- Что:
- добавлен config.py: поиск .transcriber.toml (CWD → ~/.config), парсинг, валидация, приоритет CLI > конфиг > хардкод.
- рефакторинг transcriber.py: выделены load_model() и _transcribe_file() с TranscribeFileResult для переиспользования модели в батче.
- добавлены expand_globs() с дедупликацией и has_existing_transcript() в utils.py.
- CLI: files: list[Path], --force/-f, prescan-first батч с итоговой статистикой и временем, Status-спиннер для прогресса.
- README: секции батч-режим, конфигурационный файл, --force в таблице опций.
- ADR-002: зафиксированы архитектурные решения (prescan-first, TranscribeFileResult, конфиг без мержа).
- Проверка:
- uv run pytest -q — 94 passed, 1 skipped.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Зачем:
- чтобы коллега мог установить и запустить проект на Windows/WSL2/Linux без вопросов (шаг 7 plan.md).
- Что:
- создан README.md: требования, установка через uv tool, примеры CLI, таблицы моделей и квантизаций.
- описаны настройка GPU/CUDA по платформам, совместимость GPU, ожидаемая скорость.
- добавлен пример выходного файла, соответствующий реальному формату formatter (HH:MM:SS.ss, группировка абзацев).
- отмечен шаг 7 как выполненный в plan.md.
- Проверка:
- uv tool install . && transcribe --help — CLI доступен глобально.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>