2

После того, как я установил Windows IoT (10.0.10586) и Visual Studio 2015 с обновлением 1, я получил COM -Exception, когда я использую SpeechRecognizer в универсальном приложении на моей малине Pi 2 (с Windows IoT 10.0.10586).SpeechRecognizer не работает, COMException: класс не зарегистрирован/приложение UWP Windows IoT (10.0.10586) и обновление Visual Studio 2015 1

Если я запустил приложение UWP SpeechRecognizer в Windows 10, он работает без проблем, COM-исключение происходит только в Windows IoT (10.0.10586). С более старой версией Windows IoT и Visual Studio 2015 без обновления 1 она тоже работает.

У кого-нибудь есть решение проблемы?

var speechRecognizer = new SpeechRecognizer(); 
var constraint = new SpeechRecognitionTopicConstraint(SpeechRecognitionScenario.Dictation, "dictation"); 
speechRecognizer.Constraints.Add(constraint); 
await speechRecognizer.CompileConstraintsAsync(); 

//This line throw exception: 
//Exception thrown: 'System.Runtime.InteropServices.COMException' in App.exe 
//WinRT information: Class not registered 
//Operation not supported.Unknown error: 0x80070057. 
var result = await speechRecognizer.RecognizeWithUIAsync(); 

Чтобы получить образец работы включить следующие возможности в Package.appxmainifest:

Интернет (клиент) и микрофон

Редактировать

Как Эрик Браун сказал RecognizeWithUIAsync, кажется, не для работы с Windows IoT (я помню не правильно, похоже, я никогда не использовал RecognizeWithUIAsync, но я знаю, что SpeechRecognizer работает в прошлом).

Но RecognizeAsync не работает для меня тоже. Исключение не выбрано, но RecognizeAsync не ждет речи, он напрямую возвращает объект SpeechRecognitionResult, где свойство Confidence is Rejected и Status is Success, но произнесенный текст всегда является пустой строкой. Он работает на Windows 10, но не на Windows IoT.

Есть ли у кого-нибудь идея, почему не обнаружена речь/произнесенные слова не будут возвращены?

var speechRecognizer = new SpeechRecognizer(); 
var constraint = new SpeechRecognitionTopicConstraint(SpeechRecognitionScenario.Dictation, "dictation"); 
speechRecognizer.Constraints.Add(constraint); 
await speechRecognizer.CompileConstraintsAsync(); 
while (true) 
{ 
    var result = await speechRecognizer.RecognizeAsync(); 
    Debug.WriteLine(!string.IsNullOrEmpty(result.Text) ? result.Text : "No speech in result."); 
} 

Чтобы получить образец работы включить следующие возможности в Package.appxmainifest:

Интернет (клиент) и микрофон

+0

Вы проверили, установлены ли какие-либо языки? –

+0

Спасибо за ваш ответ. Я проверил его, да, был установлен en-US, и я установил de-DE, но все еще не работает. – Sascha

+0

Какой тип устройства для подключения микрофона и аудиосигнала вы подключили? Можете ли вы проверить, что аудио вход работает вообще? –

ответ

2

Наконец получил SpeechRecognizer работать с Windows, IoT 10.0.10586 и Visual Studio 2015 Update 1.

Решение: Используйте микрофон, который полностью совместим с ОС Windows IoT 10.0.10586. Я использую Microsoft LifeCam HD-3000 (есть микрофон в комплекте).

SpeechRecognizer теперь работает с ContinuousRecognitionSession и RecognizeAsync с грамматическим файлом (файл, который определяет, что пользователь может сказать) и с диктовкой (свободная речь). RecognizeWithUIAsync не работает и, возможно, никогда не будет работать (см. Ответ Эрика Браунса).

Примечание. Ошибочно полагать, что если микрофон работает в любом другом приложении, он также должен работать с SpeechRecognizer. У меня есть микрофон, который работает с простым приложением звукозаписи, но не работает с SpeechRecognizer. Также обратите внимание, что микрофоны, работающие с SpeechRecognizer в старых версиях Windows IoT, не всегда должны работать с SpeechRecognizer в Windows IoT 10.0.10586.

На самом деле не очень приятно использовать веб-камеру в качестве микрофона. Если у кого-то есть микрофон, который работает с SpeechRecognizer и Windows IoT 10.0.10586, пожалуйста, опубликуйте его.


Если вы ищете SpeechRecognizer ContinuousRecognitionSession с примером файла грамматики, вы можете посмотреть в следующем проекте. В комментариях вы можете увидеть, как вы можете использовать другие языки с SpeechRecognizer.

https://www.hackster.io/krvarma/rpivoice-051857


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

+1

Я проверил четыре других USB-микрофона. Два из них работали с SpeechRecognizer в Windows IoT 10.0.10568. Микрофоны, которые работают: «Blue Microphones Snowball» (это действительно большой) и «Kinobo - Mini Akiro USB Microphone». – Sascha

+0

Я могу подтвердить, что непрерывное распознавание речи работает на Windows IoT 10.0.10586 с микрофоном Kinobo. Дешевая покупка с хорошим качеством и дальностью :) – Jensen

+0

Возможно, также интересно: http://stackoverflow.com/questions/35938495/usb-microphone-not-working-with-windows-iot-core – Sascha

2

RecognizeWithUIAsync не реализована в ОС Windows IoT (потому что нет UI) , Вы можете использовать RecognizeAsync просто отлично.