anc
Этап 1: запись встречи в Zoom, живая расшифровка и разбор
- crates/audio: захват звука процесса Zoom и микрофона (WASAPI, process
loopback), формат 16 кГц моно, нарезка на куски по паузам с отсевом
тишины, распознавание начала и конца встречи по звуковой сессии Zoom.
- Ядро: запись двух дорожек → Whisper через OpenRouter → расшифровка,
живой конспект раз в три минуты, по окончании — разбор сам; звук
удаляется после разбора, если не включено хранение.
- Контроллер: слежу за Zoom → прошу предупредить участников → пишу;
запись вручную, пауза, стоп; прерванная запись помечается при запуске.
- Трей, уведомления, крестик прячет окно, запуск вместе с Windows.
- Интерфейс: главный экран с карточкой состояния (задача #1), живая
расшифровка и конспект на экране встречи, новые настройки.
- reqwest на системном TLS: под Windows без C-кода ring.
- 67 тестов; код под Windows проверен компиляцией и clippy с Mac,
на Windows не запускался.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
169ce64
30 сентября 2026 г.
source.rs
//! Источник звука: дорожка «я» (микрофон) или «собеседники» (звук Zoom).
//!
//! Источник отдаёт то, что накопилось с прошлого вызова, в формате
//! [`crate::pcm`]. Время звуку ставит тот, кто читает: конец блока — момент
//! чтения. Источник может молчать (захват процесса не шлёт ничего, пока Zoom
//! тих) — это не ошибка, дыру заполнит [`crate::chunker::Chunker`].
use ;
use crateSAMPLES_PER_MS;
/// Звук из памяти в реальном времени (со множителем скорости). Для тестов и
/// для проверки цепочки на машине без Windows.