Kinect for windows speech recognition что это

Обновлено: 04.07.2024

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


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


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


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


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

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

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


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

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


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

tank

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

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

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

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

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

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

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

image

  • IR Emitter – Инфракрасный излучатель. Да, это не камера. Его назначение испускать инфракрасные лучи, которые, отражаясь от предметов, попадают назад в сенсор, где их принимает:
  • IR Depth Sensor – Инфракрасный приёмник. Собирает отраженные лучи, преобразуя их в расстояние от сенсора до объекта(ов). И таким образом строится, можно сказать, матрица расстояний — целый кадр. Максимальное разрешение 640x480 (30 fps). Если говорить о переводе мне кажется, «ИК приёмник» лучше отражает суть, чем дословный «ИК датчик глубины».
  • Color Sensor – Цветная камера. Захват видео с максимальным разрешением 1280x960 (12fps). Угол обзора камеры: 43° по вертикали и 57° по горизонтали (угол обзора дальномера идентичный). Можно выбрать формат картинки: RGB или YUV.
  • Microphone Array – набор микрофонов. 4 встроенных микрофона позволяют определить местоположение источника звука и направление звуковых волн. Встроенный обработчик звукового сигнала включает подавление эха и уменьшение шума.
  • Tilt Motor – Коррекция наклона. Позволяет программно настраивать наклон сенсора в диапазоне ±27° по вертикали.

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

image

Режим 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 нет.

Ваш браузер не поддерживает видео.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Управление компьютером с помощью распознавания речи

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

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

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

KINECT для Windows SDK V2.0 развития Примечания (8) Распознавание голоса (ниже)

Использование SDK: Kinect for Windows SDK v2.0 public preview


Включите следующий, как инициализировать Kinect на этот раз, очень просто:

  1. // Инициализировать Kinect
  2. HRESULT ThisApp::init_kinect()
  3. IAudioSource* pAudioSource = nullptr;
  4. IAudioBeamList* pAudioBeamList = nullptr;
  5. / / Найти текущее значение по умолчанию Kinect
  6. HRESULT hr = ::GetDefaultKinectSensor(&m_pKinect);
  7. // Gentleman открытым Kinect
  8. if (SUCCEEDED(hr))
  9. hr = m_pKinect->Open();
  10. >
  11. // Получить аудио источник
  12. if (SUCCEEDED(hr))
  13. hr = m_pKinect->get_AudioSource(&pAudioSource);
  14. >
  15. // Получить список аудио цепи
  16. if (SUCCEEDED(hr))
  17. hr = pAudioSource->get_AudioBeams(&pAudioBeamList);
  18. >
  19. // Получить аудио
  20. if (SUCCEEDED(hr))
  21. hr = pAudioBeamList->OpenAudioBeam(0, &m_pAudioBeam);
  22. >
  23. // Получить входной аудиопоток
  24. if (SUCCEEDED(hr))
  25. IStream* pStream = nullptr;
  26. hr = m_pAudioBeam->OpenInputStream(&pStream);
  27. // Использование для создания упаковки объектов
  28. m_p16BitPCMAudioStream = new KinectAudioStreamWrapper(pStream);
  29. SafeRelease(pStream);
  30. >
  31. SafeRelease(pAudioBeamList);
  32. SafeRelease(pAudioSource);
  33. return hr;
  34. >


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

1. После завершения WAVEFORMATEX, заливка в WAVEFORMATEX, заливка в формате данных PCM.

2. SPFindBestToken инициализирует выделенную область, которая является 16-основой, материковой китайский 0x0804. Если дополнительный голос пакет, предоставляемый Kinect может быть добавлен

Набор Kinect = Туре, разделенных точкой с запятой.

3.LoadCmdFromFile Устанавливает грамматический файл, который загружает SRGS, можно также установить, является ли она динамична.

4.GetNotifyEventHandle используется для получения дескриптора события распознавания речи, эта ручка не закрыта программистом, не активный CloseHandle

Читайте также: