Нативное приложение для записи, расшифровки и разбора лекций на macOS и iPhone.
Записывайте с микрофона или импортируйте готовое аудио, проверяйте результат и сохраняйте конспект в Obsidian.
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]
Whisp фиксирует границы fallback-интервалов и позволяет позднее заменить локальный вариант облачной расшифровкой. Исходные M4A-файлы сохраняются вместе с сессией.
- Откройте страницу последнего релиза.
- Скачайте файл
Whisp-<версия>.dmg. - Откройте образ и перетащите Whisp в папку Applications.
- Запустите 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.
- Разрешите Whisp доступ к микрофону.
- Добавьте один или несколько Gemini API key в настройках.
- При необходимости настройте прокси и WebDAV.
- Проверьте подключения встроенными кнопками.
- Импортируйте короткое аудио и проверьте результат.
Разрешение «Запись экрана и системного звука» требуется только при включённой записи звука приложений. Для импорта файлов и записи одного микрофона оно не нужно.
Whisp проверяет GitHub Releases при запуске. На странице «Обновления» в настройках можно отключить автоматическую проверку и выбрать канал стабильных релизов или Beta / prerelease. Там же отображается прогресс загрузки, можно прочитать changelog и скачать новый DMG. После загрузки приложение само откроет образ; останется перетащить Whisp в Applications с заменой. Записи и настройки при обновлении сохраняются.
Проверка начнёт работать после перевода репозитория в публичный доступ: приватный GitHub Releases API требует авторизацию, которой приложение намеренно не запрашивает.
В настройках можно выбрать 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-ключи, пароли и содержимое личных лекций.