至少需要加载一个语法才能进行识别

你好,我尝试创建一个简单的AI程序,因此我定义了两个语法并加载它们,但出现了这个错误:至少需要加载一个语法才能进行识别。Visual Studio的错误信息是:

在System.Speech.dll中发生类型为’System.InvalidOperationException’的异常,但在用户代码中未处理
附加信息:至少需要加载一个语法才能进行识别。

这是代码,这是类定义:

class DefineGrammar{    /// <summary>    /// 定义选择    /// </summary>    Choices greeting;    Choices DateAndTime;    /// <summary>    /// 定义语法变量    /// </summary>    Grammar greetingGrammar;    Grammar DateAndTimeGrammar;    SpeechRecognitionEngine rec = new SpeechRecognitionEngine();    public void LoadGrammar()    {        // 把数据放入选择中        greeting = new Choices(new string[] { "hello", "how are you" });        DateAndTime = new Choices(new string[] { "what time is it", "what is today" });        // 定义语法构建器以便将选择放入其中        GrammarBuilder greetingGrammarBuillder = new GrammarBuilder(greeting);        GrammarBuilder DateAndTimeGrammarBuilder = new GrammarBuilder(DateAndTime);        // 将语法构建器放入语法中        greetingGrammar = new Grammar(greetingGrammarBuillder);        greetingGrammar.Name = "GreetingGrammar";        DateAndTimeGrammar = new Grammar(DateAndTimeGrammarBuilder);        DateAndTimeGrammar.Name = "DateAndTimeGrammar";        rec.LoadGrammar(greetingGrammar);        rec.LoadGrammar(DateAndTimeGrammar);    }}

这是主页面:

public partial class MainWindow : Window{    SpeechSynthesizer s = new SpeechSynthesizer();    SpeechRecognitionEngine rec = new SpeechRecognitionEngine();    DefineGrammar gr = new DefineGrammar();    public MainWindow()    {        rec.RequestRecognizerUpdate();        gr.LoadGrammar();        rec.SpeechRecognized += Rec_SpeechRecognized;        rec.SetInputToDefaultAudioDevice();        rec.RecognizeAsync(RecognizeMode.Multiple);    }}

回答:

在你的DefineGrammar类中,你有一个SpeechRecognitionEngine类型的成员字段,当调用LoadGrammar()时,你会向这个字段加载语法。

在你的主类中,你有另一个该类型的实例,并尝试在这个实例上进行识别操作。

现在,错误的原因是你有两个独立的SpeechRecognitionEngine实例。

解决这个问题的一种方法可以是修改你的DefineGrammar类如下:

public void LoadGrammar()改为public void LoadGrammar( SpeechRecognitionEngine rec ),并删除该类中的成员字段rec

还有其他可能的解决方案,但这种方法可以解决问题。区别在于现在你将语法加载到主类中使用的实例,而不是另一个实例。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注