Печатать длинные письма, тикеты и сообщения в чат — медленно. Голосовой ввод на macOS и Windows уже привычен. На Linux чаще всего либо кривой, либо платный, либо «отправь аудио в чужой API».

Handy — открытое десктоп-приложение: зажал хоткей, сказал, отпустил — текст оказался в том поле, где мигал курсор. Локально. Без аккаунта и без обязательного облака.

Ниже — практика установки и настройки на 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).

Первый запуск: чеклист

  1. Микрофон — выберите нужный (встроенный, USB-камера, гарнитура).
  2. Модель — Whisper Small для старта; Medium — если нужна точность и железо тянет.
  3. Языкru или auto.
  4. Overlay на Linux — лучше None: оверлей иногда крадёт фокус, и текст вставляется не туда.
  5. Вставка — на X11: xdotool + direct.
  6. Mute while recording — чтобы Handy не слышал сам себя из колонок.
  7. Автозапуск — из настроек или .desktop в ~/.config/autostart/.
Печатать длинные письма, тикеты и сообщения в чат — медленно. Голосовой ввод на macOS и Windows уже привычен. На Linux чаще всего либо кривой, либо платный, либо «отправь аудио в чужой API».

Отладка без хоткея:

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 (предпочтительно):

  1. Курсор в нужном поле.
  2. Зажать хоткей / кнопку.
  3. Говорить 2–3+ секунды.
  4. Отпустить → текст.

Toggle (если так настроили):

  1. Нажал — старт.
  2. Говоришь.
  3. Нажал ещё раз — стоп.

Проверка, что всё живо: сказать «привет, проверка связи» — должно получиться близко к оригиналу, а не про субтитры.

Локально 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, не отдельная программа.

Нормальный тест: «Привет! Проверка связи.»

Источники и ссылки


Комментарии загружаются…