Commit Graph
87 Commits
Author SHA1 Message Date
Dmitry Dementiev a65e5039f5 feat(openvino): добавлена модель large-v3-turbo
- Зачем:
  - нужен быстрый качественный профиль Whisper для локального распознавания.
- Что:
  - добавлены официальные варианты large-v3-turbo INT8 и FP16.
  - покрыты каталог, выбор квантизации, ошибка и создание модели.
- Проверка:
  - uv run pytest.
2026-08-12 08:00:46 +03:00
Dmitry Dementiev 2e69c2f33d chore(openvino): обновлён стек до линии 2026.3
- Зачем:
  - нужна поддерживаемая линия OpenVINO для новых моделей Whisper.
- Что:
  - OpenVINO, GenAI и Tokenizers согласованно обновлены до 2026.3.
  - автоматический переход на следующую линию ограничен версией 2026.4.
- Проверка:
  - uv run pytest.
  - реальный прогон medium INT8 на трёх русскоязычных записях.
2026-08-12 07:59:04 +03:00
ddmitry 88e25c983c Merge pull request 'feat(onnx): добавлен каталог моделей GigaAM и Python 3.13' (#3) from feature/onnx-model-catalog into master
Reviewed-on: #3
2026-08-11 22:38:00 +03:00
Dmitry Dementiev 6f2dbf8e1c fix(cuda): обновлён CTranslate2 для стабильного пакетного режима
- Зачем:
  - 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.
2026-08-11 21:49:39 +03:00
Dmitriy Dementiev 7f58a56913 feat(onnx): изменена модель по умолчанию на GigaAM RNN-T
- Зачем:
  - пользователям нужен читаемый транскрипт без обязательной LLM-обработки.
- Что:
  - моделью ONNX по умолчанию выбрана `gigaam-v3-e2e-rnnt`.
  - сохранён явный профиль `gigaam-v3` для более точного сырого текста.
  - обновлены тест, README, спецификация, ADR и benchmark.
- Проверка:
  - `uv run pytest -q` — 226 passed, 1 skipped.
  - `git diff --check`.
2026-08-11 16:47:09 +03:00
Dmitriy Dementiev a06dbe63a3 docs(benchmark): сравнены GigaAM Large и Parakeet
Зачем:
- зафиксировать сравнение моделей на одном и том же массиве записей
- сохранить воспроизводимый набор файлов для будущих прогонов

Что:
- добавлены метрики и качественный вывод по Parakeet v3
- записаны точные имена, размеры и SHA-256 видео и эталонов
- обновлена рекомендация в README

Проверка:
- git diff --check
2026-08-11 16:28:45 +03:00
Dmitriy Dementiev 8f85930616 feat(onnx): добавлена модель GigaAM Multilingual Large
- Зачем:
  - расширенный benchmark показал устойчивое улучшение multilingual large на трёх реальных записях.
- Что:
  - добавлен alias gigaam-multilingual-large-ctc с квантизациями int8 и float32.
  - обновлены README, спецификация, backlog и сравнительный benchmark.
- Проверка:
  - uv run pytest -q: 225 passed, 1 skipped.
  - uvx ruff check src/local_transcriber/backends/onnx_asr.py tests/test_onnx_asr.py.
2026-08-11 16:12:36 +03:00
Dmitriy Dementiev f0d7d06f93 docs(benchmark): расширено сравнение моделей на русских встречах
- Зачем:
  - выбор CPU-модели должен опираться на несколько реальных записей, а не на единичный прогон.
- Что:
  - добавлены скорость, WER и качественное сравнение пяти моделей на трёх встречах.
  - обновлены рекомендации README и открытый вопрос ADR-006 для E2E RNN-T.
- Проверка:
  - git diff --cached --check.
2026-08-11 15:45:28 +03:00
Dmitriy Dementiev 7392d72bca fix(onnx): исключены некорректные VAD-сегменты
- Зачем:
  - закрыты замечания независимого review по воспроизводимости и VAD-приёмке.
- Что:
  - рабочая версия Python точно зафиксирована на 3.13.13.
  - нулевые и обратные VAD-сегменты исключены из результата.
  - в README записаны наблюдаемые скорости новых моделей с указанием CPU.
- Проверка:
  - uv run pytest -q: 224 passed, 1 skipped.
  - ограниченная проверка Ruff и uv lock --check завершены успешно.
2026-08-11 13:21:45 +03:00
Dmitriy Dementiev 0af2dbdd17 feat(onnx): добавлен каталог моделей GigaAM
- Зачем:
  - добавлена локальная транскрипция смешанной речи и русского текста с пунктуацией.
- Что:
  - onnx-asr обновлён до 0.12 и зарегистрированы три модели GigaAM.
  - выбор compute_type учитывает опубликованные квантизации и явность настройки.
  - обновлены тесты, README и требования PRD.
- Проверка:
  - uv run pytest -q: 223 passed, 1 skipped.
  - выполнены smoke- и полные прогоны четырёх GigaAM-моделей.
2026-08-11 13:11:18 +03:00
Dmitriy Dementiev 3c519c6860 chore(runtime): обновлено окружение до Python 3.13
- Зачем:
  - подготовлена совместимая основа для ONNX Runtime 1.28 и onnx-asr 0.12.
- Что:
  - минимальная версия Python поднята до 3.13 и добавлен файл версии.
  - tomli заменён стандартным tomllib.
  - прямые runtime-зависимости ограничены сверху, ONNX Runtime объявлен явно.
- Проверка:
  - uv lock --check.
  - uv run pytest -q: 218 passed, 1 skipped.
  - выполнены реальные прогоны ONNX, OpenVINO CPU и FasterWhisper CPU.
2026-08-11 12:47:34 +03:00
Dmitriy DementievandClaude Opus 5 80b864077a docs(specs): спека onnx-каталога, Python 3.13 и границ версий
- Зачем:
  - смешанная русско-английская речь и отсутствие пунктуации у 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>
2026-08-11 11:39:28 +03:00
Dmitriy DementievandClaude Opus 5 579cb87bc0 docs(context): убраны термины процедуры сравнительной оценки
- Зачем:
  - формальной процедуры оценки моделей не будет: проект домашний, CI нет,
    репрезентативные записи приватны, а тяжёлый пайплайн повышает шанс
    забросить работу.
- Что:
  - удалены «Кандидатная модель», «Сравнительная оценка», «Контрольная
    модель», «Интеграционный smoke-тест» и «Локальный оценочный корпус».
  - оставлены «Движок распознавания», «Поддерживаемая модель» и «Модель по
    умолчанию» — они держат различие между поддержкой и рекомендацией.
- Проверка:
  - git diff HEAD~1 -- CONTEXT.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 11:37:30 +03:00
Dmitriy Dementiev b302e3dbb2 docs(agents): добавлена конфигурация инженерных навыков
- Зачем:
  - инженерным навыкам нужна единая конфигурация трекера задач и доменных документов.
- Что:
  - задокументированы Gitea workflow через tea и стандартные triage-метки.
  - добавлены доменный словарь и правила работы с ADR, research и specs.
- Проверка:
  - git diff --cached --check.
  - tea --version: 0.15.1.
2026-08-11 11:34:18 +03:00
Dmitriy Dementiev f8c6a4fc7e docs(asr): зафиксировано исследование обновлений и CPU-дефолта
- Зачем:
  - нужен проверяемый путь от обновления ASR-стека к выбору безопасного CPU-дефолта.
- Что:
  - добавлено исследование актуальных движков и моделей с корректным именем файла.
  - зафиксированы дефект OpenVINO, кандидаты GigaAM и матрица бенчмарка на Intel Core i5.
- Проверка:
  - выполнена проверка git diff --cached --check.
2026-08-10 19:07:59 +03:00
Dmitriy DementievandClaude Fable 5 5a7fc0d613 docs(backlog): направления по структуре транскрипта из внешнего ревью
- Зачем:
  - внешнее сравнение с облачным 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>
2026-07-10 10:44:24 +03:00
Dmitriy DementievandClaude Fable 5 b1dfd9dcca feat(quality): предупреждения о возможной потере содержания транскрипта
- Зачем:
  - транскрипция может тихо терять содержание: блоки галлюцинированных повторов и обрыв распознавания до конца файла выглядят как законченный транскрипт (класс ошибок из 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>
2026-07-09 22:21:07 +03:00
Dmitriy DementievandClaude Fable 5 650e7580e5 chore(repo): убран посторонний app.py, идея чанкования сохранена в backlog
- Зачем:
  - в дереве с апреля лежал некоммиченный 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>
2026-07-09 20:49:45 +03:00
Dmitriy DementievandClaude Fable 5 df204e5ae4 chore: .scratch/ добавлен в .gitignore
- Зачем:
  - рабочие файлы конвейера (задачи-файлы) не должны попадать в дерево.
- Что:
  - .scratch/ в .gitignore.
- Проверка:
  - git status не показывает .scratch/.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:33:02 +03:00
Dmitriy DementievandClaude Fable 5 9307486ceb docs: фича SendTo-меню отражена в README и AGENTS.md
- Зачем:
  - фича --install-menu была описана только в глубине README; верхний
    список возможностей и инструкция для AI-ассистентов о ней не знали.
- Что:
  - пункт «Из проводника Windows» в списке возможностей README со ссылкой
    на раздел; команды раздела приведены к tool-установке (без uv run).
  - строка context_menu.py в схеме архитектуры AGENTS.md.
- Проверка:
  - вычитка README, переход по якорю раздела.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:32:47 +03:00
Dmitriy DementievandClaude Fable 5 f18ad6ea2a feat(cli): добавлен пункт Transcribe в меню «Отправить» проводника
- Зачем:
  - запуск транскрипции правой кнопкой из проводника 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>
2026-07-09 19:29:07 +03:00
ddadmin 966efc3bfe docs: добавлены AGENTS.md и CLAUDE.md для AI-ассистентов 2026-04-26 20:05:12 +03:00
ddadmin e41600510b add .codex to gitignore 2026-04-26 19:54:23 +03:00
ddadminandClaude Opus 4.7 0059e28f77 fix(deps): ограничить onnx-asr верхней границей <0.12.0
onnx-asr — pre-1.0 библиотека (текущая 0.11.x). Без верхней границы любой
minor-апдейт (0.12.x) или major (1.0.0) подгрузится автоматически и может
сломать совместимость API: для pre-1.0 SemVer не гарантирует обратную
совместимость даже на minor-bumps. Уже наблюдали это в первой итерации:
при smoke-тесте обнаружили расхождение API между ожидаемой и реальной
сигнатурой (cpu_preprocessing был removed, start_ts/end_ts → start/end).

Ограничиваем до compatible-release: >=0.11.0,<0.12.0. При появлении 0.12
обновим осознанно после проверки совместимости.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 00:34:57 +03:00
ddadminandClaude Opus 4.7 1c779be139 Merge branch 'experiment/parakeet-backend-opencode'
Эксперимент с DeepSeek V4 Pro: добавление onnx-asr бэкенда (Parakeet/GigaAM/
FastConformer) с независимой валидацией качества через agent-judge.

Реализация:
- backends/onnx_asr.py — третий pluggable backend через onnxruntime + Silero VAD.
- --device onnx с моделями gigaam-v3 (рекомендуется для русского) и parakeet-v3.
- _normalize_quantization() — маппинг compute_type → onnx-asr quantization
  (int8/fp16 pass-through, float16→fp16, float32/fp32→None, остальные→ValueError).
- DEVICE_DEFAULTS для onnx, _VALID_DEVICES расширен.

Документация:
- ADR-006 — итоги: GigaAM v3 как best-CPU choice для русских встреч, Parakeet
  непригоден для русского (воспроизведены три класса проблем из ADR-005), новый
  класс ошибок Whisper medium на длинных файлах с тихими фрагментами.
- backlog.md — устойчивый список будущих экспериментов (GigaAM v3 RNN-T и др.).

Контекст эксперимента:
- ADR-005 (Opus, master) отклонил Parakeet на двух 15-мин файлах с тихим
  микрофоном. ADR-006 повторяет на 22-81-мин файлах + добавляет GigaAM.
- Реализация прошла три фазы валидации: smoke-test (4 mock-API расхождения
  → fix), agent-judge на 9 транскриптах (подтверждение проблем Parakeet,
  обнаружение Whisper-галлюцинаций), adversarial-review через GPT-5.5
  (compute_type=float32 ломал onnx-загрузку → fix + 4 теста).

Не включено в merge: docs/superpowers/specs/ и plans/ от DeepSeek (stale
assumptions, итоговый канон в ADR-006; полные документы — в истории ветки).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 00:33:30 +03:00
ddadminandClaude Opus 4.7 9cfa437b33 fix(onnx-asr): корректный маппинг compute_type в onnx-asr quantization
При adversarial review (gpt-5.5) обнаружено: пользователь с config
compute_type = "float32" и --device onnx падал на старте.
HARDCODED_DEFAULTS["compute_type"] = "float32", apply_device_defaults не
заменяет значение если оно есть в config — старая проверка
(compute_type in ("int8", "fp16", "float32")) пропускала "float32"
дальше как onnx_asr quantization, что заставляло искать несуществующий
файл с суффиксом _float32.

- _normalize_quantization() — explicit маппинг в onnx-asr quantization.
- float32/fp32 → None (unquantized loading в onnx-asr — это None, не строка).
- float16 → fp16 (CUDA-naming → onnx-asr-naming).
- int8/fp16 → pass-through.
- Неизвестные compute_type (например, int8_float32 от CTranslate2) → ValueError
  вместо silent fallback на int8 — пользователь раньше получал не ту
  модель без предупреждения.

4 новых теста: float32→None, fp32→None, float16→fp16, unknown→raises.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 00:06:22 +03:00
ddadminandClaude Opus 4.7 0c3a67c4ea docs: добавлен backlog.md — устойчивый список будущих экспериментов
В проекте не было общего файла для будущих идей: docs/plan.md — историческая
летопись (всё [x]), docs/gpu.md — потенциальные направления привязаны к GPU/CPU
производительности, открытые вопросы из ADR легко теряются среди следующих ADR.

Создан docs/backlog.md как канонический хаб для будущих экспериментов
с обоснованием, цифрами и ссылками на источники. Первые записи:

- GigaAM v3 RNN-T — потенциальная замена CTC-дефолта (WER 2.6% vs 13.2%
  на сложных текстах, e2e_rnnt c пунктуацией, 70:30 vs Whisper-large-v3 LLM-judge)
- Canary 1B — multilingual + пунктуация на CPU
- Whisper medium галлюцинации на длинных файлах (chunk_length / pipeline-фильтры)
- Качественный pipeline для OpenVINO (давно зафиксировано в gpu.md)
- Включение onnx в --device auto после стабилизации

Все направления связаны ссылками на источники (ADR-006, gpu.md, публикации
SberDevices), чтобы при возврате к работе не пришлось воспроизводить контекст.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:48:36 +03:00
ddadminandClaude Opus 4.7 3b7eb603ae docs(adr): ADR-006 onnx-asr — независимая валидация через agent-judge
Переименовано из 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>
2026-04-25 23:35:04 +03:00
ddadmin 5990d85a58 chore: удалён скрипт сравнения (не пригодился)
- Зачем:
  - сравнение сделано вручную, скрипт не использовался.
- Что:
  - удалён scripts/compare_backends.py.
- Проверка:
  - uv run pytest -q (172 passed).
2026-04-25 23:17:30 +03:00
ddadmin 503f2a3732 docs(readme): уточнены рекомендации по onnx-моделям
- Зачем:
  - в README не было рекомендаций по выбору между gigaam-v3 и parakeet-v3.
- Что:
  - добавлена таблица ONNX-моделей с RTFx, языками и пунктуацией.
  - пример parakeet-v3 изменён на --language ru.
  - рекомендации: gigaam-v3 для скорости, parakeet-v3 для пунктуации.
- Проверка:
  - uv run pytest -q (172 passed).
2026-04-25 23:16:13 +03:00
ddadmin 854bf55145 docs: задокументировать onnx-бэкенд в README, CLI-help и ADR-005
- Зачем:
  - пользователь должен знать о --device onnx и поддерживаемых моделях.
- Что:
  - CLI help: добавлен onnx в список устройств.
  - README: секция примеров, таблица платформ, device-aware дефолты.
  - ADR-005: результаты parakeet-v3 --language ru, уточнённые рекомендации.
- Проверка:
  - uv run pytest -q (172 passed).
  - uv run transcribe --help показывает onnx.
2026-04-25 23:13:41 +03:00
ddadmin 53142fd341 docs(adr): ADR-005 — результаты эксперимента с onnx-asr бэкендом
- Зачем:
  - задокументировать результаты сравнения gigaam-v3 vs OpenVINO на CPU.
- Что:
  - таблица скорости по 3 файлам (3-5x ускорение).
  - сравнение качества русской речи с GPU faster-whisper.
  - решение: оставить бэкенд как экспериментальный (--device onnx).
- Проверка:
  - просмотр docs/adr/005-onnx-asr-backend.md.
2026-04-25 22:31:51 +03:00
ddadmin b1cbdc3e0b fix(onnx-asr): исправлены баги интеграции после smoke-теста
- Зачем:
  - при smoke-тесте выявлены расхождения между onnx-asr API и мок-тестами.
- Что:
  - убран deprecated cpu_preprocessing из load_model.
  - sample_rate передан как keyword-аргумент в recognize().
  - исправлены имена полей SegmentResult: start_ts→start, end_ts→end.
  - добавлен device "onnx" в DEVICE_DEFAULTS и _VALID_DEVICES.
- Проверка:
  - uv run pytest -q (172 passed).
  - uv run transcribe file.mp4 --device onnx --model gigaam-v3.
2026-04-25 21:48:54 +03:00
ddadmin 7d39ab908b test: добавить скрипт сравнения onnx-asr и OpenVINO бэкендов
- Зачем:
  - Экспериментальное сравнение скорости и качества транскрипции на реальных аудиофайлах.
- Что:
  - скрипт compare_backends.py запускает транскрипцию одного файла через gigaam-v3, parakeet-v3 и OpenVINO medium.
  - выводит время, количество сегментов и превью текста для каждого.
- Проверка:
  - python scripts/compare_backends.py /path/to/audio.mp3
2026-04-25 21:29:08 +03:00
ddadmin 79dbd170ce feat(onnx-asr): зарегистрировать бэкенд для --device onnx
- Зачем:
  - Бэкенд должен быть доступен через CLI по --device onnx.
- Что:
  - в backends/__init__.py добавлена ветка device == "onnx" с ленивым импортом OnnxAsrBackend.
  - при отсутствии onnx-asr выдаётся понятная ошибка.
  - добавлен тест TestBackendRegistration.
- Проверка:
  - uv run pytest -v (172 passed)
2026-04-25 21:25:28 +03:00
ddadmin 9e04dc8c25 feat(onnx-asr): реализовать transcribe с сегментацией через VAD
- Зачем:
  - Основной метод бэкенда — транскрипция аудиофайла в сегменты с временными метками.
- Что:
  - метод transcribe декодирует аудио через faster_whisper.decode_audio, затем вызывает model.recognize() с VAD-сегментацией.
  - каждый VAD-сегмент преобразуется в проектную структуру Segment.
  - поддержка колбэков on_segment, on_status.
  - написаны 4 теста: сбор сегментов, вызов on_segment, передача языка, обработка пустого аудио.
- Проверка:
  - uv run pytest tests/test_onnx_asr.py -v (14 passed)
2026-04-25 21:24:31 +03:00
ddadmin d9c9aefdb3 feat(onnx-asr): реализовать create_model с Silero VAD
- Зачем:
  - onnx-asr модель должна создаваться с квантизацией и VAD для разбивки аудио на сегменты.
- Что:
  - метод create_model вызывает onnx_asr.load_model с квантизацией и cpu_preprocessing=True.
  - подгружается Silero VAD, прикрепляется к модели через with_vad.
  - написаны 3 теста: проверка аргументов load_model, загрузка VAD, передача fp16.
- Проверка:
  - uv run pytest tests/test_onnx_asr.py -v
2026-04-25 21:22:02 +03:00
ddadmin f25a546754 feat(onnx-asr): реализовать ensure_model_available
- Зачем:
  - Бэкенд должен резолвить алиасы моделей и сохранять compute_type для дальнейшего использования.
- Что:
  - добавлен конструктор __init__ с полями actual_compute_type, _resolved_model_id, _vad.
  - метод ensure_model_available валидирует алиас и возвращает идентификатор модели onnx-asr.
  - написаны 3 теста на резолвинг и сохранение compute_type.
- Проверка:
  - uv run pytest tests/test_onnx_asr.py -v
2026-04-25 21:20:35 +03:00
ddadmin a3d0213cb3 feat(onnx-asr): добавить скелет бэкенда с разрешением алиасов моделей
- Зачем:
  - onnx-asr бэкенд должен распознавать короткие алиасы (gigaam-v3, parakeet-v3) и raw-имена (nemo-canary-1b-v2).
- Что:
  - создан файл backends/onnx_asr.py с MODEL_ALIASES и классом OnnxAsrBackend.
  - метод _resolve_model: преобразует алиасы, пропускает raw-имена, выдаёт ValueError для неизвестных.
  - написаны 4 теста на разрешение алиасов.
- Проверка:
  - uv run pytest tests/test_onnx_asr.py::TestModelAliases -v
2026-04-25 21:19:33 +03:00
ddadmin b5c1da24ce build(deps): добавлена зависимость onnx-asr[cpu,hub]>=0.11.0
- Зачем:
  - onnx-asr бэкенд для транскрипции (Parakeet/GigaAM) даёт 30-90x realtime на CPU.
- Что:
  - добавлен пакет onnx-asr[cpu,hub]>=0.11.0 в зависимости проекта.
  - uv.lock обновлён.
- Проверка:
  - uv run python -c "import onnx_asr; print(onnx_asr.__version__)"
2026-04-25 21:17:24 +03:00
ddadmin 82596187a4 docs(superpowers): добавлены spec и план для onnx-asr бэкенда
- Зачем:
  - задизайнить эксперимент с Parakeet/GigaAM через onnx-asr как третий бэкенд.
- Что:
  - spec: архитектура, модель-алиасы (gigaam-v3, parakeet-v3), API, регистрация.
  - plan: 8 задач TDD: зависимость → скелет → ensure → create → transcribe → регистрация.
- Проверка:
  - gh pr diff, ревью spec/plan.
2026-04-25 21:09:43 +03:00
ddadmin 0b5703a0e3 docs(adr): ADR-005 — Parakeet TDT оценён и отклонён для русских ИТ-встреч
- Зачем:
  - зафиксировать в master результат эксперимента с Parakeet-бэкендом:
    что проверяли, какие цифры получили, почему оставили Whisper как дефолт.
    Знания доступны, код — в экспериментальной ветке feature/parakeet-backend.
- Что:
  - docs/adr/005-parakeet-evaluation.md — полный контекст решения: гипотеза,
    методология, метрики скорости (Parakeet 2.7x быстрее, -35% RAM),
    качество (Summary utility 2-3/5 vs 4/5 у Whisper), систематические
    проблемы модели на тихой русской речи, VAD-тюнинг не помог, условия
    пересмотра решения в будущем (английский / live-captioning / русские
    specialized-модели через onnx-asr).
  - docs/gpu.md — короткая заметка под «Потенциальные направления развития»
    со ссылкой на ADR-005.
- Проверка:
  - cat docs/adr/005-parakeet-evaluation.md.
  - grep -A5 "Parakeet TDT — проверено" docs/gpu.md.
  - ветка feature/parakeet-backend сохранена и не удаляется.
2026-04-19 01:26:20 +03:00
ddadmin 2c1d798eeb Revert "docs(specs): дизайн-спек Parakeet backend"
This reverts commit cb6c1d7728.
2026-04-18 20:32:48 +03:00
ddadmin cb6c1d7728 docs(specs): дизайн-спек Parakeet backend
- Зачем:
  - зафиксировать дизайн экспериментального бэкенда до имплементации; гипотеза — Parakeet TDT v3 быстрее/качественнее Whisper на Intel/AMD встройках.
- Что:
  - добавлен docs/superpowers/specs/2026-04-18-parakeet-backend-design.md после 3 раундов adversarial-review.
  - зафиксированы: onnx-asr+Silero VAD как runtime, CPU EP в MVP, --device parakeet, int8/fp32 compute_type, no-fallback политика, long-audio gate с blocker-thresholds (peak RSS ≤4GB, первый status ≤10с, interval ≤30с, offline после первого запуска).
- Проверка:
  - cat docs/superpowers/specs/2026-04-18-parakeet-backend-design.md.
2026-04-18 20:26:56 +03:00
ddadminandClaude Opus 4.6 749ede090c docs(gpu): Quadro M3000M (CC 5.0) — CUDA не работает в CTranslate2 4.x
float16 требует CC ≥ 7.0, float32 падает с ошибкой — пребилды
CTranslate2 4.x не включают sm_50/sm_60. Рекомендация: --device cpu
или --device openvino.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:56:51 +03:00
ddadminandClaude Opus 4.6 59b74f166c docs(gpu): уточнить модель CPU — Intel i7-11800H
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 22:52:17 +03:00
ddadminandClaude Opus 4.6 857267763c feat(cli): --threads для управления CPU-потоками + бенчмарк CUDA compute_type
- Зачем:
  - 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>
2026-03-24 22:49:16 +03:00
Dmitriy DementievandClaude Opus 4.6 8ae74d2748 docs(gpu): потенциальные направления — quality pipeline для OpenVINO, CUDA int8_float32
Зафиксированы два направления развития:
- temperature fallback и фильтры галлюцинаций для OpenVINO бэкенда
- тестирование int8_float32/int8_float16 на CUDA

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 11:00:31 +03:00
Dmitriy DementievandClaude Opus 4.6 248f260005 docs(gpu): CPU int8_float32, сравнение pipeline-ов, CUDA рекомендации
- Добавлена секция 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>
2026-03-24 10:45:17 +03:00
Dmitriy DementievandClaude Opus 4.6 413cb3e6d8 feat(openvino): добавить medium fp16 модель как опцию
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>
2026-03-24 09:48:29 +03:00