Как стать автором
Обновить
Deutsche Telekom IT Solutions
Немецкая IT-компания с российским сердцем

Проект «Говорящая голова», или история разработки софта для телепрезенс-робота

Время на прочтение5 мин
Количество просмотров1.1K
Моя работа в T-Systems началась с достаточно необычного проекта. Собственно, во многом из-за этого проекта я и пришел в компанию. Во время нашего первого телефонного разговора мне описали задачу так: необходимо разработать систему перевода речи для телепрезенс-робота. О телепрезенс-роботе я услышал впервые, но что может быть увлекательнее разработки для роботов? Поэтому согласился я почти сразу.



Мой первый созвон с заказчиком. Задача ставится приблизительно так — хотим, чтобы во время разговора через вот этого телепрезенс-робота работала система перевода речи, то есть человек говорит на русском языке, а на другом конце «провода» робот воспроизводит его речь на немецком языке и наоборот. Сразу за такой постановкой задачи следовал вопрос, сколько людей и времени нужно, чтобы такое разработать, и сколько это будет стоить. Договорились, что я посмотрю на документацию по роботу (самого робота в нашем офисе не было), поизучаю системы перевода и дам черновые оценки через месяц, а пока будем созваниваться пару раз в неделю, чтобы уточнять детали.

Документация по роботу была довольно скудная, если не сказать больше. Найти что-то кроме маркетинговых материалов было невозможно, поэтому я списался с разработчиками. Существующая система позволяла делать видеозвонок на телепрезенс-робота из веб браузера и управлять его перемещениями в удаленной локации и очевидная идея, которая у меня возникла: можно ли как-то в текущую систему встроить систему перевода речи?

Параллельно нужно было понять, как вообще можно сделать систему перевода, и самое главное – какое будет качество этого перевода, будет ли оно приемлемо для заказчика? Поэтому одновременно с перепиской с разработчиками робота я решил устроить созвон с заказчиком и пообщаться с ним через Translator. Translator — это мобильное приложение от Microsoft, которое может переводить и озвучивать перевод на разных языках. Приложение бесплатное, устанавливается на Android или iOS и использует соответствующий сервис от Microsoft. Во время звонка нам предстояло выяснить, можно ли вести разговор таким образом. Для чистоты эксперимента я разговаривал на русском, а заказчик на немецком, то есть оба абсолютно не знали второго языка, созванивались через конференц-связь и сначала говорили на родном языке в Translator, а затем подносили мобильник к трубке конференц-связи. 

В общем, выглядело это не слишком удобно, но общее представление о качестве перевода давало (пытливый читатель скажет, что проще было через скайп с включенным переводом созвониться, но по каким-то причинам нам это тогда не пришло в голову). После разговора мы решили, что проекту быть и качество для заказчика приемлемое.

Итак, по итогам первого месяца работы над проектом выяснилось следующее. Существующую систему для телепрезенс-робота модифицировать не получится, так как разработчики робота не предоставляют API для этого. Однако выяснилось, что робот представляет собой некий сигвей, к которому подключается iPad, и есть SDK для iOS, с помощью которого можно управлять сигвеем. То есть необходимо писать полностью свою систему, не рассчитывая на интеграцию с существующей. Появилось первое схематическое изображение будущего продукта.

 

После обсуждения с заказчиком решили, что над проектом будут работать 3 человека — iOS разработчик, backend & frontend разработчики. Сам проект мы разобьем на этапы длинной 2-3 месяца и будем ставить цель для каждого этапа с заключением отдельного договора. В конце этапа — демонстрация результатов заказчику и инвестору проекта. Заказчику было важно, чтобы к новому году был уже рабочий POC. Так как я присоединился к компании в июле, сроки получались довольно сжатыми.

Целью для первого 2х-месячного этапа поставили найти ещё двух разработчиков, выбрать сервисы для видеозвонков и перевода. В конце этапа нужно было показать простое веб-приложение, которое позволяет сделать видеозвонок с интегрированным сервисом перевода.

