SpeechRecognizer无法正常工作,COMException:未注册类/ UWP App Windows IoT(10.0.10586)和Visual Studio 2015更新1

萨沙

在安装Windows IoT(10.0.10586)和Visual Studio 2015 Update 1之后,当我在Raspberry Pi 2(带有Windows IoT 10.0.10586)上的Universal App中使用SpeechRecognizer时,出现COM-Exception。

如果我在Windows 10上运行SpeechRecognizer UWP App,它可以正常工作,则COM-Exception仅在Windows IoT(10.0.10586)中发生。对于较旧版本的Windows IoT和Visual Studio 2015(不带Update 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中启用以下功能:

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

编辑

就像埃里克·布朗(Eric Brown)所说的那样,RecognizeWithUIAsync似乎不适用于Windows IoT(我记错了,似乎我从未使用过RecognizeWithUIAsync,但我知道SpeechRecognizer过去可以使用)。

但是RecognizeAsync也不适用于我。没有引发异常,但是RecognizeAsync不等待语音,它直接返回SpeechRecognitionResult-object,其中Confidence被拒绝,Status为Success,但语音Text始终是一个空字符串。它适用于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中启用以下功能:

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

萨沙

最终使SpeechRecognizer可以与Windows IoT 10.0.10586和Visual Studio 2015 Update 1一起使用。

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

SpeechRecognizer现在可以通过语法文件(定义用户可以说的文件)和听写(言论自由)与ContinuousRecognitionSession和RecognizeAsync一起使用。RecognizeWithUIAsync不起作用,也可能永远不起作用(请参阅Eric Browns答案)。

注意:认为麦克风可以在其他任何应用程序中使用也是错误的,因为它也必须与SpeechRecognizer一起使用。我有一个可以与简单的录音机应用程序一起使用的麦克风,但不适用于SpeechRecognizer。还要注意,在较旧的Windows IoT版本中与SpeechRecognizer一起使用的麦克风不一定总是与Windows IoT 10.0.10586中的SpeechRecognizer一起使用。

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


如果您寻找带有语法文件示例的SpeechRecognizer ContinuousRecognitionSession,则可以查看以下项目。在评论中,您可以看到如何将其他语言与SpeechRecognizer一起使用。

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


也许Windows Updates中将来有驱动程序更新,而我们不再遇到此类问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档