Kinect for windows speech recognition что это

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

Трекинг человеческой фигуры

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

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

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

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

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

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

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

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

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

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

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

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

Трекинг лица

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

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

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

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

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

Теперь, вооружившись общим понимание трекинга лица реализуемого 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 точками).

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

Kinect Studio

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

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

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

Источник

Kinect for Windows SDK. Часть 1. Сенсор

Как вам должно быть известно, Kinect – это бесконтактный контроллер, т.е. скажем в играх, вместо того, чтобы яростно стучать по клавиатуре или терзать gamepad, вы размахиваете руками и ногами и время от времени голосом даете какие-то команды. Самое время спрятать дорогие китайские вазы X века подальше!

Начинать знакомство с Kinect лучше со знакомства с самим сенсором. Это небольшая черная коробочка с тремя камерами, длиной чуть более 20 см и высотой около 5 см (не считая ножки). Один нюанс – в Kinect две камеры. И это изображение (взято из MSDN) тому подтверждение.

Другой важный аспект аппаратной части – диапазон «рабочих» расстояний, т.е. на каком расстоянии сенсор способен видеть объекты (данные дальномера). И снова картинка помогает продемонстрировать возможности Kinect.

Режим Default Range доступен как для Kinect for Windows, так и для Kinect for XBox, но Near Range доступен только для сенсора Kinect for Windows. Простой пример: для всех объектов в кадре находящихся в пределах Normal Values сенсор вернёт измеренное расстояние, но для объектов, выходящих за этот диапазон, сенсор вернёт либо ноль, либо определенную для каждого диапазона константу (зависит от заданных вами настроек). Одно из существенных отличий SDK 1.5 от 1.0 в том, что теперь в режиме Near Range можно получить информацию о сидящем человеке, это так называемый трекинг сидящей фигуры (seated skeletal tracking). Kinect отслеживает 10 точек: голову, шею и руки. Но об этом чуть позже.

Хочется обратить внимание на различия двух Kinect (XBox и Windows). Первый разрабатывался и тестировался с одним устройством – XBox. Второй же, напротив, должен работать с широким диапазоном устройств (компьютеров), поэтому его кабель короче, а специальное устройство призвано не позволить Kinect подраться с остальной USB периферией. Лицензионное соглашение позволяет использовать Kinect for Windows в коммерческих целях, а Kinect for XBox нет.

Источник

Kinect, прием Как работает функция распознавания голоса в игровом сенсоре

Сенсор Kinect известен как устройство, которое распознает жесты и движения человека и позволяет играть в игры, не используя контроллеры. Попросту говоря, вместо джойстика или геймпада игрок использует собственное тело. Однако возможности Kinect этим не ограничиваются. Сенсор понимает голосовые команды, которые геймер отдает ему с другого конца комнаты. Доктор Иван Ташев, один из ведущих исследователей в группе технологий речи Microsoft Research, рассказал «Ленте.ру» о том, как работает функция распознавания голоса в Kinect, почему геймерам не нужна аудиогарнитура, ожидать ли нам игры с голосовым управлением и будет ли устройство поддерживать русский язык.

Иван Ташев, фотография с сайта Microsoft Research

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

Поэтому Kinect нужны целых четыре микрофона?

Помочь нам отсечь звук из динамиков и снизить реверберации и шум могут сразу несколько технологий. Одна из них носит название технологии направленных микрофонов.

Распознавание речи применяется пока в основном в развлекательной сфере: это игровой Kinect, угадыватели песен наподобие Shazam и так далее. Найдет ли эта технология более «серьезное» применение? Представим: включает пользователь компьютер и говорит ему: а запусти-ка Outlook и напиши моему бизнес-партнеру, что встреча в четверг отменяется.

Ну и проговаривать вслух все подряд тоже не хочется.

Источник

Использование распознавания речи в Windows

Просмотрите это видео об использовании распознавания речи для работы с компьютером. (Чтобы просмотреть субтитры, нажмите кнопку «Субтитры».)

