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

Обработка естественного языка — важный сегмент машинного обучения, на котором работают наши цифровые персональные помощники. Нам повезло, что мы живем в эпоху, когда у нас есть огромные возможности и доступ к обработке и пониманию языка через облачные сервисы, предоставляемые такими компаниями, как Microsoft, IBM, Google и Amazon, каждая из которых предоставляет конечные точки для различных инструментов, связанных с речью. обнаружение, «достаточно реальный» временной перевод, обнаружение ключевых слов и анализ настроений — и это лишь некоторые из них.

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

Обзор нескольких сервисов НЛП (и связанных с ними)

Microsoft Cognitive Services — Speech API — API-интерфейсы Microsoft — это те, с которыми я больше всего знаком, и недавно я использовал API-интерфейсы Language для перевода в реальном времени строк речи в текст из Limitless в High Fidelity. . Microsoft предлагает ряд API-интерфейсов для обработки речи и языка, фрагмент из которых я включил ниже с использованием JavaScript. Вам необходимо зарегистрировать учетную запись Azure, чтобы использовать API-интерфейсы Cognitive Services, большинство из которых имеют бесплатный уровень, который отлично подходит для тестирования. Microsoft также встроила навыки Cortana в возможности приложений HoloLens, поэтому вполне вероятно, что будущие устройства экосистемы Mixed Reality также будут поддерживать уровень абстракции Cortana поверх API-интерфейсов речи и языка Bing.

Google Cloud Speech API — как и Microsoft, Google также предлагает ряд речевых и языковых API, доступных разработчикам и присутствующих в виде личного помощника Google на телефонах Android. Учетные записи Google Cloud имеют бесплатное предложение для начала и предоставляют широкий спектр конкретных API для распознавания и обнаружения речи.

IBM Watson — Watson, выигравший опасность, доступен разработчикам в BlueMix, предложении облачных сервисов IBM, и, подобно Google и Microsoft, предоставляет ряд функций, которые разработчики могут использовать поверх, чтобы использовать возможности сервисов, лежащих в основе одного из самые известные боты для распознавания речи с машинным обучением.

Amazon Alexa Speech Service — Из того, что я могу сказать, читая их документацию и API, Alexa Speech Service от Amazon отличается от первых трех тем, что API для языковой обработки напрямую связаны с их предложениями платформы Alexa. Это хороший вариант для создания сервисов в вашем приложении, которые могли бы извлечь выгоду из стандартного голосового помощника, такого как Alexa, но могут не обеспечивать такой степени гибкости в настройке поведения на стороне приложения, которую вы хотели бы для игры. или разработка для конкретного приложения.

Начало работы с NLP в приложениях XR

Этот процесс будет варьироваться в зависимости от практически всех факторов, которые можно вообразить в вашей игре/приложении, но для начала вы должны рассмотреть несколько этапов:

  • Спроектируйте свой функционал и выберите услугу. Цена может сыграть роль при принятии решения — я рекомендую ознакомиться с документацией для каждой из облачных служб, которые поддерживают желаемый набор функций, и протестировать процесс установки. Лично я знаком со службами Microsoft, так что в конечном итоге использую их чаще всего.
  • Используя свой механизм ввода, захватите желаемый текстовый вывод, который вы хотите отправить в службу. Если вы используете микрофонный ввод, подумайте, существуют ли уровни абстракции для использования устройств ввода на разных платформах; если вы ориентируетесь на мобильные и настольные VR/AR-гарнитуры, это может включать уровень абстракции для подключения к различному оборудованию. С обработкой звука у вас будет дополнительный шаг по переводу речи в текст (STT), который часто является дополнительной предлагаемой услугой. Некоторые платформы и наборы инструментов (например, High Fidelity) имеют встроенную поддержку преобразования речи в текст.
  • Отправьте свою строку (часто эти сервисы имеют конечную точку RESTful HTTP, и большинство механизмов / платформ имеют встроенную возможность отправлять эти запросы) в выбранный вами сервис. Вполне вероятно, что в какой-то момент вам потребуется пройти аутентификацию в своей учетной записи, что может потребовать своего рода рукопожатия для получения токена или подтверждения действительности вашего запроса. Иногда вы можете пропустить этот шаг в процессе разработки, но вы не хотите раскрывать свои учетные данные или ключи доступа в рабочем коде!
  • Проанализируйте ответ, полученный от выбранного вами облачного сервиса, и используйте результат в своем приложении!

Пример перевода: вызов API-интерфейсов перевода Microsoft Cognitive Services с помощью JavaScript

Это действительно простой пример создания функции JavaScript, которая принимает строку (в полном коде она использует транскрипцию из Безграничного в высокой точности, но вы можете вызвать ее для любой строки, сгенерированной из вашего преобразования речи в текст). сервис по выбору) и переводит его на испанский язык. Вам нужно будет изменить этот пример, включая запрос и то, что происходит, когда вы получаете текст ответа, чтобы он имел смысл для вашего приложения и движка, но вы можете видеть здесь, что я только что обновил текстовый объект, используя объекты движка High Fidelity. API. Я использую это для почти реального времени перевода моего устного ввода в High Fidelity и перевода его в письменной форме на другие языки, а также для аналогичных вызовов функций к другим службам для создания изображений на лету с устными описаниями.

var testTranslationWithString = function (toTest) {
        // String formatting to be escaped for use in a URL
        var _toTest = "?text=" + toTest.replace(/ /g, '%20') + "&to=es";
        
        // Create and send our Http Request
        var req = new XMLHttpRequest();
// We are using Cognitive Services Translation Service
        req.open("GET", "https://api.microsofttranslator.com/V2/Http.svc/Translate" + _toTest);
        req.onreadystatechange = function () {
            if (req.readyState == 4) {
                if (req.status == 200) {
                    // Successful response, parse the returned text (in this case, a Spanish translation of the original string)
                    print("200!");
                    var newText = { "text": formatResponse(req.responseText) };
                    print(JSON.stringify(newText));
                    Entities.editEntity(textID, newText);
                } else {
                    print("HTTP Code: " + req.status + ": " + req.responseText);
                }
            }
        };
        req.setRequestHeader("Accept", "application/xml");
 
        // We requested a token in an earlier function call and pass it in here
        req.setRequestHeader("Authorization", token);
        req.send("");
    }

If you have any suggestions for those who are just getting started with NLP, cloud services, and using these solutions in immersive apps, or if you've done something cool with them yourself, leave a comment below! I'll do my best to answer any questions and I'd love to see what you're working on with these technologies!