Все чаще мы общаемся с гаджетами голосом. К давно знакомым помощникам вроде Alexa и Siri присоединились автомобильные речевые интерфейсы Apple CarPlay и Android Auto. Появились даже приложения, чувствительные к голосовой биометрии. А если и создавать новые продукты с помощью речевых команд?
Это может стать отправной точкой для речевого программирования — подхода к разработке ПО, в котором для написания кода вместо клавиатуры и мыши разработчики используют свой голос. Произнесённые ими команды используются для управления кодом и создания новых команд, которые обслуживают и автоматизируют рабочий процесс.
Речевое программирование — это не так просто, как может показаться. За ним стоит сложная многослойная технология. В приложение Serenade для кодинга голосом встроен специализированный движок распознавания речи. Он работает с кодом, и в этом его главное отличие от решения Google, распознающего разговорную речь. Как только программист произносит текст программы, Serenade передаёт его движку обработки естественного языка (NLP). Его модели машинного обучения натренированы на обнаружение и перевод распространённых лексем программирования в синтаксически корректный код.
В 2020 году Serenade собрала 2,1 млн долларов во время раунда посевного финансирования. Компания появилась годом ранее, когда у её основателя нашли тоннельный синдром:
«Я больше не мог работать программистом в Quora и оставил эту работу. У меня был выбор: найти другую специальность, где не требуется набирать так много текста, или придумать решение проблемы.»
— Создатель Serenade Мэтт Витхофф
В 2017 году Райан Хайлман тоже оставил работу программиста из-за болей в руках и начал строить Talon, платформу для набора текста без клавиатуры. «Смысл Talon в том, чтобы полностью заменить клавиатуру и мышь для любого человека», — говорит он.
В Talon входит несколько компонентов: распознавание речи, слежение за глазами и распознавание шума. Расшифровка речи в Talon основана на API Wav2letter от Facebook, в которую Хайлман добавил команды для создания кода. Отслеживание взгляда и распознавание шумов позволяют имитировать работу с мышью. Глаза перемещают курсор по экрану, а клики происходят, когда пользователь щёлкает языком:
«Этот звук легко воспроизвести. Он не требует больших усилий и распознаётся без задержек, так что это быстрый невербальный способ щёлкнуть мышью, который не вызывает голосового напряжения».
— Создатель Talon Райан Хайлман
В 2019 году Эмили Ши показала, как выглядит работа в Talon. Со стороны программирование в этой среде звучит как разговор на чужом языке. Видео наполнено голосовыми командами типа «slap» (нажать Enter), «undo» (удалить), «spring 3» (перейти к третьей строчке файла) и «phrase name op equals snake extract word paren mad» (что должно создать эту строчку кода: name = extract_word(m)).
Программирование в Serenade происходит естественнее. Можно сказать «delete import», чтобы удалить инструкцию по импорту в верхней части файла, или «build», чтобы запустить сборку. Ещё можно сказать «add function factorial», чтобы создать функцию, которая вычисляет факториал в JavaScript. Приложение само позаботится о синтаксисе — включая ключевое слово «function», круглые и фигурные скобки — так что не нужно проговаривать каждый элемент.
Модели Serenade обучены работать со звуком с микрофона ноутбука. Однако в идеале нужен хороший микрофон — это поможет отсечь лишние фоновые шумы.
Если вы планируете работать с Talon и пользоваться отслеживанием взгляда, вам понадобится специальное оборудование, хотя среда прекрасно работает и без него. Распознающие голос платформы с открытым исходным кодом, такие как Aenea и Caster бесплатны, но работают на основе движка Dragon, который продаётся отдельно. Тем не менее Caster поддерживает опенсорсный инструмент для распознавания речи Kaldi и Windows Speech Recognition, который предустанавливают в Windows.
Результаты говорят сами за себя:
«Описать словами, что вы хотите сделать намного проще, чем через клавиатуру: достаточно сказать „перенеси эти три строки вниз“ или „продублируй этот метод“».
— Соучредитель Serenade Labs Томми МакВильям
Речевое программирование позволяет людям с травмами или хроническими болезнями продолжать работать в любимой сфере. «Возможность использовать голос и убрать руки из схемы уравнения сделала управление компьютером более свободным», — говорит Эмили Ши. К тому же, программирование голосом снизит порог входа в разработку ПО.
«Если люди смогут думать о программе логичным и понятным для них образом, машинное обучение сможет взять на себя работу по превращению мыслей человека в синтаксически верный код».
— Соучредитель Serenade Labs Томми МакВильям
Речевое программирование всё ещё в зачаточном состоянии. Его широкое распространение зависит от того, насколько сложно инженерам-программистам будет отказаться от клавиатуры и мыши. Кодинг без этих устройств открывает возможности и для того, чтобы интерфейсы типа «мозг-компьютер» превращали человеческие мысли в код или даже готовое ПО.