Skillok Meet#
Рабочее название. Продукт Skillok.
Программа для Windows и macOS. Один путь: записать → расшифровать → получить результат.
Звук встречи записывается по кнопке или добавляется готовым файлом, по кнопке
расшифровывается, а дальше ИИ делает конспект, задачи, ревью или то, что попросите.
Всё можно скопировать и поправить.
Программа ничего не делает сама. Не следит за Zoom, не висит в трее, не запускается
вместе с Windows. Открыли — сделали — закрыли.
Нашего сервера нет. Пользователь вводит свой ключ OpenRouter — и всё. Звук и
заметки лежат у него на диске; наружу уходят только запросы к моделям по его ключу.
Скачать — версия 1.4#
| Система | Файл | Размер |
|---|---|---|
| Windows 10 (сборка 20438+) и 11, 64 бита | SkillokMeet-1.4.0-windows-x64-setup.exe | 30 МБ |
| macOS 13+, Mac на Apple Silicon (M1 и новее) | SkillokMeet-1.4.0-macos-apple-silicon.zip | 36 МБ |
Что нового — в CHANGELOG.md.
Для расшифровки и результатов нужен свой ключ OpenRouter:
расшифровка и ИИ платные, оплата идёт напрямую OpenRouter.
Установка на Windows. Запустите установщик. Он пока не подписан, поэтому Windows
покажет «Windows защитила компьютер» → «Подробнее» → «Выполнить в любом случае».
Установка на Mac. Распакуйте архив и перенесите «Skillok Meet» в «Программы».
Приложение пока не подписано Apple, поэтому при первом запуске macOS его не откроет.
Откройте «Системные настройки» → «Конфиденциальность и безопасность» → внизу
«Skillok Meet заблокировано…» → «Всё равно открыть». При первой записи разрешите
«Микрофон» и «Запись экрана и системного звука» и перезапустите программу.
Контрольные суммы SHA-256 — в CHANGELOG.md.
Как пользоваться#
Меню — кнопка ☰ слева в шапке, как на skillok.org: главная, «Записать встречу»,
«Добавить аудиофайл», все записи с поиском, настройки. На главной — «Записать» и список
записей с поиском.
-
Звук.
- «Записать встречу» открывает экран «Новая запись» с проверкой звука: две живые
полоски — микрофон и звук компьютера, — «слышно» или «тишина»; если устройство не
открылось, там же причина и где дать разрешение. Запись начинается только кнопкой
«Начать запись» — пишется весь звук компьютера (собеседники в Zoom, Google Meet,
Телемосте — где угодно) и микрофон, пока не нажмёте «Остановить». Во время записи на
экране: время записанного звука (паузы не в счёт), живая «волна» последней минуты,
«Микрофон — слышно / тишина», «Звук компьютера — слышно / тишина», сколько занимает
запись, пауза, «Остановить и расшифровать» и «★ Отметить момент» — отметку можно
подписать, она будет видна в расшифровке и на проигрывателе. Если микрофон или
собеседников минуту не слышно, программа скажет об этом. В шапке на любом экране —
метка «Запись 12:34». - Готовый файл — перетащить в окно или «Добавить аудиофайл»: mp3, m4a, wav, aiff, flac,
ogg.
- «Записать встречу» открывает экран «Новая запись» с проверкой звука: две живые
-
Расшифровка — кнопка «Расшифровать». Текст появляется на экране по ходу работы,
сверху вниз, рядом — процент готовности; можно «Отменить». Потом программа
разделяет речь по голосам: «Спикер 1», «Спикер 2»… — и у файла, и у собеседников
в записи (ваш микрофон — всегда «Я»). Если людей нашлось не столько, сколько было,
— «Говорящих: 3» над расшифровкой пересоберёт разбиение за секунду. Часовые и
двухчасовые записи расшифровываются так же. -
Результат — вкладки:
- «Расшифровка» — реплики с временем и говорящим: «Я» и «Спикер 1, 2, 3…».
Имя говорящего можно переименовать: нажмите на него, впишите «Ольга» — имя
сменится во всей записи, в конспекте и задачах; - «Конспект», «Задачи», «Ревью» и «+ Свой запрос» («напиши письмо клиенту по итогам») —
вкладками; у пустой вкладки одна кнопка «Сделать». Ответ ИИ пишется на глазах.
Сверху — «Копировать» (Markdown) и «как текст»; у вкладки — «Править», «Сделать
заново», «Удалить». Галочки задач отмечаются прямо в тексте.Проигрыватель — полоса внизу: играть и пауза, ±15 секунд, скорость до 2×,
«волна» всей встречи (нажать или протянуть — перемотка; на ней отметки), «★» —
отметить текущее место. Нажали на время реплики или отметки — звук с этого места,
звучащая реплика подсвечивается. Пробел — играть и пауза, ←/→ — 5 секунд. - «Расшифровка» — реплики с временем и говорящим: «Я» и «Спикер 1, 2, 3…».
Как это устроено#
«Записать»: звук компьютера ─┐
микрофон ─────┴─► audio/others.wav, audio/me.wav
«Добавить аудио»: файл ──────────► audio/<файл>
«Расшифровать»: дорожки ─► 16 кГц моно ─► куски 6–28 с по паузам ─► OpenRouter: Whisper
(до 4 кусков сразу) │
реплики по ходу — на экран ◄──────┤
▼
реплики ─► отпечаток голоса каждой (WeSpeaker, на компьютере)
─► группы ─► «Спикер 1», «Спикер 2»…
▼
note.md: ## Расшифровка, voices.json
Команда ИИ: note.md ─► OpenRouter: Claude (потоком) ─► note.md: ## Задачи / ## Конспект / …
Запись звука#
Пишутся две дорожки: весь звук компьютера, кроме самого Skillok Meet (голоса
собеседников в любом сервисе встреч — Zoom, Google Meet, Телемост, Teams), и микрофон.
Звук — WAV без сжатия, 16 кГц моно: ровно то, что использует распознавание. Большая
частота точность не поднимает; поднимают полная модель Whisper (по умолчанию), наушники и
заданный язык. Вместе со звуком компьютера в запись попадёт и всё прочее, что звучит во
время встречи (уведомления, музыка); куски без речи при расшифровке отсеиваются.
- Windows 10 (сборка 20438+) и 11 — process loopback в режиме «все процессы, кроме
нашего» (Application loopback sample),
микрофон — WASAPI. - macOS 13+ — ScreenCaptureKit, весь звук экрана без звука своего приложения
(SCStreamConfiguration.capturesAudio),
микрофон — CoreAudio черезcpal. При первой записи macOS спросит «Микрофон» и «Запись
экрана и системного звука»; после второго программу нужно перезапустить. Без него
запишется только микрофон — программа так и скажет. - API Zoom и других сервисов не нужны.
Папка записей выбирается в «Настройках»; при смене все записи переносятся в новую.
Расшифровка — Whisper через OpenRouter#
POST https://openrouter.ai/api/v1/audio/transcriptions, тот же ключ, что для текстовых
моделей. По умолчаниюopenai/whisper-large-v3— точнее turbo; в настройках можно
выбрать быстрее и дешевле.
См. документацию OpenRouter STT.- Файл любой длины режется на куски по паузам: у эндпоинта предел 25 МБ и около минуты
обработки на запрос. Куски без речи не отправляются — это дешевле, и Whisper не
выдумывает фраз на тишине. Такие фразы («Продолжение следует…») дополнительно отсеиваются. - Неудачный кусок повторяется один раз; не распознавшийся остаётся в расшифровке пометкой.
Результаты — Claude через OpenRouter#
- По умолчанию
anthropic/claude-opus-5.5; модель меняется в настройках. - Промпты — файлами в
prompts/: общийbase.mdи по одному на команду. - Все результаты хранятся одной заметкой
note.md, раздел на вкладку. Повтор команды
заменяет её раздел; прежний ответ модель при этом не видит.
Интерфейс — как у skillok.org#
- Бумажный фон, чернильный текст, терракотовый акцент.
- Шрифт iA Writer Quattro S; JetBrains Mono — для правки Markdown и времени.
- Квадратные углы; на экране одна главная кнопка, контурная, остальное — ссылками.
- Токены стиля —
src/styles/tokens.css, копия дизайн-системы Skillok. Новых цветов не
заводим.
Одна колонка. Главная — «Записать» и записи со статусом («Нужно расшифровать»,
«Конспект · Задачи»). Экран записи — шаги «Аудио → Расшифровка → Результат» и вкладки
результатов.
Согласие на запись#
Zoom не показывает участникам, что идёт такая запись. Предупреждать их обязан
пользователь — сказать вслух или написать в чат встречи.
- РФ, 152-ФЗ. Голос — персональные данные, тайная запись запрещена. Если голос
используется для узнавания человека, это биометрия, и нужно письменное согласие
(Консультант). - Отпечатки голоса (с версии 1.2). Чтобы разделить расшифровку на «Спикер 1»,
«Спикер 2»…, программа строит отпечаток голоса каждой реплики — на этом компьютере,
без сети — и сравнивает реплики одной записи между собой. Людей она не узнаёт:
отпечатки ни с чем внешним не сравниваются, имена ставит сам человек переименованием.
Отпечатки лежат рядом с записью (voices.json) и удаляются вместе с ней. Решение
владельца 01.10.2026. Предупреждать участников о записи всё равно нужно; как это
соотносится с требованиями к биометрии — вопрос к юристу, программа его не решает. - ЕС (GDPR) требует уведомления. В ряде штатов США нужно согласие всех сторон.
Почему не через API Zoom#
Проверено и отложено:
- RTMS (живой поток от Zoom): нужен сервер, который принимает поток, и кредиты
Zoom Developer Pack (RTMS). - Облачная запись: план Pro или выше, только встречи, где пользователь хост
(KB0065911).
Её файл можно скачать из Zoom и добавить через «Добавить аудио». - Бот на Meeting SDK: с 2 марта 2026 на встречах чужих аккаунтов нужен токен OBF,
плюс ревью в Marketplace (OBF FAQ).
Android — позже#
Звук Zoom на Android локально не захватить. Системный захват не берёт голосовую связь
(AudioPlaybackCaptureConfiguration),
а микрофон во время звонка отдаёт другим приложениям тишину
(Sharing audio input).
Для Android подходят очные встречи через микрофон и добавление файла.
Разработка#
Нужны Rust (stable) и Node.js. На Windows ещё WebView2 — он уже есть в Windows 10/11.
npm install
./scripts/fetch-models.sh # модель голосов (26 МБ) в models/voices.onnx — один раз
npm run tauri dev # приложение целиком: ядро + интерфейс
npm run dev # только интерфейс в браузере, http://localhost:1420, с заглушкой ядра
npm run typecheck # проверка типов интерфейса
cargo test --workspace # тесты ядра и звука
Запись работает в Windows и macOS; добавление аудио, расшифровка и команды ИИ — везде
(нужен ключ OpenRouter: распознавание и ИИ платные).
Собрать приложение для Mac — разрешения macOS выдаются самому приложению, а не терминалу:
npx tauri build --bundles app
open "src-tauri/target/release/bundle/macos/Skillok Meet.app"
Разбор по голосам на своём файле (печатает, сколько говорящих при разных порогах):
cargo run --release -p meet-voices --example voices -- файл.mp3 0 600 models/voices.onnx
Проба декодера и нарезки на любом файле:
cargo run -p meet-audio --example decode -- путь/к/файлу.m4a
Код под Windows проверяется с Mac так (нужен rustup target add x86_64-pc-windows-msvc):
cargo clippy -p meet-audio --target x86_64-pc-windows-msvc --all-targets
Установщик Windows собирается прямо на Mac (кросс-сборка). Один раз:
brew install llvm nsis, cargo install --locked cargo-xwin; при первой сборке xwin
скачивает MSVC CRT и Windows SDK — это принятие лицензии Microsoft. Дальше:
export LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 # без локали makensis падает с bad_alloc
export PATH="/opt/homebrew/opt/llvm/bin:$PATH" XWIN_ACCEPT_LICENSE=1
npx tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
Готовый установщик — …/x86_64-pc-windows-msvc/release/bundle/nsis/Skillok Meet_<версия>_x64-setup.exe.
Он не подписан: Windows SmartScreen при запуске скажет «Неизвестный издатель» —
«Подробнее» → «Выполнить в любом случае». Подпись — сертификатом Authenticode.
Раскладка:
crates/audio/ звук, без Tauri
pcm.rs формат 16 кГц моно 16 бит, WAV, уровень, приведение частоты
decode.rs чтение mp3, m4a, wav, aiff, flac, ogg (symphonia)
chunker.rs нарезка на куски по паузам, отсев тишины
source.rs источник звука; Replay — звук из памяти для тестов
win.rs Windows: звук компьютера (process loopback) и микрофон
mac.rs macOS: звук компьютера (ScreenCaptureKit) и микрофон (cpal)
src-tauri/src/ ядро на Rust
meetings.rs встречи на диске: meeting.json, note.md, audio/
notes.rs разделы заметки: поставить на место, убрать
transcript.rs реплики и блок «Расшифровка» для заметки
transcribe.rs расшифровка: дорожки → куски → Whisper → реплики
ai.rs команды ИИ над заметкой
openrouter.rs клиент OpenRouter: ключ, распознавание, ответ модели
recorder.rs запись по кнопке: дорожки в WAV
settings.rs настройки; ключ — в хранилище паролей ОС (keyring)
commands.rs команды для интерфейса
src/ интерфейс: HTML/CSS/TS
views/ home — главная, meeting — шаги и вкладки, settings
recording.ts панель записи и метка «идёт запись» в шапке
markdown.ts отображение Markdown, разделы, галочки задач
dev-mock.ts заглушка ядра — только для просмотра в браузере
prompts/ промпты команд ИИ
fixtures/transcripts проверочные расшифровки
Данные: настройки — в папке конфигурации (%APPDATA%\org.skillok.meet), встречи — в
папке данных, подпапка meetings. Путь виден на экране «Настройки».
План работ#
Сделано#
- Каркас Tauri 2, стиль skillok.org, ключ OpenRouter в хранилище паролей ОС.
- «Записать» по кнопке: звук Zoom и микрофон двумя дорожками, пауза, стоп.
- Аудиофайл кнопкой и перетаскиванием.
- «Расшифровать» с ходом работы и отменой.
- Результаты вкладками: «Конспект», «Задачи», «Ревью», свой запрос; копировать,
править, сделать заново, удалить; живые галочки задач. - Состояния без ключа, во время работы и во время записи (задача #9).
Дальше#
- Проверить на Windows с настоящей встречей в Zoom — запись ни разу не запускалась.
- Проверить запись на Mac с настоящей встречей в Zoom.
- Прогнать команды ИИ на проверочных расшифровках настоящей моделью, поправить промпты.
- Прослушивание звука в заметке и переход по времени реплики к месту в записи.
- Добавить аудио к уже существующей встрече.
- Сохранить заметку в репозиторий Skillok (токен доступа, API файлов).
- Поиск по встречам.