Skip to content
SppqqPublic

About

Нативное macOS-приложение для записи, расшифровки и умного разбора лекций в конспекты Obsidian через Gemini и WhisperKit

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

Whisp — лекции превращаются в понятные конспекты

Нативное приложение для записи, расшифровки и разбора лекций на macOS и iPhone.
Записывайте с микрофона или импортируйте готовое аудио, проверяйте результат и сохраняйте конспект в Obsidian.

macOS 26+ iOS 26+ Apple Silicon Swift 5 Public beta Latest release

О проекте

Whisp помогает превратить длинную лекцию в материал, с которым удобно работать. Приложение хранит записи локально, расшифровывает речь через Gemini с резервным локальным распознаванием WhisperKit и создаёт несколько вариантов текста для разных задач.

Проект находится в публичной бета-версии. Его уже можно использовать для личных записей, но перед важной лекцией стоит проверить весь сценарий на коротком аудиофайле.

Возможности

  • запись с выбранного микрофона;
  • дополнительная запись системного звука Mac;
  • импорт готовых аудиофайлов;
  • живая и финальная расшифровка через Gemini;
  • локальный fallback через WhisperKit при проблемах с сетью;
  • продолжение обработки с сохранённых блоков после сбоя;
  • поиск, предметы, теги и библиотека лекций;
  • редактирование результата перед экспортом;
  • Markdown-просмотр во всех текстовых представлениях;
  • режим подготовки к зачёту и тренажёр;
  • экран «Сегодня» с ближайшими занятиями, заданиями и интервальным повторением;
  • экспорт в Obsidian через WebDAV;
  • HTTP- и SOCKS5-прокси;
  • выбор хранения секретов: локальные настройки или macOS Keychain;
  • автоматическая проверка GitHub Releases и загрузка нового DMG;
  • фирменная иконка в Dock и Finder;
  • menu bar и настраиваемые глобальные горячие клавиши.
  • нативная macOS 26+ оболочка с Liquid Glass для навигации, Inspector и управляющих панелей.

После обработки доступны пять представлений:

Режим Для чего нужен
Тетрадь Короткий структурированный конспект
Разбор Подробное объяснение темы и ключевых понятий
К зачёту Вопросы, карточки и типичные ошибки
Стенограмма Чистый текст лекции с таймкодами
Исходный текст Результат распознавания до финальной обработки

Markdown-просмотр поддерживает заголовки, списки, цитаты, Obsidian-callout, вики-ссылки, вложения и распространённые LaTeX-формулы.

Как работает расшифровка

flowchart LR
    A[Микрофон] --> C[M4A-сегменты]
    B[Импорт аудио] --> C
    S[Системный звук — по желанию] --> C
    C --> D{Gemini доступен?}
    D -->|Да| E[Gemini Transcribe]
    D -->|Нет| F[WhisperKit локально]
    F --> G[Дорасшифровка после восстановления сети]
    E --> H[Конспект и стенограмма]
    G --> H
    H --> I[Проверка и ручная правка]
    I --> J[Экспорт в Obsidian]
Loading

Whisp фиксирует границы fallback-интервалов и позволяет позднее заменить локальный вариант облачной расшифровкой. Исходные M4A-файлы сохраняются вместе с сессией.

Быстрый старт

Установка готовой версии

  1. Откройте страницу последнего релиза.
  2. Скачайте файл Whisp-<версия>.dmg.
  3. Откройте образ и перетащите Whisp в папку Applications.
  4. Запустите Whisp из папки «Программы».

Каждый релиз содержит SHA-256 checksum. Сборки с настроенным сертификатом Developer ID проходят notarization Apple. Пока сертификат не настроен, workflow публикует ad-hoc сборку как prerelease; при первом запуске macOS может потребовать нажать приложение правой кнопкой и выбрать «Открыть».

Требования

  • для Mac: Apple Silicon и macOS 26 или новее;
  • для iPhone: iOS 26 или новее;
  • готовый публичный установщик пока выпускается только для macOS; iPhone-клиент собирается из исходников через Xcode;
  • для самостоятельной сборки: полный Xcode 26 или новее и Homebrew.

