Kinect + SpCreateDefaultObjectFromCategoryId = SPERR_NOT_FOUND - PullRequest
0 голосов
/ 02 февраля 2012

Я создал решение, которое использует Microsoft SAPI для распознавания речи, определенной в файле грамматики.

Сам по себе этот код работает нормально. Тем не менее, когда я интегрирую его с той же программой, на которой запущен Kinect SDK, в строке произойдет сбой:

hr = cpRecognizer->SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN,&pAudioToken);
//At this point, HR == -2147200966 == SPERR_NOT_FOUND

Я попытался подключить внешний микрофон kinect к доступному порту микрофона и установить его в качестве микрофона по умолчанию. Это не принесло мне никакой радости.

Затем я использую pAudioToken для вызова cpRecognizer-> SetInput (pAudioToken, TRUE);

1 Ответ

1 голос
/ 09 февраля 2012

Одна вещь, которую вы должны принять во внимание, - это разница между настольными распознавателями SAPI и серверными распознавателями SAPI.К сожалению, очень сложно определить (из визуального контроля), какой из них вы включаете - оба они называются sapi.h, но идентификаторы категорий различны.

Одно простое отличие состоит в том, что SAPI_VER равен 0x055 дляверсия сервера, но 0x054 или меньше для настольного компьютера.

Однако ключевое отличие здесь заключается в том, что SPCAT_AUDIOIN (категория аудиовхода) называется по-разному в заголовке SAPI сервера и заголовке SAPI рабочего стола, и это вполне возможноотсутствие токена по умолчанию для категории аудиовхода для распознавателя сервера .

Подключение микрофона не изменит представление *1000* распознавателя сервера о том, что ввод по умолчаниюбыло бы, хотя это изменило бы вход по умолчанию для распознавателя рабочего стола.

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

...