SpeechRecognitionEngine识别器

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

但是,我的程序抛出了错误

附加信息:找不到所需ID的识别器。

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

en-US和en-GB之所以有效,是因为它们已经预先安装了我的系统,我只是安装了这些新的语言包,但它们仍然会抛出这个exception。

此外,如果这有帮助,当我这样做

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

它打印

MS-1033至1080年,DESK

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

我能够让它工作……还有一个额外的步骤。

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

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

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

现在,当你运行你的程序时,它应该工作。 顺便说一句,如果你想在代码中看到已安装的语音识别器,请改用:

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

在询问识别器名称时,您只需获取代码,您需要文化名称。 (如您所见, MS-1033-80-DESK对应于en-US。作为参考,fr-FR是MS-1036-80-DESK )。

您是否可以安装Microsoft Speech Platform法语语言包? 比如这里看到的? MS语音平台语言包

如果是这种情况,则它不会显示为您正在执行的操作的已安装语言。 为了使它工作,根据我的理解,您将需要为法语安装的语言包,如果您使用的是非法语版本的Windows,则仅适用于Windows Ultimate和Enterprise版本。

如果这是不可能的,那么您可能必须弄清楚如何使用Microsoft Speech Platform SDK与Windows / SAPI。 现在,您似乎正在尝试将Windows / SAPI与语音平台识别器配合使用。 这是MS页面,显示了MS语音平台与Windows / SAPI之间的区别