Самостоятельная сборка

git clone https://github.com/Sppqq/whisp.git
cd whisp
bash scripts/reinstall.sh

Скрипт устанавливает XcodeGen при необходимости, генерирует Xcode-проект, запускает тесты, собирает Release, проверяет подпись и устанавливает приложение в /Applications. При ошибке предыдущая установленная версия сохраняется или восстанавливается.

Не запускайте установщик через sudo. Перед переустановкой завершите активную запись.

Если используется beta-версия macOS, можно явно выбрать совместимый Xcode:

DEVELOPER_DIR="/Applications/Xcode-beta.app/Contents/Developer" bash scripts/reinstall.sh

Лог установки сохраняется в каталоге build.

Первый запуск

  1. Разрешите Whisp доступ к микрофону.
  2. Добавьте один или несколько Gemini API key в настройках.
  3. При необходимости настройте прокси и WebDAV.
  4. Проверьте подключения встроенными кнопками.
  5. Импортируйте короткое аудио и проверьте результат.

Разрешение «Запись экрана и системного звука» требуется только при включённой записи звука приложений. Для импорта файлов и записи одного микрофона оно не нужно.

Обновления

Whisp проверяет GitHub Releases при запуске. На странице «Обновления» в настройках можно отключить автоматическую проверку и выбрать канал стабильных релизов или Beta / prerelease. Там же отображается прогресс загрузки, можно прочитать changelog и скачать новый DMG. После загрузки приложение само откроет образ; останется перетащить Whisp в Applications с заменой. Записи и настройки при обновлении сохраняются.

Проверка начнёт работать после перевода репозитория в публичный доступ: приватный GitHub Releases API требует авторизацию, которой приложение намеренно не запрашивает.

Провайдеры AI

В настройках можно выбрать Google Gemini, OpenAI, Anthropic, xAI, OpenRouter или свой OpenAI-совместимый endpoint. Для OpenAI-совместимых сервисов Whisp использует /chat/completions и /audio/transcriptions; Anthropic используется для генерации конспектов, а расшифровка аудио для него недоступна через официальный API.

Данные и секреты

Записи, расшифровки и конспекты находятся в локальном контейнере Whisp. Отправка в Obsidian выполняется только по команде пользователя через настроенный WebDAV.

В разделе «Хранилище» можно выбрать способ хранения ключей и паролей:

  • Локальные настройки — удобны для ad-hoc сборок, но значения не шифруются отдельно;
  • Связка ключей — защищает значения средствами системы, но после пересборки система может повторно запросить доступ.

При переключении Whisp сначала записывает и проверяет секреты в новом хранилище, затем удаляет старую копию.

В репозитории нет API-ключей, адресов частных серверов, логинов, паролей, пользовательских записей или локальных настроек. Для личного использования рекомендуется создать отдельный Gemini API key с собственными лимитами.

Известные ограничения

  • Mac-версия поддерживает только Apple Silicon, iPhone-версия — устройства с iOS 26+;
  • iPhone-клиент поддерживает облачную расшифровку, опциональный локальный Whisper fallback, WebDAV и Apple Reminders; запись системного звука остаётся функцией Mac;
  • автоматическая фоновая синхронизация библиотеки между Mac и iPhone пока не реализована: обмен выполняется вручную через WebDAV;
  • интерфейс приложения пока доступен на русском языке;
  • для облачной расшифровки пользователь предоставляет собственный Gemini API key;
  • качество конспекта зависит от качества записи и выбранной модели;
  • WebDAV проверен прежде всего со структурой хранилища Obsidian.

Разработка

Проект написан на SwiftUI. Xcode-проект генерируется из project.yml через XcodeGen.

brew install xcodegen
xcodegen generate
open Whisp.xcodeproj

В проекте две схемы: Whisp для Mac и WhispiOS для iPhone. iOS-клиент использует общие модели, Gemini-обработку, Markdown-экспорт и формат локальной библиотеки. Запись системного звука, menu bar, глобальные горячие клавиши и DMG-updater остаются функциями Mac.

Проверка iPhone-сборки без подписи:

xcodebuild -project Whisp.xcodeproj -scheme WhispiOS \
  -destination 'generic/platform=iOS Simulator' \
  CODE_SIGNING_ALLOWED=NO build

Создание DMG:

bash scripts/build_dmg.sh

Без переменных подписи этот скрипт создаёт локальную ad-hoc сборку.

Проверки установщика:

python3 scripts/test_select_xcode.py
python3 scripts/test_reinstall.py

Для локального интеграционного теста можно положить ex.m4a в корень проекта. Файл игнорируется Git, а AudioImportTests использует его без обращения к Gemini.

Выпуск новой версии

GitHub Actions собирает релиз на Apple Silicon runner, запускает XCTest и прикрепляет готовый DMG вместе с checksum к GitHub Release. Если настроены Apple Developer secrets, приложение и DMG подписываются, а образ проходит notarization Apple. Без них создаётся отмеченный prerelease ad-hoc билд.

Перед первым релизом добавьте в Settings → Secrets and variables → Actions:

Secret Значение
APPLE_CERTIFICATE_BASE64 Developer ID Application certificate в формате .p12, закодированный в Base64
APPLE_CERTIFICATE_PASSWORD Пароль файла .p12
APPLE_SIGNING_IDENTITY Полное имя сертификата Developer ID Application
APPLE_TEAM_ID Team ID аккаунта Apple Developer
APPLE_ID Apple ID для notarization
APPLE_APP_SPECIFIC_PASSWORD Пароль приложения для notarization

В репозитории используются две ветки:

  • dev — prerelease-канал. Каждый push автоматически собирает GitHub Release с версией вида v0.1.2-alpha.1; повторные сборки увеличивают номер alpha. RC запускается вручную через Actions → Release Whisp, выбрав канал rc.
  • main — стабильный канал. После merge изменений из dev запустите workflow вручную на main с каналом stable. Если поле версии оставить пустым, patch/minor/major выбирается в bump, а notes объединяют Unreleased и все changelog-секции новее предыдущего стабильного тега.

Для prerelease достаточно отправить изменения:

git push origin dev

Для стабильного выпуска откройте Actions → Release Whisp → Run workflow, выберите ветку main, канал stable и нужный тип увеличения версии. Явную версию без v можно указать в поле version.

MARKETING_VERSION в project.yml остаётся версией исходного проекта; CI передаёт вычисленную SemVer в xcodebuild, поэтому alpha/RC не требуют ручного редактирования файла.

Для pull request-ов в main и dev workflow PR test build генерирует Xcode-проект, запускает тесты и проверяет Debug-сборки macOS и iPhone. Этот check нужно включить как required status check в Branch protection rules целевых веток.

Структура проекта

Whisp/
├── App/           Точка входа и сцены SwiftUI
├── Models/        Сессии, сегменты, настройки и состояния
├── Services/      Аудио, Gemini, WhisperKit, WebDAV и экспорт
├── Utilities/     Форматирование и часы записи
├── ViewModels/    Состояние приложения и сценарии
└── Views/         Запись, библиотека, проверка и настройки

WhispTests/        Модульные и регрессионные тесты
WhispiOS/          iPhone-приложение, мобильная запись и интерфейс
scripts/           Сборка, тестирование и безопасная установка
project.yml        Конфигурация XcodeGen

Обратная связь

Если Whisp падает, теряет фрагмент записи или некорректно восстанавливает сессию, создайте issue. Приложите версию системы, модель Mac или iPhone, шаги воспроизведения и обезличенный фрагмент лога. Не публикуйте API-ключи, пароли и содержимое личных лекций.

Сделано для тех, кто хочет слушать лекцию, а не переписывать её.

About

Нативное macOS-приложение для записи, расшифровки и умного разбора лекций в конспекты Obsidian через Gemini и WhisperKit

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages