SpeechRecognizer不工作,COMException:类未注册/UWP应用程序Windows IoT(10.



在我安装了Windows IoT(10.0.10586)和带有更新1的Visual Studio 2015之后,当我在我的Raspberry Pi 2(带有Windows IoT 10.0.10486)上使用通用应用程序中的SpeechRecognizer时,我遇到了COM异常。

如果我在Windows 10上运行SpeechRecognizer UWP应用程序,它可以正常工作,COM异常仅发生在Windows IoT(10.0.10586)中。对于旧版本的Windows IoT和没有更新1的Visual Studio 2015,它也可以工作。

有人能解决这个问题吗?

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中启用以下功能:

互联网(客户端)和麦克风

编辑

就像Eric Brown所说的RecognizeWithUIAsync似乎不适用于Windows IoT(我记得不正确,我似乎从未使用过RecognizeWithUIAsync,但我知道SpeechRecognizer过去也适用)。

但RecognizeAsync对我也不起作用。没有抛出异常,但RecognizeAsync不等待语音,它直接返回一个SpeechRecognitionResult对象,其中属性Confidence为Rejected,Status为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中启用以下功能:

互联网(客户端)和麦克风

RecognizeWithUIAsync未在Windows IoT中实现(因为没有UI)。你可以很好地使用RecognizeAsync

终于让SpeechRecognizer与Windows IoT 10.0.10586和Visual Studio 2015 Update 1一起工作。

解决方案:使用与Windows IoT 10.0.10586完全兼容的麦克风。我使用的是Microsoft LifeCam HD-3000(附带一个麦克风)

SpeechRecognizer现在与ContinuousRecognitionSession和RecognizeAsync一起使用语法文件(定义用户可以说什么的文件)和听写(自由语音)。认识到WithUIAsync不起作用,也许永远也不会起作用(参见Eric Browns的回答)。

注意:如果麦克风在任何其他应用程序中都能工作,那么它也必须与SpeechRecognizer一起工作,这是错误的。我有一个麦克风,可以与一个简单的录音机应用程序配合使用,但不能与SpeechRecognizer配合使用。还要注意的是,在旧的Windows IoT版本中与SpeechRecognizer配合使用的麦克风并不总是必须在Windows IoT 10.0.10586中与Speech Recognizer一起使用。

使用网络摄像头作为麦克风并不是很好。如果有人有一个可与SpeechRecognizer和Windows IoT 10.0.10586配合使用的麦克风,请将其发布。


若你们想找一个带有语法文件示例的SpeechRecognizer ContinuousRecognitionSession,你们可以在下面的项目中查找。在评论中,您可以看到如何使用SpeechRecognizer使用其他语言。

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


也许在未来的Windows更新中会有驱动程序更新,我们不再有这样的问题。

最新更新