Просмотрите это видео об использовании диктовки с распознаванием речи. (Чтобы просмотреть субтитры, нажмите кнопку «Субтитры».)

Распознавание речи Windows делает использование клавиатуры и мыши необязательным. Вместо этого теперь можно управлять компьютером с помощью голоса и диктовать текст для ввода.

Примечание: Распознавание речи доступно только для следующих языков: английский (США и Соединенное Королевство), французский, немецкий, японский, мандаринский диалект (китайский (упрощенное и традиционное на китайском языке) и испанский.

Прежде чем использовать распознавание речи, необходимо выполнить несколько действий. Сначала нужно настроить микрофон. Затем можно научить компьютер распознавать ваш голос.

Прежде чем приступить к настройке функции распознавания речи, убедитесь, что микрофон подключен к компьютеру, иначе настройка не удастся.

Выполните прокрутку от правого края экрана и нажмите кнопку Поиск.
(Если вы используете мышь, найдите правый нижний угол экрана, переместите указатель мыши вверх и нажмите кнопку «Поиск».)

Поиск также можно открыть с помощью клавиатуры, нажав клавиши Windows+Q.

Введите в поле поиска настройка микрофона, а затем выберите элемент Настройка микрофона.

Следуйте указаниям на экране.

Примечание: По возможности используйте микрофон гарнитуры — это снижает вероятность фонового шума.

Обучение компьютера распознаванию речи

Программа распознавания речи использует особый речевой профиль для распознавания голоса пользователя и произносимых команд. Чем дольше вы пользуетесь распознаванием речи, тем более подробным становится ваш речевой профиль и тем лучше компьютер интерпретирует ваши команды.

Выполните прокрутку от правого края экрана и нажмите кнопку Поиск.
(Если вы используете мышь, найдите правый нижний угол экрана, переместите указатель мыши вверх и нажмите кнопку «Поиск».)

Поиск также можно открыть с помощью клавиатуры, нажав клавиши Windows+Q.

Введите в поле поиска распознавание речи, а затем коснитесь элемента Распознавание речи или щелкните его.

Нажмите или щелкните элемент Обучить компьютер для улучшения распознавания вашего голоса.

Следуйте инструкциям по настройке речевого ввода для распознавания речи.

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

Диктовка текста с помощью программы распознавания речи

Выполните прокрутку от правого края экрана и нажмите кнопку Поиск.
(Если вы используете мышь, найдите правый нижний угол экрана, переместите указатель мыши вверх и нажмите кнопку «Поиск».)

Поиск также можно открыть с клавиатуры, нажав клавиши Windows +Q.

Введите в поле поиска распознавание речи, а затем коснитесь элемента Распознавание речи Windows или щелкните его.

Произнесите команду «Start listening» либо коснитесь кнопки микрофона или нажмите ее, чтобы войти в режим прослушивания.

Откройте приложение или выберите текстовое поле, куда нужно вставить продиктованный текст.

Исправлять ошибки можно тремя способами:

Чтобы исправить последнюю произнесенную фразу, скажите «Correct that».

Чтобы исправить одно слово, произнесите команду «Correct», а затем это слово. Если слово повторяется несколько раз, то все случаи его употребления будут выделены, и можно выбрать тот, который нужно исправить.

Назовите номер, указанный рядом с нужным элементом в диалоговом окне Панель вариантов, а затем скажите «ОК».

Добавление и изменение слов в словаре

При помощи словаря распознавания можно добавлять собственные слова, запрещать диктовку определенных слов, а также исправлять и удалять слова из словаря.

Выполните прокрутку от правого края экрана и нажмите кнопку Поиск.
(Если вы используете мышь, найдите правый нижний угол экрана, переместите указатель мыши вверх и нажмите кнопку «Поиск».)

Поиск также можно открыть с клавиатуры, нажав клавиши Windows +Q.

Введите в поле поиска распознавание речи, а затем коснитесь элемента Распознавание речи Windows или щелкните его.

Произнесите команду «Start listening» либо коснитесь кнопки микрофона или нажмите ее, чтобы войти в режим прослушивания.

Произнесите команду «Open speech dictionary» и выполните любое из этих действий:

Чтобы добавить слово в словарь, произнесите команду «Add a new word» и следуйте указаниям.

Чтобы запретить диктовку определенного слова, произнесите команду «Prevent a word from being dictated» и следуйте указаниям.

Для управления компьютером можно использовать простые короткие команды. В таблице ниже даны некоторые наиболее часто используемые команды распознавания речи. Слова, выделенные полужирным шрифтом, указывают на то, что можно заменить примером слова или фразы похожими словами и получить полезные результаты.

Для управления компьютером также можно использовать сочетания клавиш. Со списком всех доступных сочетаний можно ознакомиться в разделе Сочетания клавиш.

Примечание: Если вы не знаете, какие команды использовать, произнесите «What can I say?».

Источник

Распознавание и анализ речи с помощью библиотеки SPEECH RECOGNITION, PYAUDIO и LIBROSA

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

Если простыми словами скрытую марковскую модель можно объяснить на примере.

Допустим, есть два человека, которые каждый вечер созваниваются и обсуждают свои действия в течение дня. Выбор одного из друзей: ходил за покупками; гулял в парке; занимался домашними делами. При выборе активности, он полагался лишь на погоду. Второй же знал о погоде, которая была на тот момент в месте первого и, основываясь на выборе первого, мог догадаться, какая погода была в какой-то момент.

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

В последствии мы сопоставляем фонемы и эти векторы, а так как звук фонемы изменяется от источника к источнику, то процесс сопоставления требует обучения.

Для python существует несколько пакетов которые используются в данной сфере речи, такие как apiai, assemblyai и другие, но Speech Recognition выделяется среди них довольно высокой простотой использования.

Библиотека Speech Recognition — это, инструмент для передачи речевых API от компаний (google, microsoft, sound hound, ibm, а также pocketsphinx), который в отличие от остальных имеет возможность работы офлайн.

Для демонстрации работы в данной статье я буду использовать дефолтный Google Speech API.

Также для работы с инструментами потребуется библиотека pyAudio.

Установим библиотеку для распознавания речи:

Для работы с инструментами звукозаписи

Бываю некие сложности с установкой pyaudio через pip, поэтому альтернативный вариант — установка pipwin или conda

Для анализа звуковых данных

Для работы с wave файлами

и импортируем в код

Для начала нужно выставить параметры записи звука:

Далее нужно создать объект для обращения к устройству звукозаписи:

и открыть поток для записи звука:

Дальше нам нужно записать оцифрованную звуковую дорожку в файл.

Для этого нам и пригодится библиотека wave:

В итоге мы получаем готовую звуковую дорожку записанную с микрофона устройства и готовую к распознаванию для этого нам потребуется библиотека Speech Recognition:

Непосредственно для распознавания текста нам потребуется класс Recognizer он имеет множество функций, а также определяет каким API мы будем пользоваться:

Открываем записанный файл.

Для расшифровки сигнала мы будем использовать метод recognize_google().

Для использования данного метода необходим объект AudioData и для дальнейшей работы требуется преобразовать сигнал в объект модуля Speech_recognition для этого существует метод record():

но, перед тем как передать сигнал на расшифровку, нужно очистить его от шумов. У библиотеки speech_recognition есть для этого метод adjust_for_ambient_noise()

Так как выбранный нами Api поддерживает русский язык мы можем им воспользоваться:

Распознаватель возвращает: «Привет»

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

Далее можно приступить к получению аналитических данных с помощью библиотеки librosa. Для начала загружаем наш файл:

в данном случае мы получаем значения временного ряда звука в качестве массива с частотой дискретизации.

Далее мы можем вернуть график массива нашей звуковой дорожки. Для работы с графиком импортируем pyplot из библиотеки matplotlib и используем librosa.display.waveplot() для построения графика массива:

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

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

Источник

Операционные системы и программное обеспечение