Перейти к содержимому

Kinect for windows speech recognition что это

  • автор:

Kinect для Windows

Производство Kinect для Windows прекращено. Следующее поколение датчика глубины, определяющего категории майкрософт, используется в Azure Kinect DK, комплекте разработчиков с расширенными датчиками ИИ для сложных моделей компьютерного зрения и речи. Дополнительные сведения см. на веб-сайте Azure Kinect.

Kinect для Windows SDK 2.0

Создавайте классические приложения для Windows 10 или продавайте приложения UWP Kinect версии 2 в Microsoft Store, чтобы воспользоваться преимуществами уникальных функций среда выполнения Windows и расширить распространение.

изображение теплового зрения Kinect в пакете SDK.

Ресурсы для разработчиков

Содержимое для разработчиков
Узнайте, как реализовать различные функции Kinect для Windows и дополнительные сведения о средствах, таких как Kinect Studio, которые поддерживают ваш опыт разработки.
Учебники и документация по API
Рекомендации по человеческому интерфейсу (PDF)

Сообщество
Свяжитесь с корпорацией Майкрософт и другими разработчиками, такими как вы, на технических форумах, Facebook и Twitter, чтобы быть в курсе последних новостей и объявлений, относящихся к разработке приложений и игр для Windows.
Технический форум Kinect для Windows
Другие форумы разработчиков

Поддержка оборудования
Получите советы по устранению неполадок, сведения о гарантии и безопасности и многое другое.
Поддержка датчика Kinect для Xbox One
Поддержка датчика Kinect для Windows версии 2
Свяжитесь с нами

Инструменты и расширения

Средства разработчика Windows

Эти средства включают в себя бесплатный полнофункциональный клиент Visual Studio Community, универсальные шаблоны приложений, редактор кода, мощный отладчик, эмуляторы Windows Mobile, расширенную языковую поддержку и многое другое, готовые к использованию в рабочей среде.
Подробнее

Средства разработчика Windows

Эти средства включают в себя бесплатный полнофункциональный клиент Visual Studio Community, универсальные шаблоны приложений, редактор кода, мощный отладчик, эмуляторы Windows Mobile, расширенную языковую поддержку и многое другое, готовые к использованию в рабочей среде.
Подробнее

Надстройки NuGet и Unity Pro

Установите пакет SDK для Kinect 2.0 и используйте пакеты NuGet для улучшения платформа .NET Framework разработки. Вы также можете воспользоваться преимуществами пакетов Unity Pro для создания приложений Unity на основе Kinect.
Пакеты NuGet
Пакеты Unity Pro

Kinect для языковых пакетов Windows

Языковые пакеты позволяют добавлять распознавание речи в приложения Kinect для Windows.
Получение языковых пакетов Kinect для Windows версии 11.0

DirectX SDK

Так как windows SDK является основным пакетом SDK для разработчиков для Windows, в него теперь включен DirectX. Теперь вы можете использовать Windows SDK для создания отличных игр для Windows.
Дополнительные сведения о пакете SDK для DirectX.

Microsoft Speech Platform SDK 11

Вы можете использовать технологии и средства из пакета SDK для платформы речи 11, чтобы предоставить приложениям возможность распознавать произносимые слова (распознавание речи) и генерировать синтезированную речь (преобразование текста в речь или TTS). С помощью этого пакета SDK вы можете предоставить пользователям эффективный и естественный способ взаимодействия с вашими приложениями, дополняя использование мышей, клавиатур, контроллеров и жестов.
Microsoft Speech Platform SDK 11

Средство проверки конфигурации Kinect

Запустите средство проверки конфигурации Kinect, чтобы проверка системы на наличие проблем и убедиться, что вы используете последнюю версию драйвера для GPU.
Запуск средства проверки конфигурации Kinect

Kinect for Windows SDK. Часть 3. Функциональные возможности

С помощью такой замечательной функции Kinect способен распознать фигуру человека и его движения. И, на самом деле, даже не одного, а целых шести! В смысле определить, что в поле зрения сенсора находиться до шести людей, но только для двух может быть собрана детальная информация. Взгляните на рисунок:

image

Лично у меня первый вопрос был: «Почему именно для этих двух перцев он[Kinect] построил полный 20-ти точечный скелет, а у остальных показал только пупки?» Но дело тут не в дискриминации, просто так сенсор действует по умолчанию – для первых двух распознанных фигур строится детальный скелет, остальные довольствуются тем, что их хотя бы заметили. В MSDN есть даже пример, как изменить это поведение, например, чтобы строить детальный скелет для ближайших к сенсору людей.

Точки в построенном скелете называются Joint, что можно перевести как сустав, соединение, узел. Узел мне кажется более адекватным переводом, да и голову называть суставом, как-то не очень хорошо.

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

// подписываемся на событие с координатами найденных фигур в кадре sensor.SkeletonFrameReady += SkeletonsReady; // включаем поток sensor.SkeletonStream.Enable(); 

Второе – обработать событие SkeletonFrameReady. Все что остается сделать – извлечь из кадра информацию об интересующих фигурах. Одна фигура – один объект класса Skeleton. Объект хранит данные о состоянии трекинга — свойство TrackingState (построен ли полный скелет или же известно только о местоположении фигуры), данные об узлах фигуры – свойство Joints. По сути это словарь, ключами которого являются значения перечисления JointType. Вот например, захотелось вам получить местоположения левого колена – нет ничего проще!

Joint kneeLeft = skeleton.Joints[JointType.KneeLeft]; int x = kneeLeft.Position.X; int y = kneeLeft.Position.Y; int z = kneeLeft.Position.Z; 

Значения перечисления JointType оригинально показаны на рисунке витрувианского человека.

image

До этих строк я писал о 20-ти узловом скелете. Построить который не всегда представляется возможным. Так появился режим, называемый трекинг сидящей фигуры (seated skeletal tracking). В этом режиме сенсор строит не полный 10-ти узловой скелет.

image

Чтобы Kinect начал распознавать фигуры в этом режиме достаточно установить свойство TrackingMode объекта SkeletonStream во время инициализации потоков:

kinect.SkeletonStream.TrackingMode = SkeletonTrackingMode.Seated; 

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

Другая статья цикла — Играем в кубики с Kinect, целиком посвящена теме трекинга человеческой фигуры.

Распознавание речи

Строго говоря, распознавание речи не является встроенной возможностью Kinect, так как для этого используется дополнительный SDK, а сенсор выступает в роли источника аудиосигнала. Поэтому для разработки приложений распознавания речи потребуется установка Microsoft Speech Platform. По желанию можно устанавливать разные языковые пакеты, а для клиентских машин существует отдельный пакет (speech platform runtime).

  1. выбрать обработчик (engine) распознавания для требуемого языка из доступных в системе;
  2. создать словарь и передать его выбранному обработчику. Говоря по-человечески, необходимо решить какие слова ваше приложение должно уметь распознавать и передать их обработчику распознавания в виде строк (нет нужды создавать аудиофайлы со звучанием каждого слова);
  3. установить для обработчика источник аудиосигнала. Это могут быть Kinect, микрофон, аудиофайл;
  4. дать команду обработчику для начала распознавания.
Трекинг лица

В отличие от трекинга фигуры, трекинг лица полностью реализуется программно, на основании данных получаемых из видеопотока (color stream) и потока данных дальномера (depth stream). Поэтому от ресурсов клиентского компьютера будет зависеть то, как быстро будет работать трекинг.

Стоит отметить, что трекинг лица (face tracking) это не то же самое что распознавание лиц (face recognition). Забавно, но в некоторых статьях встречал именно рассказы о том, что в Kinect реализована функция распознавания лиц. Так что же такое трекинг лица и где он может быть полезен?

