SpeechRecognitionEngine识别器

时间:2015-10-22 13:10:22

标签: c# speech-recognition sapi

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

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

  

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

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年至1080年,DESK

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

2 个答案:

答案 0 :(得分:2)

您是否可以安装Microsoft Speech Platform法语语言包?比如在这里看到的? MS Speech Platform Language Packs

如果是这种情况,则它不会作为您正在进行的操作的已安装语言出现。为了让它工作,根据我的理解,你需要为法语安装一个语言包,如果你使用的是非法语版的windows,它只适用于Windows Ultimate和Enterprise版本。

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

之间的差异

答案 1 :(得分:1)

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

由于您使用的是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)。