javascript

Как собрать голосового бота: распознавание речи, синтез речи и NLP в несколько строк кода

  • четверг, 25 мая 2017 г. в 03:15:10
https://habrahabr.ru/company/Voximplant/blog/329122/
  • Разработка мобильных приложений
  • Разработка веб-сайтов
  • Программирование
  • JavaScript
  • Блог компании Voximplant


Мы регулярно пишем про голосовых ботов и автоматику входящих-исходящих звонков. Подтверждение доставки, заказов, угадывание и автоответ клиенту пока соединяемся с компанией — вся вот эта история. В комментариях мне резонно заметили, что про ботов я говорю много, а показываю мало. Это легко исправить! Хакатон S7 в Парке Горького в самом разгаре, 50 команд фигачат прототипы разного интересного — а у меня есть возможность попробовать уложиться в как можно меньшее количество строк кода. Минимализм в примерах — это круто.

Как все будет работать


Для демонстрации я сделаю самый простой кейс: общение о погоде с помощью известного движка работы с речью api.ai, недавно купленного google. В ответ на произвольный запрос этот сервис возвращает json с результатом «понимания» этого запроса. Если там что-то, похожее на запрос погоды, с помощью openweathermap можно получить текстовое описание, например «облачно». Как сейчас за окнами коворкинга. Но, надеюсь, к середине дня распогодится!

А платформа Voximplant обеспечит аренду телефонного номера, прием звонка, распознавание речи пользователя и синтез ответа. Одна из наших ключевых фишек — это JavaScript, который выполняется в нашем облаке параллельно со звонком. И не просто выполняется, а в реальном времени. Плюс из этого JavaScript можно делать HTTP запросы к другим сервисами, так что Backend как таковой нам не понадобится: все будем делать в том же облаке, которое обрабатывает звонок. Чтобы у пользователя было как можно меньше задержек между его речью и ответом. У нас же бот, а не пошаговая стратегия с asterisk?

Шаг 1: получаем телефонный номер и отвечаем на входящий звонок


У меня есть хорошее введение в Voximplant, но оно на английском. Хорошо для наших клиентов по всему миру, но не очень хорошо для обучающей статьи на Хабре, поэтому позволю себе краткий пересказ. После регистрации в админке нужно перейти в раздел сценариев и создать новый сценарий: тот самый JavaScript код, который будет выполняться в облаке. Самый простой сценарий ответит на звонок, синтезирует «привет, хабрапользователь» и повесит трубку. Вот его код: