编程语言
首页 > 编程语言> > C#-SpeechRecognitionEngine识别器

C#-SpeechRecognitionEngine识别器

作者:互联网

我刚刚下载了fr-FR运行时语言包,以便可以通过程序识别法语.

但是,我的程序抛出错误

Additional information: No recognizer of the required ID found.

SpeechRecognitionEngine recognizer = 
    new SpeechRecognitionEngine(new System.Globalization.CultureInfo("fr-FR"));

en-US和en-GB之所以有效,是因为它们已预先安装在我的系统中,我刚刚安装了这些新的语言包,但它们仍然抛出此异常.

另外,如果这有帮助,我什么时候做

foreach (var x in SpeechRecognitionEngine.InstalledRecognizers())
{
    Console.Out.WriteLine(x.Name);
}

它打印

MS-1033-80-DESK

编辑:这不是可能的重复,因为这与没有安装识别器无关,这是关于C#SAPI没有看到我已经安装了当前语言的包

解决方法:

我能够使它正常工作…涉及一个额外的步骤.

由于您使用的是System.Speech,因此它使用Windows随附的已安装的桌面语音识别.您得到的错误不是因为您没有安装该语言,而是因为您没有安装该语言的语音识别器.

因此,转到设置>时间和语言>区域和语言(可能是您安装语言的来源).安装语言后,选择语言,然后单击“选项”.您应该会看到用于下载语言包,拼写检查的选项,以及我们感兴趣的语音选项.单击下载,然后等待下载/安装完成.

完成后,您将不会收到通知,但可以进入“设置”>时间和语言>语音并在那里查看已安装的识别器,也可以转到“设置>语音识别>高级语音选项可查看相同列表.

现在,当您运行程序时,它应该可以工作了.顺便说一句,如果您想在代码中查看已安装的语音识别器,请改用以下代码:

foreach (var x in SpeechRecognitionEngine.InstalledRecognizers())
            {
                Console.WriteLine(x.Culture.Name);   
            }

当您要求识别器名称时,您仅会得到一个代码,而您想要的是文化名称. (如您所见,MS-1033-80-DESK对应于en-US.作为参考,fr-FR为MS-1036-80-DESK).

标签:sapi,speech-recognition,c
来源: https://codeday.me/bug/20191119/2036988.html