← На главную

Frigade выкатила Yap — голосовой ввод для macOS 26 с открытым кодом

27.07.2026 18:36 · hackernews

Команда Frigade выкатила Yap — молниеносный голосовой ввод для macOS, который работает в любом месте, где можно печатать. Нажал шорткат, продиктовал, нажал ещё раз — текст оказывается в том поле, с которым ты работал. Никаких аккаунтов, API-ключей, аудио не покидает твой Mac.

Yap сидит в строке меню и ждёт шорткат. По умолчанию это ⌘⇧D, но можно назначить, скажем, только правый Shift — удобно, если палец свободен. После вызова появляется окошко у нижнего края экрана с живой волной и черновиком расшифровки прямо во время речи. Повторный шорткат вставляет готовый текст в активное приложение. Все расшифровки хранятся локально — можно вернуться и скопировать заново.

Установить можно через Homebrew: brew install --cask frigadehq/tap/yap, или просто скачать .dmg из Releases и перетащить иконку в Applications. Билды подписаны и нотаризованы, macOS открывает их без ворчания.

Главное отличие от десятков других диктовщиков в том, что Yap не таскает с собой тяжёлую модель вроде Whisper. Такие модели весят сотни мегабайт, висят в RAM и шустро бегают только на свежих Mac. На Intel они нередко падают или жуют один абзац по 30–60 секунд. К тому же многие инструменты завернуты в Electron и держат в памяти целый браузерный движок ради меню-бара. С macOS 26 всё изменилось: Apple добавила API SpeechAnalyzer и SpeechTranscriber, которые гоняют потоковое распознавание на устройстве силами встроенной модели. Свежий бенчмарк показал 2.12% ошибок на чистом аудио и 4.56% на шумном — против 3.74% и 7.95% у Whisper Small, и работает это примерно втрое быстрее.

Yap не возит свою модель вообще. Это около трёх тысяч строк нативного Swift, 4 MB на диске, открытый код, ноль браузерных движков. В покое приложение занимает около 60 MB памяти и ни разу не лезет в сеть. Внутри Frigade на нём диктуют команды, письма и сообщения в Slack.

Под капотом аудио идёт через AVAudioEngine и буферизируется, пока не поднимется распознаватель — поэтому начало фразы не отрезается. Расшифровка едет через SpeechAnalyzer с включёнными volatile results, что и даёт живое превью. Для локалей, которые новый API не тянет, есть fallback на SFSpeechRecognizer. Вставка — самое хитрое место. Yap копирует результат в буфер обмена, шлёт ⌘V через System Events и потом восстанавливает прежнее содержимое буфера. Приходится выжидать паузу, потому что Chromium-приложения читают буфер асинхронно по нескольку раз, и без задержки вставка ломается. Вся логика завязана на стейт-машину RecordingCoordinator с протокольными зависимостями — её можно гонять в тестах без микрофона.

Приложение работает вне App Store и без App Sandbox, потому что эмуляция нажатий и чтение UI-элемента запрещены песочницей. Так живут все текстовые экспандеры и менеджеры буфера обмена. При первом запуске Yap честно объясняет, зачем просит доступ к микрофону, распознаванию речи, Accessibility (его надо включить руками в Системных настройках) и Automation.

Сборка из исходников — одна команда: git clone, cd yap, ./install.sh. Скрипт сам поставит XcodeGen, соберёт приложение и кинет в /Applications. Локальные сборки подписываются ad-hoc, поэтому после каждого обновления macOS «забывает» выданные разрешения, и вставка перестаёт работать — лечится кнопкой «Reset and re-grant» в настройках. Релизные сборки подписаны нормально, у них такой проблемы нет. Лицензия — MIT. Сделано командой Frigade, которая строит AI-ассистента, встраиваемого прямо в ваш продукт.

Читать оригинал →