语音识别引擎识别器

SpeechRecognitionEngine recognizers

我刚刚下载了 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 没有看到我安装了当前语言的包

您是否安装了 Microsoft Speech Platform 法语语言包?比如这里看到的那些? MS Speech Platform Language Packs

如果是这种情况,那么它不会显示为您正在执行的操作的已安装语言。为了让它工作,据我所知,你需要安装一个法语语言包,如果你使用的是 [=21= 的非法语版本,它只适用于 Windows Ultimate 和 Enterprise 版本].

如果这不可能,那么您可能需要弄清楚如何使用 Microsoft Speech Platform SDK 与 Windows/SAPI。现在您似乎正在尝试将 Windows/SAPI 与语音平台识别器一起使用。这是 MS 页面,显示了 MS Speech Platform vs. Windows/SAPI

之间的区别

我能够让它工作...这涉及到一个额外的步骤。

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

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

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

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

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

你只在询问识别器名称时得到一个代码,你想要文化的名称。 (如您所见,MS-1033-80-DESK 对应 en-US。供参考,fr-FR 为 MS-1036-80-DESK)。