![](https://habrastorage.org/webt/ru/b4/6f/rub46flqr6q9balqgdmhc7syjai.jpeg)
В последние годы широко распространились разнообразные голосовые помощники и ассистенты, которые облегчили нашу жизнь и ускорили рутинные операции. Но до сих пор программирование — одна из самых рутинных областей человеческой деятельности — в основной массе остаётся не охваченной подобными технологиями. Тем не менее уже начинают появляться разработки, вносящие интересные изменения и в эту сферу.
▍ Serenade
Одним из подобных проектов является Serenade. Он появился в тот момент, когда из-за перенапряжения его будущий сооснователь был вынужден оставить свою должность программиста в компании Quora. В 2020 году платформа получила финансирование в 2,1 млн долларов и с тех пор активно развивалась.
В процессе создания проекта его основателям пришлось столкнуться с трудностями, так как существующие на тот момент механизмы, преобразующие голос в текст, не были специализированы для задачи перевода голоса в программный код.
Распознавание речи в Serenade ведётся в локальном или облачном варианте (выбирается пользователем в настройках).
Проект на данный момент доступен в виде приложения для macOS, Windows и Linux. Его можно скачать и протестировать вот здесь. После того, как приложение будет скачано и установлено на компьютер, можно установить плагины для интеграции с VS Code, Chrome, Hyper.
Во время работы Serenade располагается над всеми активными окнами.
Стандартный вид команд, подаваемых голосом в Serenade, представлен в виде действия (action) с какой-либо сущностью (selector). Например, «изменить параметр на число», «добавить функцию» и т. д. Более подробно об этом вы можете прочитать вот здесь.
Из интересных фишек проекта можно назвать возможность управления голосом другими программами, что обеспечивается за счёт комбинации плагинов и API на уровне операционной системы, без привязки к какому-либо конкретному приложению.
Используя Serenade API, можно создать собственные средства автоматизации, которые позволяют с помощью голоса управлять, например, поиском в Stack Overflow, терминалом и не только:
Достаточно подробно работа с API описана здесь.
Кроме того, используя протокол Serenade, можно создавать собственные плагины и интегрировать их с другими приложениями. В общем виде протокол работает на основе связки технологии WebSocket (с помощью которой передаются данные) и формата передачи данных JSON. Другими словами, любой язык программирования, который поддерживает оба этих компонента, позволяет создать пользовательский плагин с использованием Serenade.
На сайте проекта указано, что он может работать с 15 языками, однако в раскрывающемся списке имеется только 14, так что, похоже, где-то здесь закралась ошибка :-) В любом случае вот они: C, C++, CSS, Go, Java, Kotlin, Ruby, TypeScript, C#, Dart, HTML, JavaScript, Python, Rust.
▍ Talon
Аналогичным рассмотренному выше проекту является платформа Talon, которая также появилась по необходимости, из-за болей сооснователя в руке, причём появилась даже раньше, чем Serenade.
Система имеет в своём составе компоненты по отслеживанию речи, взгляда, шума (можно подавать шумовые команды ртом).
Распознавание речи построено на базе технологии Wav2letter, которая была доработана для целей программирования голосом.
Для отслеживания взгляда может быть использована панель Tobii Eye Tracker — специальное устройство для отслеживания положения головы и глаз, которое используется геймерами. При использовании этого устройства клик представляет собой действие, разделённое на два промежуточных этапа: сначала вы смотрите туда, куда хотите кликнуть, потом издаёте своеобразный «чпок» ртом, и система делает клик. Есть хорошее демо-видео на эту тему, которое, к сожалению, невозможно расшарить, поэтому вы можете посмотреть его на страничке по этой ссылке.
Кстати говоря, это то самое, о чём было сказано выше, — управление с помощью шума :-)
Человек, который протестировал связку из Talon и трекера, показанного выше, отмечает, что смог с помощью этой системы работать со скоростью, составляющей приблизительно 50% от обычной (видимо, подразумевается, что до болезни, но он этого подробно не поясняет).
При работе с этой системой человек заметил, что одной из наиболее своеобразных проблем, которую сложно предугадать заранее, является необходимость напрягать голос, когда приходится говорить по 8 и более часов в день. Кроме того, ему пришлось создать набор своих команд, так как дефолтные команды не совсем хорошо срабатывали для него (как и рассмотренный выше Serenade, Talon позволяет это сделать).
Кстати, говоря о возможности создания своих конфигураций, для этого можно изучить имеющийся мануал по API и поизучать информацию на github-странице одного из разработчиков, где имеется большое количество конфигураций для Talon.
Кроме того, есть неофициальная Вики, где можно прочитать более подробно о программе.
Системные требования Talon:
- macOS High Sierra (10.13+),
- Linux / X11 (Ubuntu 18.04 и другие современные дистрибутивы),
- Windows 8+.
Talon интересен также и своей встроенной системой обучения, которая находится прямо на веб-странице и позволяет научиться управлению системой с помощью голоса, решая конкретные задачи в рамках уроков, каждый из которых представляет собой отдельную тему.
![](https://habrastorage.org/webt/ea/yp/yw/eaypywf4kbtflbl3zp01ttdvuqg.jpeg)
Хорошую презентацию по работе с системой можно увидеть здесь:
А есть ли какие-то альтернативы рассмотренным выше платформам?
▍ Aenea
Одной из подобных систем является проект Aenea, базирующийся на голосовых макросах Dragonfly на Python. Платформа предназначена для системных администраторов и программистов, и позволяет отправлять голосовые команды на другой компьютер. Например, чтобы управлять голосом мышкой и клавиатурой на одном компьютере, физически находясь за другим.
Программное решение представляет собой сочетание клиента Dragon NaturallySpeaking, работающего на виртуальной машине Windows, и удалённого сервера, работающего на главной машине. Клиент захватывает речь пользователя, после чего происходит отсылка команды на сервер с использованием JSON-RPC.
Система также поддерживает создание собственных модулей, как и описанные выше.
▍ Caster
Ещё одной платформой, предназначенной для голосового ввода, является Caster, также базирующаяся на Dragonfly.
Разработчики выложили видео работы системы, которое хоть и старенькое (2018 года), но даёт понимание процесса голосового программирования с использованием языка Go:
Система поддерживает по умолчанию достаточно большой список приложений:
- IDE/редакторы: Microsoft Visual C++, Visual Studio, Eclipse, IDE Jetbrains, Emacs, Sublime Text, Atom, Visual Studio Code, Notepad++, FlashDevelop, SQL Developer, SQL Server Management Studio.
- Средства разработки: командная строка, GitBash, KDiff3.
- Статистическая обработка данных: RStudio.
- Текстовые процессоры: lyx, Microsoft Word, Typora.
- Браузеры: Firefox, Chrome, Internet Explorer.
- Git-клиент: рабочий стол Github.
- Чаты: Microsoft Teams, Gitter.
- Приложения: Foxit Reader, fman, Total Commander, Outlook, Excel, Unity3D.
А также солидный список языков:
- Python, Java, Bash, C++, C#, Rust, Go, HTML, CSS, JavaScript, SQL, Dart, Latex, Matlab, R, Prolog, VHDL и Haxe.
Из менее известных платформ можно перечислить следующие:
▍ Speech to Code
Этот проект также позволяет программировать, используя только свой голос, и конструктивно состоит из трёх модулей:
- Модуль, сочетающий веб-приложение, сервер и клиент — его основной задачей является захват аудио и перевод его в текст, а также предоставление пользовательского интерфейса.
- Модуль проверки Spoken, который служит для проверки, является ли произнесёная фраза голосовой командой.
- Расширение Spoken VSCode, которое позволяет голосовым командам управлять кодом внутри Visual Studio.
Взаимодействие этих модулей показано на странице разработчика:
![](https://habrastorage.org/webt/sr/xz/k1/srxzk1_6b7tppdiuqafewpbzd7s.jpeg)
Как вы могли понять по упомянутой выше IDE, система поддерживает Visual Studio Code и CodeMirror. К сожалению, проект пока предназначен только для ввода команд языка JavaScript.
▍ PythonVoiceCoding
Если же вы программируете на языке Python, то для среды текстового редактора Sublime Text 3 существует плагин, который позволяет как программировать, так и осуществлять более удобную навигацию по коду, в отличие от той, которую предлагает рассмотренный выше Caster.
![](https://habrastorage.org/getpro/habr/post_images/14d/fea/db6/14dfeadb6b2eaf33588781dce23ff4d1.gif)
Как заявляет разработчик плагина, основной мотивацией для разработки явилась, с его точки зрения, некоторая механистичность Caster, которая заключается в том, что необходимо подробно описать, куда перейти и что выбрать, и уже в дальнейшем произвести какие-то манипуляции. Вместо этого его плагин позволяет сразу начать редактировать то, что нужно, без пошагового перехода к целевому месту.
Несмотря на то, что код улучшает функциональность Caster, он базируется в том числе на его инструментах. Кроме того, разработчик плагина достаточно самокритичен и говорит, что «это не самый лучший код, который он когда-либо писал» :-) С другой стороны, если код делает то, что он и должен, что ещё нужно?
▍ Voco
И в завершение можно сказать несколько слов о достаточно интересной системе, в основе которой лежит набор инструментов, распространяемых с открытым исходным кодом, написанным на С++ и предназначенным для распознавания речи — Kaldi.
Разработчик этой надстройки позиционирует её как отличное средство для создания собственной системы голосового программирования.
Платформа предоставляет обучающий набор, с помощью которого можно создать свой словарь, находясь в рамках концепции Voco, что позволит системе работать с минимальным количеством ошибок благодаря словарю, не превышающему 90 команд. Обучаясь, система подстраивается под профиль конкретного микрофона и фонового шума, который окружает оператора во время работы.
Благодаря небольшой модели платформа работает с минимальной задержкой и задействует очень мало ресурсов, а так как она написана на Python, то быть легко изменена и дополнена, чтобы лучше соответствовать потребностям пользователя.
Завершая этот рассказ, хочется порадоваться, что в наше время люди с приобретёнными или врождёнными недугами могут успешно работать в своих областях благодаря появившимся в последние годы программным решениям, которые не просто предоставляют готовые сценарии, но и позволяют любому разработчику улучшить их под себя.
Telegram-канал с полезностями и уютный чат
![](https://habrastorage.org/webt/sz/7j/pf/sz7jpfj8i1pa6ocj-eia09dev4q.png)