Предлагаем вам сокращенный перевод статьи, освещающей разработку серии интерактивных развивающих игр для детей младшего возраста «Приключения Клифорда» от компании Scholastic Interactive. Разноплановое использование жестов и голоса в этой игре стали возможными благодаря технологии Intel Perceptual Computing SDK 2013 в сочетании с камерой Creative Senz3D*. Также обсуждаются новые методы распознавания жестов и голоса с помощью перцепционных вычислений, методика решения проблем с SDK.
Концепция развивающей игры
В серии из четырех интерактивных эпизодов про Клифорда игроки просматривают сюжет и взаимодействуют с ним. Игра вовлекает детей в действие, предлагая различными способами «помогать» Клифорду определенными жестами и высказываниями. Благодаря интерактивной технологии Scholastic Клифорд реагирует на голос и движения детей. В ходе сюжета игры они смотрят анимированные отрывки каждого приключения и активно содействуют героям, прикасаясь к экрану или произнося ответы на вопросы. Сюжет развивается по мере взаимодействия ребенка с игрой. Каждая игра рассчитана на развитие базовых навыков грамотности и может повторяться сколько угодно раз.Intel Perceptual Computing SDK 2013 включает в себя API, образцы кода, а также руководства по программной интерпретации жестов и речи. Разработчики могут без труда сочетать возможности SDK по распознаванию речи, жестов руки и пальцев, мимики, технологии дополненной реальности и вычитания фона, создавая ПО для различных устройств. Использование микрофона, камеры, сенсорного экрана, функций определения положения в пространстве и геолокации, широко распространенных на планшетах, ноутбуках трансформерах и компьютерах-моноблоках повышает многомерность восприятия новых приложений.
Разработки на основе Intel Perceptual Computing Platform
Адаптация перцепционных вычислений к анализу движений и голоса детей несет в себе ряд сложностей. Scholastic всесторонне протестировала каждый прототип, чтобы оценить дизайн игры и реальность прохождения ее уровней. Это помогло выявить потенциальные проблемы, с которыми могла столкнуться целевая аудитория, и найти для них решения.Некоторые аспекты проведенной работы могут представить особый интерес с точки зрения перцепционных вычислений. Они приводятся ниже.
Калибровка распознавания голоса
Чтобы обеспечить приемлемое качество распознавания голоса, потребовалось провести ряд проверок. Голос ребенка изменяется по мере взросления, особенно в том возрасте, на который рассчитана серия «Клифорд». Поэтому необходимо было добиться такого уровня калибровки, чтобы детский голос и речевые конструкции распознавались правильно.Эпизод игры, требующий речевого участия игрока
Распознавание и локализация жестов
В одной из игр «Приключений Клифорда» от ребенка требуется помочь собаке ловить игрушки, падающие с дерева. Для этого нужно касанием руки «схватить» корзину на экране и двигать ее в разные стороны.Были разработаны специальные алгоритмы, распознающие жесты и сопоставляющие их с координатами касания, чтобы корзина на экране двигалась вслед за рукой ребенка. В тестировании с удовольствием принимали участие маленькие игроки. Ранее разработчики ошибочно полагали, что у ребенка жесты удержания объекта на экране не будут сильно отличаться от жестов взрослого. Но работа с детьми заставила пересмотреть дизайн игры таким образом, чтобы она воспринимала их нечеткие движения.Научить сенсоры понимать размашистые, часто ошибочные и хаотичные жесты ребенка, состоящие из множества касаний, было непросто. Требовалось много работы по определению прототипов жестов и отбору их наиболее общих конфигураций. Область регистрации касаний была расширена, чтобы даже неточный жест распознавался и вызывал нужную реакцию приложения.
К примеру, в другой мини-игре дети помогают Клифорду убрать из сада сорняки. Вместо того, чтобы заставлять игроков брать сорняк и двигать руку вверх, вытягивая его, разработчики выбрали движения захвата и раскрытия ладони, обозначающие выдергивание и выбрасывание.
Ниже приведен фрагмент кода игры, калибрующий жесты игрока в обучающем упражнении, где требуется вращать руками мячик. В эпизоде, изображенном на рисунке ниже, для более точного контроля объекта и легкости движений применили экспоненциальное сглаживание (exponential smoothing). Оно вычленяет или, по крайней мере, приблизительно вычисляет случайные движения игрока, которые программа должна игнорировать
Вращение мяча
void TutorialActivity::MoveHandHandler(Hand^hand)
{
D2D_POINT_2F normalizedTouchPos = {hand->x*GetWidth(), hand->y*GetHeight()};
//calc distance
//exponential smoothing
float new x = m_gestureBallSpin->GetPosition().x*0.9f + normalizedTouchPos.x*0.1f ;
float new y = m_gestureBallSpin->GetPosition().y*0.9f + normalizedTouchPos.y*0.1f ;
m gestureBallSpin->SetPosition(new x, new y);
float x = m_gestureBallSpin->GetPosition().x - m_EEhand->GetPosition().x;
float y = m_gestureBallSpin->GetPosition().y - m_EEhand->GetPosition().y;
if(sqrt(x*x + y*y) < 400)
{
SetTutorialState(TUTORIAL_MOVEYOURHAND_DONE);
//there it is
m_EEhand->FadeTo(0,0.5f);
if( !m_tutorialIsStopping ) {
m_moveTutorial[5]->Play([this](SoundInstance^, bool reachedEnd)
{
m gestureBallSpin->MoveTo(GetWidth()*0.5f, -GetHeight(), 0.5f);
GoToSprinkleHandState();
});
}
}
}
Решение проблем с Intel Perceptual Computing SDK
SDK от Intel дает реальный эффект погружения в игру, игроки получают немедленную реакцию программы на их действия. Это создает ощущение физического участия в происходящем. Однако разработчики столкнулись с некоторыми ограничениями в возможностях распознавания сложных движений и голосовых реакций детей.Жесты
Камера, воспринимающая жесты, сфокусирована на расстоянии около 60–90 см. Поэтому мелкие движения регистрируются лучше, чем размашистые или комплексные, выходящие за пределы данного диапазона. Оптимальный набор жестов был определен методом проб и ошибок. Специалистам пришлось подумать о различных условиях окружающей среды, освещении и расстоянии до камеры.С точки зрения SDK, API и других используемых технологий, разработать первоначальные варианты жестов несложно, потому что обучающие упражнения, образцы кода и используемые структуры имеются в SDK. После настройки среды разработки можно выполнять обучающее упражнение, например отслеживание пальцев, чтобы изучить взаимодействие сенсоров и кода в SDK.
#include "gesture render.h"
#include "pxcgesture.h"
class GesturePipeline: public UtilPipeline {
public:
GesturePipeline (void):UtilPipeline(),m_render(L"Gesture Viewer") {
EnableGestureO ;
}
virtual void PXCAPI OnGesture(PXCGesture::Gesture *data) {
if (data->active) m_gdata = (*data);
}
virtual void PXCAPI OnAlert(PXCGesture::Alert *data) {
switch (data->label) {
case PXCGesture::Alert::LABEL_FOV_TOP:
wprintf_s(L"******** Alert: Касание верхней границы.\n");
break;
case PXCGesture::Alert::LABEL_FOV_BOTTOM:
wprintf_s(L"******** Alert: Касание нижней границы.\n");
break;
case PXCGesture::Alert::LABEL_FOV_LEFT:
wprintf_s(L"******** Alert: Касание левой границы.\n");
break;
case PXCGesture::Alert::LABEL_FOV_RIGHT:
wprintf_s(L"******** Alert: Касание правой границы.\n");
break;
}
}
virtual bool OnNewFrame(void) {
return
m_render.RenderFrame(Querylmage(PXCImage::IMAGE TYPE DEPTH),QueryGesture() ,&m gdata);
}
protected:
GestureRender m render;
PXCGesture::Gesture m gdata;
};
Программисты обнаружили, что в SDK не хватает различных систем координат для жестов. Это пришлось восполнить собственными разработками.
Визуальная схема координат жестов
Изначально команда разработчиков использовала подход node[8].positionImage.x/y, игнорируя данные о глубине, т. к. они не требовались для интерпретации жестов. Но впоследствии был найден более оптимальный подход. Использовалось «глубинное изображение» и отыскивался ближайший пиксель, на основе чего эффективно определялся жест. Затем было добавлено экспоненциальное сглаживание.
Распознавание голоса
Распознавание голоса в игре сильно зависело от устройств и сюжета. На одних устройствах и в одних ситуациях оно работало хорошо, в других условиях не работало совсем.Игра должна подсказывать детям команду, которую нужно произнести, чтобы она была записана с помощью микрофона. Функция должна работать даже на фоне посторонних звуков и музыкального сопровождения игры. Распознавание голоса может работать в режиме детектирования речи, когда программа пытается определить, что вы сказали, или в режиме словаря, когда сказанное сопоставляется с вашим словарем, который определяется в случае данной игры пользователем.
Сначала специалисты попробовали первый режим и настроили его на учет любых звуков, основываясь на том, что речь маленьких детей не всегда четко артикулируется. Но результаты оказались неудовлетворительными. Тогда было решено перейти к режиму словаря. Он хорошо работает, если слова произносятся отчетливо. Разработчики попробовали добавить в словарь варианты слов, чтобы увеличить вероятность их распознавания (например, трактор — тлактол — тъяктол). Однако режим словаря не дал ожидаемых результатов, потому что чем больше в словаре единиц, тем выше вероятность ошибки. Пришлось искать компромисс между величиной списка слов и потенциальной долей ошибок. В конечном варианте список допустимых слов был сведен к минимуму, чтобы оставить возможность простого взаимодействия ребенка с игрой.
Заключение
Стадия тестирования прошла весело. Разработчики получили ценный опыт, работая с детьми, конечными пользователями приложения. И еще приятнее было увидеть готовую игру в использовании. Один из наших старших специалистов показал ее своей трехлетней дочери, и все мы были очень рады услышать, что девочка играла в «Приключения Клифорда» с огромным интересом и азартом.Теперь Scholastic не терпится применить свои технологии в новых проектах. Совместно с Symbio ведется работа над новой игрой на основе Intel RealSense 3D SDK, которую планируется выпустить осенью этого года.Анонсированная на выставке CES 2014 технология Intel RealSense — это новый образ Intel Perceptual Computing, SDK с интуитивным пользовательским интерфейсом и функциями распознавания речи, жестов, движений руки и мимики в сочетании с улучшенными 3D камерами. Intel RealSense предоставляет разработчикам дополнительные возможности, такие как использование в сканировании, редактировании, 3D-печати, а также технологии дополненной реальности. Благодаря им пользователи могут манипулировать отсканированными 3D объектами с помощью новейшей технологии сенсорного управления.