Для осуществления видеозвонков сейчас широко используется протокол WebRTC, который в настоящее время поддерживается большинством веб-браузеров. Однако в виду ограниченности ресурсов писать на «голом» WebRTC мы не решились и выбрали провайдера, который предоставляет сервис поверх WebRTC. Рассматривали два сервиса — TokBox и Voxeet. В итоге выбрали TokBox. Нужно принимать во внимание, что эти сервисы платные, поэтому наряду с описанием архитектуры приложения, провели расчеты себестоимости минуты видео звонка с переводом.



Для перевода тоже рассматривали несколько сервисов: TranslateYourWorld.com (предоставляет единый API объединяющий сразу несколько провайдеров переводов, включая Google и Microsoft, но компания очень маленькая и ненадежная, на момент написания этой статьи их сайт не открывался), Google Cloud translation, Microsoft Speech. В итоге остановились на сервисе MS Speech, так как у него более удобное API, можно по websocket стримить аудиопоток на сервис и сразу же получать аудиозаписи с переводом, плюс неплохое качество перевода. К тому же, Microsoft – партнёр нашей компании, что облегчает сотрудничество с ними.

Ко мне присоединился опытный, талантливый (Миша, привет!) full stack разработчик, и в начале октября наша небольшая команда успешно закрыла очередной этап и продемонстрировала простое веб-приложение, которое с помощью TokBox и MS Speech сервисов позволяло устраивать видеозвонки с переводом на несколько языков, включая русский и немецкий.

Последующий этап был рассчитан на 3 месяца и его целью являлся MVP с роботом. На этом этапе к нам присоединился третий и последний разработчик. Для проекта выбрали следующий стек технологий: бэкенд — NodeJS + MongoDB, веб-фронтенд на ReactJS и Swift для приложения под iOS, которое взаимодействует с роботом. Отдельной истории заслуживает рассказ о том, как я вёз робота из Германии в Питер и объяснял сначала немецким, потом нашим таможенникам, что же это за устройство такое в ящике.





На первых этапах, пока робота у нас не было, приложение на iOS позволяло только сделать видеозвонок с переводом. Когда робот оказался у нас, в начале декабря, мы довольно быстро добавили пересылку сигналов управления роботом через уже отлаженное соединение звонка, и появилась возможность управлять роботом, нажимая стрелки на клавиатуре. Таким образом, в январе мы закрыли третий этап и продемонстрировали его результаты заказчику.

Результатом предпоследнего этапа стала отлаженная система с исправлением всех критических багов. При звонке на робота оператор может видеть помещение через основную камеру и пол через дополнительную камеру (чтобы проще было объезжать препятствия). Лицо оператора показывается на экране робота. При этом разговор можно вести с переводом на любом из 7 поддерживаемых языков, в которые входят русский, немецкий и некоторые другие языке. Во время перевода бегут две строки текста: первая это распознанная речь и вторая перевод на другой язык с подсветкой в стиле караоке, чтобы было понятно, какая часть фразы сейчас воспроизводится на другом конце соединения.



И, наконец, на последнем этапе добавили систему управления пользователями, группами пользователей, статистику и отчеты о количестве и длительности звонков. Таким образом, спустя год мы успешно завершили проект и передали его заказчику. 

В ходе работы над проектом возникали новые, интересные идеи. Например, надеть на оператора очки виртуальной реальности, чтобы у него был полный эффект погружения и возможность управлять роботом поворотом головы. 

Также провели исследование на предмет создания self-driving робота с использованием ROS-фреймворка, чтобы «научить» его самостоятельно объезжать препятствия и добираться из точки А в точку Б или встречать гостей на входе в офис. В общем, проект получился довольно увлекательным и, кто знает, какие ещё интересные фичи мы добавим к системе в будущем.

Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Публикации

Информация

Сайт
deutschetelekomitsolutions.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия

Истории