Трекинг лица – это слежение за лицом человека в кадре с построением 87-ми узловой схемы лица. В MSDN сказано, есть возможность следить за несколькими лицами, но не сказано о верхнем пределе, вероятно, он равен двум (для стольких людей сенсор может построить N узловой скелет). Функционал может быть полезен в играх, чтобы ваш персонаж (avatar) мог передать всю палитру отображаемых на вашем лице эмоций; в приложениях, которые адаптируются под ваше настроение (плаксивое или игривое); в приложениях распознавания лиц, наконец, или даже эмоций (доктор Лайтман?).

Итак, схема. Собственно вот она (схема моей мечты):

image

Помимо этих 87 узлов, вы можете получить координаты еще для 13: центры глаз, носа, уголки губ и границы головы. SDK даже может построить 3D маску лица, как показано на следующем рисунке:

image

Теперь, вооружившись общим понимание трекинга лица реализуемого Face Tracking SDK, самое время познакомиться с ним поближе. Face Tracking SDK – это COM-библиотека (FaceTrackLib.dll), входящая в состав Developer Toolkit. Там же есть и проект обертка (wrapper) Microsoft.Kinect.Toolkit.FaceTracking, который можно смело использовать в managed проектах. К сожалению, найти описание обертки не получилось, кроме приведенной ссылки (полагаю, что пока идет активная разработка и пока Face Tracking SDK не включен в состав Kinect SDK, остается только ожидать появление справки в MSDN).

Я остановлюсь лишь на нескольких классах. Центральное место занимает класс FaceTracker, как ни странно. В его задачи входит инициализация обработчика (engine) трекинга и слежение за перемещениями человека в кадре. Перегруженный метод Track, позволяет осуществлять поиск человека по данным с видеокамеры и дальномера. Одна из перегрузок метода принимает фигуру человека — Skeleton, что положительно сказывается на скорости и качестве поиска. Класс FaceModel помогает в построении 3D моделей, а так же занимается трансформацией моделей в систему координат камеры. В проекте Microsoft.Kinect.Toolkit.FaceTracking помимо классов оберток, можно найти и более простые, но не менее полезные типы. Например, перечисление FeaturePoint описывает все узлы схемы лица (см. выше рисунок с 87 точками).

  1. выбрать сенсор и включить видеопоток (color stream), поток данных дальномера (depth stream) и поток трекинга фигуры (skeleton stream);
  2. добавить обработчик события сенсора AllFramesReady, которое возникает, когда кадры всех потоков готовы к использованию;
  3. в обработчике события инициализировать FaceTracker (если это еще не сделано) пройтись по найденным в кадре фигурам и собрать для них построенные схемы лиц;
  4. обработать схемы лиц (например, показать построенную 3D маску или определить эмоции людей в кадре).

Помните, что качество нахождения лица в кадре зависит как от расстояния до головы, так и от её положения (наклонов). Приемлемыми наклонами головы для сенсора считаются вверх-вниз ±20°, влево-вправо ±45°, наклон на бок ±45°. Оптимальными будут ±10°, ±30° и ±45° для наклонов вверх-вниз, влево-вправо и набок соответственно (см. 3D Head Pose).

Kinect Studio

Когда первый раз пытаешься написать, что-то для Kinect, чувство того, что чего-то не хватает, не покидает ни на минуту. И когда в сотый раз настраиваешь точки останова так, чтобы они сработали именно при определенном жесте, и когда в сотый раз делаешь этот жест перед камерой, вот тогда и понимаешь чего же не хватает на самом деле! Простого эмулятора. Чтобы можно было записать нужные жесты, а потом спокойно сидеть и отлаживаться. Как ни странно, лучи добра посланные разработчиками всего мира, испытавшими разработку для Kinect, достигли цели. В состав Developer Toolkit вошел инструмент под названием Kinect Studio.

Kinect Studio

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

