Handy — открытое десктоп-приложение: зажал хоткей, сказал, отпустил — текст оказался в том поле, где мигал курсор. Локально. Без аккаунта и без обязательного облака.
- Сайт: handy.computer
- Код: github.com/cjpais/Handy
- Лицензия: MIT
Ниже — практика установки и настройки на Ubuntu 24.04 (KDE, X11, Intel, USB-микрофон).
Что это (и чем не является)
Handy делает одну работу: речь → локальное распознавание → вставка текста в активное поле.
Это не Алиса, не Siri и не ChatGPT с микрофоном. Он не открывает программы и не отвечает на вопросы. Если в поле появилось «открой браузер» — вы это сказали (или модель ошиблась), а не «выполнила команду».
Опционально можно включить post-processing через LLM API (OpenAI, Groq, Ollama и другие), чтобы подчистить «эээ» и пунктуацию. Для старта это не нужно.
Зачем ставить
Типичные сценарии:
- ответы в почте и мессенджерах;
- черновики постов и ТЗ «наговорить — потом вычитать»;
- issue/PR, commit message, длинные пояснения;
- ввод в терминал, IDE, браузер — куда угодно, где есть фокус.
Приватность: по умолчанию аудио не уходит с машины. Модель крутится локально (Whisper, Parakeet и другие).
Установка (Ubuntu / deb)
Пример для x86_64. Версию берите с Releases (на момент публикации актуальная — 0.9.4):
sudo apt install xdotool libgtk-layer-shell0 curl -fLO https://github.com/cjpais/Handy/releases/download/v0.9.4/Handy_0.9.4_amd64.deb sudo apt install ./Handy_0.9.4_amd64.deb
Есть AppImage и rpm. На macOS — brew install --cask handy, на Windows — winget.
Если окно WebKit «не рисуется» или падает:
WEBKIT_DISABLE_DMABUF_RENDERER=1 handy --start-hidden
Модель можно скачать из интерфейса или вручную в каталог данных приложения (обычно ~/.local/share/com.pais.handy/models/, точный путь смотрите в разделе About).
Первый запуск: чеклист
- Микрофон — выберите нужный (встроенный, USB-камера, гарнитура).
- Модель — Whisper Small для старта; Medium — если нужна точность и железо тянет.
- Язык —
ruилиauto. - Overlay на Linux — лучше None: оверлей иногда крадёт фокус, и текст вставляется не туда.
- Вставка — на X11: xdotool + direct.
- Mute while recording — чтобы Handy не слышал сам себя из колонок.
- Автозапуск — из настроек или .desktop в
~/.config/autostart/.
Отладка без хоткея:
handy --toggle-transcription
Ловушки Linux (чтобы не потерять вечер)
1. Хоткей «только из модификаторов» не взлетит
Handy на Tauri не принимает комбинации вроде Ctrl+Super или Super+Alt без «основной» клавиши.
В логе будет что-то вроде:
Tauri shortcuts must include a main key (letter, number, F-key…)
Рабочие варианты: Ctrl+Space, Ctrl+Super+Space, F8, Ctrl+Shift+H…
2. Ctrl+Space часто уже занят
На многих системах Ctrl+Space держит IBus (переключение метода ввода). Handy пишет HotKey already registered — и молчит.
Либо освободите комбинацию в IBus/KDE, либо выберите другой хоткей.
3. Медиакнопка на клавиатуре Dell — отдельная история
Кнопка «браузер» / HomePage на Dell Wired Multimedia Keyboard:
- X11: keycode 180 (
XF86HomePage); - Linux evdev: KEY_HOMEPAGE (172).
В сам Handy как BrowserHome строка не парсится. Проще повесить системный слушатель:
- зажал →
handy --toggle-transcription(старт); - отпустил → снова toggle (стоп).
Важно: если повесить «клик = toggle» без удержания, кнопка часто автоповторяется → запись стартует и через мгновение стопается. Получаются обрывки по 1 секунде.
4. «Редактор субтитров Н.Закомолдина» — это не вирус
Классическая галлюцинация Whisper (особенно Small) на тишине, шуме или слишком короткой записи. Похоже на английское «Thanks for watching / Subtitles by…».
Текст вставляется в активное поле (терминал, чат) — кажется, что «открылся редактор субтитров». На самом деле Handy просто «распознал» мусор и впечатал его.
Лечится нормальной длиной речи (2–3+ секунды), VAD, правильным микрофоном и hold-to-talk вместо случайных кликов.
Как пользоваться
Hold-to-talk (предпочтительно):
- Курсор в нужном поле.
- Зажать хоткей / кнопку.
- Говорить 2–3+ секунды.
- Отпустить → текст.
Toggle (если так настроили):
- Нажал — старт.
- Говоришь.
- Нажал ещё раз — стоп.
Проверка, что всё живо: сказать «привет, проверка связи» — должно получиться близко к оригиналу, а не про субтитры.
Локально vs API
Быстрые сообщения — обычно хватает локального Whisper. Длинные письма «сразу гладко» — полезен post-process через API. Приватные темы — только локально. Слабый CPU — Small / Parakeet или смириться с ожиданием.
Практичный путь: сначала локально, API — только если бесит сырой текст.
Советы по качеству
- Не обрывайте первую секунду — чуть пауза, потом фраза.
- Микрофон с нормальным уровнем (USB-камера ≠ студийный петличный).
- Custom words: фамилии, бренды, имена репозиториев.
- RU/EN лучше диктовать кусками одним языком, либо
auto. - Не нажимайте хоткей «вхолостую» в терминале — вставится что угодно, в том числе галлюцинация.
Кому зайдёт / кому нет
Зайдёт, если много текста руками, важна приватность, Linux/macOS/Windows вперемешку, не хочется подписку «за диктовку».
Не зайдёт, если ждут голосового ассистента с командами, real-time субтитры на вебинар «идеально из коробки», или железо совсем слабое и лень подобрать модель.
Вердикт
Handy — редкий случай, когда open-source tool закрывает бытовую боль без paywall. На Linux придётся один раз подружиться с хоткеями, IBus и (по желанию) медиакнопкой клавиатуры. После этого схема простая: речь → текст → вставка.
Не идеален. Зато свой, офлайн и без подписки.
Как у нас на стенде
Ubuntu 24.04, KDE/X11, Intel + Vulkan, Handy 0.9.4 (deb), xdotool, Whisper Small.
Микрофон: Creative Live! Cam Sync HD.
Чистый Ctrl+Space занят IME; «голый» Ctrl+Super Tauri не принимает.
Кнопка браузера Dell (keycode 180) → hold-to-talk через небольшой Python-слушатель + handy --toggle-transcription.
Overlay: None. Mute while recording: on.
Симптом «Редактор субтитров Н.Закомолдина» = короткая/пустая запись + галлюцинация Whisper, не отдельная программа.
Нормальный тест: «Привет! Проверка связи.»