Я перепробовал все приложения для голосового ввода на macOS. Стандартную диктовку Apple, платные решения с подписками, open-source проекты. И каждый раз натыкался на одну и ту же проблему: ты говоришь, а потом обнаруживаешь, что часть текста потерялась. Или что приложение зависло. Или что нужен интернет, а его нет. Поэтому я написал своё.
Dictator — бесплатное macOS-приложение для диктовки. Зажимаешь клавишу, говоришь, отпускаешь — текст вставляется туда, где стоит курсор. В любом приложении. Работает офлайн. Без подписок. Скачать можно здесь.
Проблема: диктуешь — а текст теряется
Голосовой ввод на Mac звучит просто. На практике — минное поле.
Стандартная диктовка macOS периодически «отваливается» посередине длинного текста. Ты этого не видишь — индикатор записи горит, ты продолжаешь говорить. А потом смотришь: половины нет. Десять минут работы — в мусорку.
Платные приложения работают стабильнее, но каждое требует подписку $10-15 в месяц за то, что по сути — обёртка над тем же Whisper API. И все они зависят от интернета: пропало соединение → пропала транскрипция.
Я перепробовал штук десять разных решений и понял: ни одно не решает задачу полностью. Либо ненадёжно, либо дорого, либо неудобно.
Два критерия: надёжность и скорость
Когда я начал проектировать Dictator, первым делом определил два принципа, которые важнее всего остального:
Надёжность. Если ты нажал кнопку и начал говорить — текст должен быть распознан. Неважно, есть интернет или нет. Неважно, заснул ли Mac и проснулся. Неважно, переключились ли Bluetooth-наушники. Текст. Должен. Быть.
Скорость. Между тем как ты отпустил клавишу, и тем как текст появился — должны пройти секунды, а не десятки секунд. Иначе диктовка теряет смысл: быстрее было бы напечатать.
Всё остальное — пресеты, мультиязычность, хранение записей — это удобство. А надёжность и скорость — это фундамент, без которого удобство не имеет значения.
Решение: параллельные движки
Ключевая идея, до которой я дошёл не сразу — параллельный запуск двух движков распознавания.
В Dictator три режима транскрипции:
- Cloud — Groq API (Whisper large-v3-turbo). Быстро и точно, работает через встроенный прокси без регистрации
- Local — WhisperKit на Apple Silicon. Полностью офлайн, модели скачиваются один раз
- Parallel — запускаются оба одновременно. Кто первый ответил — тот и выиграл
Parallel-режим — это то, что делает Dictator по-настоящему надёжным. Есть интернет — победит облако (оно быстрее). Интернет пропал — результат всё равно будет, от локальной модели. Приложение само определяет доступность сети через NetworkMonitor и адаптирует стратегию.
Совет: для ещё большей скорости получи бесплатный API-ключ на groq.com. С персональным ключом запросы идут напрямую, без прокси — и ответ приходит ещё быстрее.
Real-time транскрипция: видишь текст, пока говоришь
Одна из вещей, которая бесила в других приложениях — ты не знаешь, слышит ли тебя система. Говоришь в пустоту, а обратная связь — только после окончания записи.
В Dictator, пока ты говоришь, текст уже появляется в прозрачном оверлее поверх экрана. Локальная модель WhisperKit обрабатывает аудио инкрементально: накопленный текст + «хвост» из новых сэмплов. Ты видишь, что происходит. Если что-то пошло не так — нажимаешь Escape и запись отменяется.
Это не просто UX-фишка — это часть философии надёжности. Когда ты видишь результат в реальном времени, ты уверен, что система работает.
AI чистит текст за тебя
Сырая транскрипция — это поток слов. «Ну вот значит я тут подумал что надо бы как бы сделать ну это самое». Dictator пропускает текст через LLM (llama-3.3-70b), который расставляет пунктуацию, убирает слова-паразиты и форматирует результат.
На выходе — чистый текст, готовый к отправке. Если для задачи нужна «сырая» запись — AI-обработку можно отключить одним переключателем.
Работает в любом приложении
Dictator не создаёт своё текстовое поле, куда нужно диктовать, а потом копировать. Он вставляет текст прямо в активное приложение — туда, где стоит курсор. Telegram, Slack, VS Code, браузер, почта, Pages, Word.
Технически это работает через симуляцию Cmd+V. Dictator временно кладёт текст в буфер обмена, вставляет, а потом восстанавливает исходное содержимое буфера. Для тебя это выглядит так: отпустил клавишу → текст появился. Буфер обмена не тронут.
Пресеты: свой словарь для каждого контекста
Я диктую тексты про бизнес, технологии, продукты. «Битрикс24», «Систематика», «CRM», «API» — Whisper без подсказок превращает это в кашу. Пресеты решают проблему:
- Словарь для Whisper — список терминов, которые модель должна знать
- Инструкции для LLM — как форматировать текст (формальный стиль, код, медицинская запись)
Создаёшь пресет один раз — потом переключаешься между ними по задаче. У меня три: «Бизнес», «Код», «Личное».
Технические детали для любопытных
- Аудио: 16kHz моно 16-bit PCM WAV, конвертация через vDSP (Accelerate framework)
- VAD: если нажал клавишу случайно — текст не будет вставлен
- Защита от галлюцинаций: если Whisper выдаёт текст, совпадающий с промптом — результат отбрасывается
- Sleep/wake: запись отменяется при засыпании, движок пересоздаётся после пробуждения
- Микрофоны: приоритетный список, автопереключение при подключении/отключении устройств
- Обновления: автоматические через Sparkle, без App Store
Бесплатно — и почему
Dictator — полностью бесплатное приложение. Без подписок, без рекламы, без ограничений. Все функции доступны сразу.
Я сделал его в первую очередь для себя — потому что существующие решения не устраивали. А потом решил отдать бесплатно, потому что инструмент для набора текста не должен стоить денег. Если приложение стало частью твоей работы и хочется поблагодарить — можно через CloudTips в настройках. Но это совершенно необязательно.
Попробуй Dictator
- macOS, Apple Silicon
- Бесплатно, без подписок
- Работает офлайн
- Скачать →