Чтобы начать работать с Kinect Studio, вы подключаетесь к приложению и выбираете сенсор. Теперь все готово к тому, чтобы начать запись (recording) данных сенсора или инжекцию (injection) сохраненных данных.

image

Послесловие

Статья-обзор, которая даже не планировалась, за время работы претерпела не одно изменение, а в результате разделилась на три части. В них я попытался собрать материал, который находил на просторах всемирной паутины. Но все таки главным источником знаний был и остается MSDN. Сейчас Kinect скорее напоминает котенка, который только-только учиться ползать, чем продукт, который можно воспринимать не только как just for fun. Я сам отношусь к нему с определенным скепсисом. Но кто знает, что будет завтра. Сейчас Kinect показывает хорошие результаты в игровой индустрии, а Kinect for Windows открывает простор для творчества разработчикам всего мира.

  • kinect for windows sdk
  • .net

Kinect for Windows Speech Recognition Language Pac 11.0.7400.336

Kinect for Windows Speech Recognition Language Pac 11.0.7400.336

Kinect for Windows Speech Recognition Language Pack is a software tool developed by Microsoft Corporation that expands the speech recognition capability of the Kinect sensor to various languages. With this language pack, the Kinect sensor can recognize and interpret spoken commands in languages beyond its pre-installed English language option.

The available languages for the Kinect for Windows Speech Recognition Language Pack vary and are dependent on the region where the software is being used. Some common languages that may be available include Spanish, French, German, Italian, Japanese, and Chinese.

Using this language pack requires installation on a computer with the Kinect for Windows Sensor and the Kinect for Windows SDK. Developers can then use this tool to incorporate speech recognition capabilities into their applications and create software that responds to spoken commands in multiple languages.

The Kinect for Windows Speech Recognition Language Pack is a useful tool for developers who want to create applications that can effectively communicate and interact with users in different countries and regions. It allows them to expand their reach and build products that cater to a wider global audience.

Обзор

Kinect for Windows Speech Recognition Language Pac это программное обеспечение Shareware в категории (2), разработанная Microsoft Corporation.

Проверяли обновления 597 раз пользователями нашего клиентского приложения UpdateStar в прошлом месяце.

Последняя версия Kinect for Windows Speech Recognition Language Pac-11.0.7400.336, выпущенный на 03.10.2016. Первоначально он был добавлен в нашу базу данных на 20.07.2012. Самой распространенной версией является 11.0.7400.336, который используется в 100% всех установок.

Kinect for Windows Speech Recognition Language Pac работает на следующих операционных системах: Windows.

Kinect for Windows Speech Recognition Language Pac не был оценен нашими пользователями еще.

Написать обзор для Kinect for Windows Speech Recognition Language Pac!

Программа, апорт!

Начнем с того, что попытаемся найти подключенный сенсор. Класс KinectSensor предоставляет такую возможность с помощью свойства KinectSensors:

KinectSensor kinect = KinectSensor.KinectSensors .Where(s => s.Status == KinectStatus.Connected) .FirstOrDefault(); 

Обработчик распознавания речи – класс SpeechRecognitionEngine, его статический метод InstalledRecognizers() помогает получить информацию обо всех установленных в системе обработчиках.

