skillok meeting
ad47f897f99f8450c300100150f8c07c6061d85a
Перейти к файлу
Код
meeting cratesaudiosrclib.rs
anc Ядро: встреча = заметка Markdown, всё по кнопке - Убрана автоматика: слежение за Zoom, окно согласия, трей, уведомления, автозапуск, живая расшифровка, разбор по JSON-схеме. - Встреча — note.md и дорожки звука; правка, дописывание, переименование, удаление. - «Добавить аудио»: чтение mp3, m4a, wav, aiff, flac, ogg (symphonia), потоковое приведение к 16 кГц моно. - «Расшифровать»: нарезка по паузам с обрезкой тишины в начале куска, до 4 кусков сразу, повтор, пометка нераспознанного, блок «Расшифровка». - Команды ИИ над заметкой: «Конспект», «Задачи», «Ревью», свой запрос; промпты файлами в prompts/. - «Записать» по кнопке: дорожки Zoom и микрофона в WAV, пауза, стоп. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> ad47f89 30 сентября 2026 г.
lib.rs
//! Звук встречи: захват, чтение файлов, формат и нарезка на куски для
//! распознавания. Всё, что не зависит от Windows, проверяется тестами на любой
//! машине; сам захват — в модуле [`win`] и собирается только под Windows.

pub mod chunker;
pub mod decode;
pub mod pcm;
pub mod source;

#[cfg(windows)]
pub mod win;

/// Микрофон и звук процесса Zoom. Вне Windows — ошибка «только в Windows».
pub fn open_microphone() -> Result<Box<dyn source::Capture>, source::CaptureError> {
    #[cfg(windows)]
    {
        Ok(Box::new(win::Microphone::open()?))
    }
    #[cfg(not(windows))]
    {
        Err(source::CaptureError::Unsupported)
    }
}

pub fn open_process_loopback(_pid: u32) -> Result<Box<dyn source::Capture>, source::CaptureError> {
    #[cfg(windows)]
    {
        Ok(Box::new(win::ProcessLoopback::open(_pid)?))
    }
    #[cfg(not(windows))]
    {
        Err(source::CaptureError::Unsupported)
    }
}

/// Процесс Zoom, который сейчас выводит звук (идёт встреча), если он есть.
/// Вне Windows — `None`.
pub fn active_zoom_process() -> Option<u32> {
    #[cfg(windows)]
    {
        win::active_zoom_process()
    }
    #[cfg(not(windows))]
    {
        None
    }
}

/// Запись встреч возможна на этой машине.
pub const CAPTURE_SUPPORTED: bool = cfg!(windows);