Skip to content

feat(asr): трудные места уточняются в фоне — расшифровка готова сразу (0.13.4) - #55

Merged
bglglzd merged 1 commit into
mainfrom
claude/sleepy-wright-nl7ay2
Oct 2, 2026
Merged

bglglzd merged 1 commit into
mainfrom
claude/sleepy-wright-nl7ay2

Conversation

@bglglzd

@bglglzd bglglzd commented Oct 2, 2026

Copy link
Copy Markdown
Owner

Проблема

На шумной записи (19 минут, 3 человека, 23 трудных места) расшифровка шла очень долго, прогресс стоял на 45 %, а MacBook сильно грелся. Причина: второй проход (шумоподавление и Whisper по трудным окнам) и контроль языка выполнялись до сохранения расшифровки. Пользователь всё это время ждал.

Решение: уточнение в фоне

  • Первый проход сразу даёт готовую расшифровку. QualityGuard теперь только распознаёт и составляет план: трудные окна (Hard) и реплики «не того языка» (Lang) вместе с исходными репликами. План пишется в <встреча>/refine.json (core/src/refine.rs).
  • Команда refine_transcript запускается фронтом после расшифровки и обрабатывает места по одному, от худших к лучшим:
    • сначала шумоподавление и Parakeet;
    • если результат всё ещё плохой — быстрый Whisper (transcribe_fast: жадное декодирование, без лишнего прохода определения языка, если язык задан, не больше половины ядер);
    • между местами пауза 150 мс.
  • Правки пользователя не теряются. Каждое улучшение сразу сохраняется в расшифровку. refine::apply_window заменяет только реплики, совпадающие по времени с исходными; поправленные пользователем реплики остаются как есть.
  • События и команды:
    • refine-progress — ход уточнения;
    • cancel_refine — остановка, остаток плана сохраняется;
    • refine_pending — сколько мест осталось и идёт ли уточнение.
  • Интерфейс: плашка «Уточняю трудные места N из M · улучшено K · Остановить», после остановки — «Продолжить». Расшифровка перезагружается по мере улучшений.

Проверка

  • cargo test -p uxo-core — 148 тестов, включая новые refine::*: замена окна с сохранением говорящих, пропуск правленых окон, сохранение и загрузка плана.
  • vitest — 133 теста, tsc без ошибок.
  • cargo check -p memiro: с фичами whisper,diarize,parakeet, только parakeet и без фич.
  • Скриншоты плашки: Windows и Mac, 800×600 и 1120×720, обе темы.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FGrZHurdegVoBPFCPkzJrt


Generated by Claude Code

… (0.13.4)

Второй проход держал расшифровку (прогресс стоял на 45 %, компьютер
грелся): трудные окна и реплики «не того языка» обрабатывались до
сохранения.
- QualityGuard делает только первый проход и копит план уточнения
  (core/src/refine.rs → <встреча>/refine.json: окна + исходные реплики).
- Команда refine_transcript (запускается после расшифровки): по месту
  denoise+Parakeet, при необходимости быстрый Whisper (transcribe_fast:
  жадно, без лишнего определения языка, ½ ядер), пауза между местами;
  каждое улучшение сразу в transcript.json (refine::apply_window меняет
  только реплики, совпадающие по времени с исходными — правки целы).
- События refine-progress, cancel_refine (остаток сохраняется),
  refine_pending; плашка «Уточняю трудные места N из M · Остановить» и
  «Продолжить».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGrZHurdegVoBPFCPkzJrt
@bglglzd
bglglzd merged commit e4fd55f into main Oct 2, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant