- Зачем:
- требовалось сравнить облегченные модели диаризации на старом 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.
- Зачем:
- транскрипты ONNX и faster-whisper на CPU имели одинаковую подпись.
- Что:
- для ONNX добавлено обозначение ONNX (CPU) в метаданных транскрипта.
- различие движков и пользовательская шапка покрыты тестами.
- примеры шапки в README и PRD приведены к текущему ONNX-профилю.
- Проверка:
- env -u FORCE_COLOR -u COLUMNS -u LINES uv run pytest.
- Зачем:
- предупреждения из задачи #7 выглядели как фрагменты Python traceback.
- Что:
- на время запуска CLI установлен однострочный Rich-рендер предупреждений.
- сохранены буквальный текст сообщений и восстановление глобального hook.
- single- и batch-сценарии покрыты автоматическим тестом.
- Проверка:
- uv run pytest tests/test_cli.py -q.
- Зачем:
- в #27 чистая установка Linux не включала sherpa-onnx-core, поэтому import sherpa_onnx падал при загрузке libonnxruntime.so.
- uv при универсальном резолвинге использовал метаданные armv7 wheel без Requires-Dist и терял обязательную платформенную зависимость.
- Что:
- версия sherpa-onnx зафиксирована на 1.13.5 вместе с явным metadata override для sherpa-onnx-core==1.13.5.
- рядом с pin и override записано правило их совместного обновления.
- uv.lock обновлен с зависимостью на core и wheel-файлами поддерживаемых платформ.
- Проверка:
- uv lock --check и uv tree --locked --package sherpa-onnx подтвердили зависимость от core 1.13.5.
- чистые uv sync --frozen, uv pip check и import sherpa_onnx завершились успешно в Linux.
- uv run pytest -q: 282 passed, 2 skipped.
- uvx ruff check src/local_transcriber/speaker_diarizer.py tests/test_speaker_diarizer.py завершился успешно.
- Зачем:
- в #27 чистая установка Linux не включала sherpa-onnx-core, поэтому import sherpa_onnx падал при загрузке libonnxruntime.so.
- uv при универсальном резолвинге использовал метаданные armv7 wheel без Requires-Dist и терял обязательную платформенную зависимость.
- Что:
- версия sherpa-onnx зафиксирована на 1.13.5 вместе с явным metadata override для sherpa-onnx-core==1.13.5.
- рядом с pin и override записано правило их совместного обновления.
- uv.lock обновлен с зависимостью на core и wheel-файлами поддерживаемых платформ.
- Проверка:
- uv lock --check и uv tree --locked --package sherpa-onnx подтвердили зависимость от core 1.13.5.
- чистые uv sync --frozen, uv pip check и import sherpa_onnx завершились успешно в Linux.
- uv run pytest -q: 282 passed, 2 skipped.
- uvx ruff check src/local_transcriber/speaker_diarizer.py tests/test_speaker_diarizer.py завершился успешно.
- Зачем:
- результат benchmark нужно интерпретировать с учётом ограничения питания ноутбука.
- Что:
- зафиксировано урезанное питание во время прогонов.
- визуальная оценка потери производительности около 30% явно отделена от измеренных результатов.
- Проверка:
- git diff --check.
- Зачем:
- нужна практическая оценка нового CPU-профиля на русских встречах.
- Что:
- зафиксированы скорость, WER, пунктуация, нагрузка и отзывчивость.
- добавлены две независимые оценки качества и рекомендации пользователям.
- Проверка:
- uv run pytest.
- реальные прогоны четырёх профилей на трёх записях.
- Зачем:
- нужна поддерживаемая линия OpenVINO для новых моделей Whisper.
- Что:
- OpenVINO, GenAI и Tokenizers согласованно обновлены до 2026.3.
- автоматический переход на следующую линию ограничен версией 2026.4.
- Проверка:
- uv run pytest.
- реальный прогон medium INT8 на трёх русскоязычных записях.
- Зачем:
- 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.
- Зачем:
- 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>