RecognizerInfo info = SpeechRecognitionEngine.InstalledRecognizers() .Where(ri => string.Equals(ri.Culture.Name, "en-US", StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefault(); 

Нетрудно догадаться, что таким образом мы получаем информацию об обработчике распознавания английской речи (RecognizerInfo), если такой обработчик есть. Метод InstalledRecognizers не возвращает экземпляров обработчиков, а лишь информацию о них. Поэтому следующим шагом будет создание экземпляра обработчика. Просто передаем в конструктор идентификатор обработчика:

var sre = new SpeechRecognitionEngine(info.Id); 

Теперь подумаем вот о чем. Нам нужно управлять объектом на плоскости. Какие команды подойду для этого? Думаю, что 4 команд достаточно: UP (вверх), DOWN (вниз), LEFT (влево), RIGHT (вправо). И для разнообразия можно добавить пятую команду EXIT (выход). Замечу, что я писал код для распознавания команд на английском языке, но вы можете выбрать любой другой из 54х доступных. Создаем словарь команд и загружаем его в обработчик распознавания.

var commands = new Choices(); commands.Add("up"); commands.Add("down"); commands.Add("left"); commands.Add("right"); commands.Add("exit"); var gb = new GrammarBuilder(commands) < Culture = info.Culture >; sre.LoadGrammar(new Grammar(gb)); 

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

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

Теперь можно определить обработчики для событий распознавания речи. Для нас важно обработать событие SpeechRecognized возникающее, когда обработчик распознавания находит в словаре соответствие произнесенной команде. В объекте SpeechRecognizedEventArgs нам доступно свойство Result в котором можно найти: распознанное слово, величину вероятности того, что слово распознано правильно и многое другое. Два других события SpeechHypothesized и SpeechRecognitionRejected представляют интерес скорее для отладки, нежели для реального использования. Первое событие возникает, когда обработчик распознавания делает предположение распознавания. Второе,- когда обработчик распознавания может определить слово лишь с малой долей вероятности.

private void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) < // если вероятность распознавания больше 70% if (e.Result.Confidence >= 0.7) < Action handler = null; switch (e.Result.Text.ToUpperInvariant()) < case "UP": case "DOWN": case "LEFT": case "RIGHT": handler = () =>< /* some actions */ >; break; case "EXIT": handler = () => < this.Close(); >; break; default: break; > if (handler != null) < // обработчик вызывается асинхронно, поэтому действия связанные с обновлением UI необходимо делать через диспетчер Dispatcher.BeginInvoke(handler, DispatcherPriority.Normal); >> > 

Нам осталось только установить источник аудиосигнала и начать распознавание. Здесь хочется отметить особенность Kinect. Аудиопоток готов для работы примерно через 4 секунды после инициализации. Это стоит учитывать и, например, создавать таймер, чтобы запускать распознавание с 4-х секундной задержкой.

Помните, я в начале говорил, что наш код будет работать как с Kinect так и с обычным микрофоном? Для того, чтобы это реализовать достаточно правильно установить источник аудиосигнала.

if (kinect != null) < var audioSource = kinect.AudioSource; audioSource.BeamAngleMode = BeamAngleMode.Adaptive; var kinectStream = audioSource.Start(); // захват с микрофонов Kinect sre.SetInputToAudioStream(kinectStream, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); >else < // будем захватывать аудиосигнал с микрофона установленного по умолчанию sre.SetInputToDefaultAudioDevice(); >// начинаем распознавание. Параметр говорит обработчику распознавания не останавливаться после первой распознанной команды. sre.RecognizeAsync(RecognizeMode.Multiple); 

Что касается UI, то здесь все просто. Рисуем объект любой формы (это может быть даже картинка), я нарисовал танк.

tank

И добавляем анимацию для перемещения. Конечно, чтобы не создавать комичных ситуаций, когда танк движется «боком», я добавил еще и анимацию для разворота в нужную сторону. Пример анимации для выполнения команды LEFT (налево):

Распознавание в действии:

Файлы исходного кода и скомпилированную версию вы найдете в конце статьи. Обратите внимание, что если вы запускаете скомпилированный пример без установленного Speech SDK, вам необходимо установить Microsoft Speech Platform Runtime и обработчик распознавания английского языка MSSpeech_SR_en-US_TELE.msi

Подводя итог скажу, что Microsoft Speech Platform действительно большой и интересный продукт, я коснулся лишь его малой части. Интересующимся я бы посоветовал посмотреть примеры работы с этой платформой в Kinect SDK, мне кажется это хорошая отправная точка.

В заключение хочется поблагодарить компанию VIAcode за предоставленный для экспериментов сенсор.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *