Приложение диктовки, работающее без интернета

Облачная диктовка падает вместе с сетью. Keebye распознаёт речь на устройстве: без интернета, звук остаётся на Mac, сбои сети не мешают.

Teodor Deleanu10 июля 2026 г.Чтение: 6 мин.

Некоторые жалобы всплывают только тогда, когда что-то ломается, поэтому их легко недооценивать, пока это не случилось с вами: облачная диктовка зависит от сети. Сбой у провайдера — и ваша клавиша диктовки не может ничего. Отвалившийся Wi-Fi в отеле — и фраза исчезает в крутящемся индикаторе. Самолёт. Туннель под железной дорогой. VPN, пересогласовывающийся ровно в неподходящий момент. Это не дефект одного продукта; это и означает зависеть от обращения к серверу и обратно.

Жестокость в том, что именно отказывает. Если ляжет ваше приложение для заметок, вы откроете текстовый файл. Если ляжет диктовка, вы теряете способ ввода — то, вокруг чего вы выстроили мышечную память, посреди фразы, обычно пока руки были заняты чем-то другим. А ведь ровно поэтому вы и диктовали.

Под жалобой на доступность лежит вопрос приватности: покидает ли ваш голос машину? В облачном пути транскрипции записи того, как вы думаете вслух, — имена клиентов, невыпущенные функции, проблема безопасности, которую вы описываете коллеге, — едут в чужую инфраструктуру, чтобы стать текстом. Этот путь также может зависеть от сессий, аккаунтов и доступности сервиса, которые вам не подконтрольны.

Ответ Keebye на это я построил раньше, чем сформулировал его как функцию, потому что моё собственное требование было прямолинейным: оно должно работать с выключенным Wi-Fi. Вот как это выглядит на деле и чего это стоит.

Почему облачная диктовка падает до нуля

Механику уровня категории стоит проговорить, потому что она объясняет, почему эта жалоба никогда не исчезает полностью, какими бы хорошими ни становились продукты.

В облачном цикле диктовки как минимум четыре звена: захватить звук на вашей машине, отправить его на сервер, выполнить там вывод, отправить текст обратно. Каждое звено — зависимость: ваша сеть, их сеть, их слой аутентификации, их мощности, их аптайм. Обычно цепочка в порядке. Но когда ломается любое звено, ломается весь цикл — и ломается до нуля. Не «медленнее», не «менее точно» — к вашему курсору не приходит ничего. Деградация была бы терпима; диктовка деградирует до тишины.

Провайдеры могут упорно закладываться против этого, но они не могут починить звенья, которыми не владеют: роутер в отеле, перелёт, корпоративный VPN, инцидент на магистрали между вами и ними. Инструмент, чья доступность зависит от нескольких систем, отказывает, когда недоступна любая из них.

Что происходит, когда откатываться не от чего

Архитектура Keebye отвечает на этот вопрос, убирая его. Распознавание речи работает полностью на устройстве: модели ONNX, локальный вывод, на кремнии вашего собственного Mac. В пути диктовки ноль сетевых вызовов. Не «мы их минимизируем», не «мы их пакуем» — ноль. Телеметрии тоже нет. Никакой. Когда вы удерживаете клавишу и говорите, ни один пакет не покидает машину от вашего имени.

Хочу подчеркнуть архитектурный момент, потому что в нём разница между этим и «офлайн-режимом». Офлайн-режим — это запасной вариант: обычный путь идёт в облако, а когда облако недостижимо, управление берёт урезанный локальный путь — если приложение вовремя заметит, если локальный путь поддерживается, если передача сработает посреди фразы. У Keebye такой передачи нет, потому что нет облачного пути, от которого передавать. Локальный вывод — не запасной план; он единственный. Сбой выше по течению не может его сломать по той же причине, по которой отключение электричества в другой стране не погасит вашу настольную лампу. Иммунитет по конструкции, а не по запасному варианту.

Здесь же без всякой страницы настроек получает ответ и более тихая жалоба. Ваш звук никогда не покидает машину — не «зашифрован при передаче», не «обезличен», а просто никогда не отправлен, потому что отправлять его некуда. Если вы включите историю диктовки, храниться будет только текст, в локальной базе SQLite на вашем собственном диске. (Эта история — отдельный сюжет про удобство, та самая повторяющаяся жалоба «куда делась моя диктовка», которую мы разобрали в статье ваша диктовка не должна просто исчезать.) А хрупкость аккаунтов и сессий исчезает вместе с аккаунтами: в пути диктовки нет облачной сессии, которая могла бы истечь, а значит, между вами и работающей горячей клавишей не стоит повторный вход.

Единственный раз, когда интернет всё же нужен

Обязательная честность, сказанная прямо: модели должны как-то попасть на вашу машину. При первом запуске Keebye загружает свою речевую модель — примерно 700 МБ для английского движка и около 1,3 ГБ, если вы включите многоязычный. Это настоящая загрузка, один раз на движок, и интернет для неё нужен.

Дальше модели живут на диске, и транскрипция работает против них локально, есть сеть или нет, пока вы их не удалите или не замените. Но если этот первый запуск случится в самолёте, вам не повезло до самой посадки — сделайте настройку до поездки, а не во время неё. Пусть лучше вы услышите это от меня, чем обнаружите над Атлантикой.

Вопрос точности, честный ответ

Загрузка — мелкая оговорка. Вот оговорка покрупнее, потому что инструменты на устройстве любят её пропускать.

Крупнейшие облачные модели могут быть точнее модели на устройстве. У модели, занимающей серверную стойку, есть ёмкость, которой нет у файла на 700 МБ, и делать вид, что это не так, значило бы оскорбить ваш интеллект. Что я скажу — и в чём убеждён, прожив с обоими вариантами: разрыв сильно сузился, а главное, характер отказов различается по своей природе. Худший день модели на устройстве — недослышанное слово, которое вы поправите. Худший день облачной модели — ноль на выходе, потому что её точность умножается на её доступность, а доступность — это тот член уравнения, который в поезде обращается в ноль. Какой тип отказа вам ближе, зависит от вашего дня; в моём слишком много поездов.

Сегодня это только macOS и ранний доступ. Сборки под Windows нет, и есть шероховатости, которые подразумевает ранний доступ. Если у вас всё построено вокруг Windows, честный ответ такой: Keebye пока не может вам помочь.

Если вы взвешиваете это против инструмента, которым уже пользуетесь, страницы сравнения — беспристрастная версия этого аргумента. Keebye vs Superwhisper сравнивает два продукта с путями транскрипции на устройстве; Keebye vs Wispr Flow разбирает решение «локально против облака». А если альтернатива, которую вы взвешиваете, — встроенная в macOS диктовка, то голосовая диктовка для Mac описывает, что встроенное средство делает хорошо и в чём Keebye отличается.

Доступность — это функция

Категория диктовки годами конкурировала процентами точности, и точность важна. Но жалоба, которая на самом деле заставляет людей менять инструмент, редко звучит как «оно один раз меня недослышало». Она звучит как «оно снова перестало работать, я не понимаю почему, и починка потребовала куда-то войти». Доступность — скучная, негламурная доступность — это функция, которую замечаешь только как отсутствие.

Чтобы сделать способ ввода таким же надёжным, как клавиатура, нужно дать ему тот же список зависимостей, что у клавиатуры: машина перед вами и больше ничего. В этом вся конструкция.

Keebye находится в раннем доступе для macOS. Начните бесплатный пробный период ниже, выполните загрузку при первом запуске, пока у вас ещё есть интернет, а потом въезжайте в туннель — или просто выключите Wi-Fi — и продиктуйте ту же фразу ещё раз.

Продолжайте диктовать, когда сеть отваливается

Начните бесплатный пробный период, один раз загрузите модель и проверьте тот же промпт с выключенным Wi-Fi.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Читать дальше