Giga Pisar
English
Voice dictation for macOS powered by GigaAM v3 — Sber's open SOTA model for Russian speech recognition. More accurate than Whisper on Russian, adds punctuation and capitalization on its own, and runs fully on-device — audio never leaves your Mac.
Hold a key → speak → release → punctuated text appears wherever your cursor is. In any application.
Download
Download for macOS (dmg, 32 MB, macOS 13.4+, notarized by Apple). Open the image, drag Giga Pisar to Applications, launch. On first launch it offers to download the speech model itself (204 MB, once). That is the only file you need; everything else on the Releases page is sources and the model archive the app fetches on its own.
What's inside
Recognition runs inside the app itself. No Python, no ffmpeg, no Homebrew, no companion server.
main.swift— the menu bar app: push-to-talk key capture, microphone recording, text insertionswift/— the recognition core in Swift:
Features.swift (audio → features), Ort.swift (model inference),
Recognizer.swift (RNN-T decoding), Tokenizer.swift (text assembly),
Audio.swift (wav reading, splitting on pauses)
swift/Brain.swift— the optional brain: a local LLM (bundled llama.cpp)
swift/Chips.swift— the pop-up menu at the cursor: compose / shorten /
vendor/— onnxruntime and the llama.cpp engine, downloaded by the build script (not in the repo)install.sh— puts the model files into~/.giga/model
giga_core.py from
Giga Pisar for Linux.
Both are run on the same recordings by scripts/сверка-swift.py and must
produce identical text.
Menu labels follow the system language: Russian system — Russian labels, anything else — English. Overridable in the menu: Auto / Русский / English.
Performance
Measured on Apple Silicon:
| What | Time | |---|---| | 6-second recording | 0.08 s | | 30-second recording (split on pauses) | 0.47 s | | model load at startup | 0.22 s |
The app weighs 97 MB: 71 is the onnxruntime library (universal, Apple Silicon and Intel in one file), another 25 is the bundled llama.cpp engine for the optional brain. The recognition model adds 309 MB. About 450 MB resident in memory — plus the LLM, but only while it is actually loaded.
Install
git clone <this-repo>
cd giga-app
./install.sh # model into ~/.giga/model (204 MB download)
./build.sh # builds and installs "Giga Pisar.app" into Applications
open "/Applications/Giga Pisar.app"
Building needs Xcode or Command Line Tools. Nothing else.
Or grab the ready-made app: GigaPisar.dmg, drag to Applications, open — on first launch it offers to download the speech model itself (204 MB, once; it survives every update in ~/.giga/model).
You can also build a self-contained app with the model embedded:
./build.sh --with-model # ~390 MB, no install.sh needed
The app is signed with a Developer ID certificate and notarized by Apple (since 3.3): download, drag to Applications, open. No security warnings, no extra steps.
First run
A welcome window walks you through the two permissions, with live checkmarks (also available later via "Permissions…" in the menu):
- Microphone — to record your voice
- Accessibility — to insert text (pressing ⌘V for you)
The push-to-talk key needs no permission at all: macOS guards the content of what you type, and modifier keys (⌘/⌥/⌃/Fn) aren't content. The app tracks only those — it cannot see your keystrokes even in principle. (Versions up to 2.1 asked for Input Monitoring for this; if you granted it back then, you can safely remove that entry in System Settings.)
If a toggle is on but nothing works, the permissions database has a stale entry. Reset it:
tccutil reset Accessibility ru.panda.giga
(same for Microphone), then let the app request access again.
Usage
- Hold right ⌘ (configurable in the menu) → speak → release → text is inserted
- Menu bar icon: waveform — ready; red dancing — recording; dots — transcribing
- Click the icon for: key selection, menu language, launch at login, the brain
- Wave near cursor — a small floating pill with an equalizer animation
- Long dictations are split on pauses between phrases and stitched back together
- The last dictation always stays on the clipboard — paste it again anywhere with ⌘V
The brain (optional)
Dictation is instant and raw by default. Pick a local LLM in the menu ("Pisar's brain") and it will polish dictated text on demand — strictly on-device, like everything else:
- By voice: end the dictation with a plain-language command —
- Over selected text: select any text in any app, hold the dictation
- By menu (off by default, switch on in the Giga menu): after a raw
- Models download right from the menu: GigaChat 3.1 Lightning by Sber
- The engine is a bundled llama.cpp, Apple Silicon only. The model loads on
- If the brain stalls or fails, the raw text is inserted anyway — dictation
Updates
The menu shows the current version and a "Check for updates…" item. The app asks GitHub/GitFlic every few hours whether a newer release exists — only the version number travels over the network. When one is out, click "Update": the app downloads it (percent in the menu bar), verifies the signature, replaces itself and relaunches. Nothing is ever installed without the click.
Limitations
- Built for Russian — including English words sprinkled into Russian speech:
- Internet is needed once, to download the model; offline after that
Credits
- GigaAM — the recognition model, SberDevices (MIT)
- Vitaliy Kuzmenko — the live voice wave (real loudness metering)
License
MIT
Русский
Диктовка голосом для macOS на модели GigaAM v3 от Сбера — открытой SOTA-модели распознавания русской речи. Точнее Whisper на русском, сама расставляет пунктуацию и заглавные, работает полностью локально — звук не покидает твой компьютер.
Зажал клавишу → говоришь → отпустил → текст с пунктуацией появился там, где курсор. В любом приложении.
Скачать
Скачать для macOS (dmg, 32 МБ, macOS 13.4+, нотаризовано Apple). Открыл образ, перетащил Гига Писаря в Программы, запустил. При первом запуске приложение само предложит скачать модель распознавания (204 МБ, один раз). Это единственный нужный файл: остальное на странице релизов, это исходники и архив модели, который приложение качает само.
Что внутри
Распознавание работает внутри самого приложения. Ни питона, ни ffmpeg, ни Homebrew, ни какого-либо сервера рядом.
main.swift— приложение в строке меню: перехват клавиши-рации,
swift/— ядро распознавания на Swift:
Features.swift (звук → признаки), Ort.swift (запуск модели),
Recognizer.swift (декодирование RNN-T), Tokenizer.swift (сборка текста),
Audio.swift (чтение wav, нарезка по паузам)
swift/Brain.swift— мозг по желанию: локальная нейронка (вложенный
swift/Chips.swift— менюшка у курсора: собрать мысль / сократить /
vendor/— onnxruntime и движок llama.cpp, качаются сборкой сами (в репозиторий не входят)install.sh— кладёт файлы модели в~/.giga/model
giga_core.py из
Гига Писаря для Linux.
Оба гоняются на одних записях скриптом scripts/сверка-swift.py и должны
выдавать один и тот же текст.
Надписи в меню подстраиваются под язык системы: русская система — русские, любая другая — английские. В меню можно и принудительно: Авто / Русский / English.
Сколько работает
Замеры на Apple Silicon:
| Что | Время | |---|---| | запись 6 секунд | 0,08 с | | запись 30 секунд (режется по паузам) | 0,47 с | | загрузка модели при запуске | 0,22 с |
Приложение весит 97 МБ: 71 — библиотека onnxruntime (универсальная, Apple Silicon и Intel в одном файле), ещё 25 — вложенный движок llama.cpp для мозга. Модель распознавания — ещё 309 МБ. В памяти держит около 450 МБ, плюс нейронка мозга — но только пока она реально загружена.
Установка
git clone <этот-репозиторий>
cd giga-app
./install.sh # модель в ~/.giga/model (204 МБ качается)
./build.sh # собирает и ставит «Giga Pisar.app» в Программы
open "/Applications/Giga Pisar.app"
Для сборки нужен Xcode или Command Line Tools. Больше ничего ставить не надо.
Либо возьми готовое приложение: GigaPisar.dmg, скачал, перетащил в Программы, открыл — модель распознавания оно предложит скачать само (204 МБ, один раз; дальше она живёт в ~/.giga/model и переживает все обновления).
Можно собрать самодостаточное приложение, с моделью внутри:
./build.sh --with-model # получится около 390 МБ, install.sh не нужен
Приложение подписано сертификатом Developer ID и нотаризовано Apple (начиная с 3.3): скачал, перетащил в Программы, открыл. Никаких предупреждений безопасности и лишних шагов.
Первый запуск
Окно первого запуска проведёт по двум разрешениям, с живыми галочками (потом открывается через «Доступы…» в меню):
- Микрофон — записывать голос
- Универсальный доступ — вставлять текст (нажимать ⌘V за тебя)
Клавиша-рация не требует разрешений вовсе: macOS охраняет содержимое набора, а модификаторы (⌘/⌥/⌃/Fn) содержимым не считаются. Приложение следит только за ними — твои нажатия букв оно не видит даже в принципе. (Версии до 2.1 просили для этого «Мониторинг ввода»; если выдавал его тогда — можешь спокойно убрать эту строчку в настройках.)
Если тумблер включён, а не работает — в базе разрешений битая запись. Лечится так:
tccutil reset Accessibility ru.panda.giga
(и то же для Microphone), после чего дать приложению запросить доступ заново.
Использование
- Зажми правый ⌘ (клавиша меняется в меню) → говори → отпусти → текст вставится
- Иконка в строке меню: волна — готова; красная пляшет — запись; точки — распознаёт
- Меню по клику: выбор клавиши, язык меню, автозапуск при входе, мозг
- Волна у курсора — во время диктовки рядом с текстовой кареткой появляется
- Длинные диктовки режутся по паузам между фразами и склеиваются
- Последняя диктовка всегда остаётся в буфере обмена — вставляй её ещё раз
Мозг Писаря (по желанию)
По умолчанию диктовка мгновенная и сырая. Но можно выбрать в меню локальную нейронку («Мозг Писаря») — и она будет причёсывать надиктованное по твоей команде. Полностью локально, как и всё остальное:
- Голосом: закончи диктовку командой обычными словами —
- Над выделенным текстом: выдели любой текст в любом приложении, зажми
- Менюшкой (по умолчанию выключена, включается в меню Гиги): после
- Модели качаются прямо из меню: GigaChat 3.1 Lightning от Сбера
- Движок — вложенный llama.cpp, только Apple Silicon. Нейронка грузится
- Если мозг завис или упал — вставится сырой текст: диктовка не имеет
Обновления
В меню видна текущая версия и пункт «Проверить обновления…». Раз в несколько часов приложение спрашивает GitHub/GitFlic, не вышла ли новая версия — по сети уходит только номер версии. Вышла — жми «Обновить»: скачает (проценты в строке меню), проверит подпись, подменит себя и перезапустится. Без клика само ничего не ставит.
Ограничения
- Заточено под русский — включая английские слова внутри русской речи:
- Интернет нужен один раз — скачать модель, дальше офлайн
Благодарности
- GigaAM — модель распознавания, SberDevices (MIT)
- Виталий Кузьменко — живая волна от настоящей громкости голоса
Лицензия
MIT