Перейти к основному содержимому
← Все статьи

Linux

Голосовой ввод в Linux: X11, Wayland и рабочий процесс

Почему голосовой ввод в Linux устроен сложнее, чем кажется: чем отличаются X11 и Wayland для диктовки, как работает автовставка текста и как выстроить удобный desktop-процесс.

6 мин чтения

С распознаванием речи в Linux выходит забавный парадокс. Сам движок распознавания давно не проблема, локальные решения работают отлично. А вот «просто продиктовать текст в любое окно» оказывается неожиданно муторной задачей. И дело не в качестве распознавания, а в том, как вообще устроен рабочий стол Linux.

Разберёмся, почему так, чем для диктовки отличаются X11 и Wayland и как выстроить процесс, который реально экономит время.

Почему голосовой ввод в Linux это отдельная история

В Windows и macOS вставить текст в активное приложение можно через единый системный API, вопрос давно закрыт. В Linux рабочий стол фрагментирован. Тут две оконные системы (старый X11 и новый Wayland), несколько окружений (GNOME, KDE, Sway, Hyprland и другие), и каждое решает «эмуляцию ввода» по-своему.

Для голосового ввода это значит, что задача распадается на две независимые части.

Первая часть, распознать речь, превратить голос в текст. Она локальна и от оконной системы не зависит. Вторая, доставить готовый текст в нужное окно, вставить его туда, где стоит курсор. Вот тут и начинаются различия между X11 и Wayland.

Первая часть в Speech Dock полностью офлайн, голос не покидает устройство. А вот вторая зависит от вашего окружения, и её стоит понимать.

X11 и Wayland: в чём разница для диктовки

Сравнение X11 и Wayland для голосового ввода в Linux: захват активного окна, автовставка текста, горячая клавиша

X11 это старая, но всё ещё распространённая оконная система. Устроена она либерально: одно приложение спокойно «нажимает клавиши» за пользователя и видит, какое окно сейчас активно. Для голосового ввода это подарок. Автовставка текста и определение активного окна работают без всяких дополнительных настроек.

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

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

Автовставка текста: как это работает

Автовставка это когда распознанный текст сразу появляется там, где стоит курсор, без ручного Ctrl+V. Как именно это сделано, зависит от оконной системы.

На X11 всё работает сразу после установки. Надиктовали, текст возник в активном поле, конец истории.

На Wayland понадобится системный сервис ydotool с запущенным демоном ydotoold. Он даёт приложению канал для эмуляции ввода через /dev/uinput. Настройка разовая, один раз и забыли:

# включить и запустить демон автовставки
systemctl --user enable --now ydotoold

Вдобавок у пользователя должен быть доступ к /dev/uinput. Обычно его дают добавлением в группу input.

А если демон не настроен? Ничего страшного не происходит. Распознанный текст автоматически уходит в буфер обмена, и вы вставляете его вручную привычным сочетанием клавиш. Диктовка работает в любом случае, автоматизируется только самый последний шаг.

Есть и ещё один нюанс Wayland: в нём нет открытого способа узнать, какое окно сейчас активно. Так что перед диктовкой достаточно один раз убедиться, что нужное приложение в фокусе, и дальше текст пойдёт именно туда.

Экранная индикация записи

Когда диктуешь, полезно видеть, что запись правда идёт. Speech Dock показывает компактную плашку-индикатор. Её поведение, как вы уже догадались, тоже зависит от окружения.

В Sway, Hyprland и свежих версиях KDE Plasma это полноценная плавающая индикация поверх окон. А вот GNOME не реализует нужный оконный протокол, поэтому там плашка упрощается. На саму диктовку и вставку текста это никак не влияет, страдает только красота.

Хороший пример того, как одна и та же функция ведёт себя на разных рабочих столах Linux совершенно по-разному. И заодно объяснение, почему готовое приложение, которое все эти различия уже разрулило, экономит вам кучу времени.

Практический рабочий процесс

Вот как выглядит удобная диктовка в повседневной работе:

  1. Назначаете глобальную горячую клавишу, которая запускает и останавливает запись из любого приложения. Переключаться в отдельное окно не нужно.
  2. Ставите курсор туда, куда хотите вставить текст. На Wayland заодно убеждаетесь, что нужное окно в фокусе.
  3. Диктуете. Говорите естественно, приложение распознаёт речь локально и само оформляет текст.
  4. Текст оказывается на месте. На X11 и на настроенном Wayland он вставляется сам, иначе уже ждёт вас в буфере обмена.

Этот процесс одинаково хорош и для быстрого сообщения в мессенджере, и для длинной заметки или черновика письма. Разница только в том, сколько вы наговорили.

Что проверить перед стартом

  • Стоит ли актуальная сборка для вашей системы. Пошаговая инструкция по установке на Linux покрывает .deb, AppImage и популярные дистрибутивы.
  • Какая у вас оконная система, X11 или Wayland. Это влияет только на автовставку, не на распознавание.
  • Если хотите автоматическую вставку на Wayland: настроен ли ydotoold и есть ли доступ к /dev/uinput.
  • Назначена ли удобная горячая клавиша для старта и остановки записи.

Коротко

Вся хитрость голосового ввода в Linux в том, что речь распознаётся одинаково везде, а вот текст до нужного окна доходит по-разному. На X11 он вставляется сам, без единой настройки. На Wayland разок придётся подружить систему с ydotool, а если поленитесь, текст всё равно не пропадёт, он будет ждать в буфере обмена.

Так что страшилки про «голосовой ввод на Linux не работает» можно смело пропускать. Работает. Просто стоит один раз понять, на какой оконной системе вы сидите, и подкрутить под неё пару мелочей. Дальше уже диктуете и не думаете.