Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 语音识别错误_C#_System.speech.recognition - Fatal编程技术网

C# 语音识别错误

C# 语音识别错误,c#,system.speech.recognition,C#,System.speech.recognition,我正在使用system.speech编写一个语音识别程序。我已经阅读了在线教程和StackOverflow的所有重要信息,但是我似乎一直遇到识别器似乎抛出错误的问题 下面是我正在使用的代码(减去语法创建) 它正确识别第一个短语,但一旦完成SpeechRecogdented处理程序中的操作,就会抛出异常“识别器正在识别时无法执行此操作”。 我曾尝试将识别全部放在一个方法中,但结果相同。这是我在发布此问题之前的最新尝试。 我做错了什么 至于澄清 程序启动到systray并调用此类。OpenEars(

我正在使用system.speech编写一个语音识别程序。我已经阅读了在线教程和StackOverflow的所有重要信息,但是我似乎一直遇到识别器似乎抛出错误的问题

下面是我正在使用的代码(减去语法创建)

它正确识别第一个短语,但一旦完成SpeechRecogdented处理程序中的操作,就会抛出异常“识别器正在识别时无法执行此操作”。 我曾尝试将识别全部放在一个方法中,但结果相同。这是我在发布此问题之前的最新尝试。 我做错了什么

至于澄清


程序启动到systray并调用此类。OpenEars()。OpenEars然后调用class.Listening(),该类具有RecognitizeAsync。说出第一个短语后,识别器正确地听到它并跟随处理程序,说出第二个短语时最终触发异常。

问题是您正在从SpeechRecogdented事件处理程序调用RecogdenizeAsync。它正在抛出异常,因为以前的识别尚未完成。事件处理程序正在阻止它完成。尝试启动另一个任务/线程来调用RecognizeAsync。

问题是您正在从SpeechRecognized事件处理程序调用RecognizeAsync。它正在抛出异常,因为以前的识别尚未完成。事件处理程序正在阻止它完成。尝试启动一个不同的任务/线程来调用RecognizeAsync。

我删除了代码块的额外初始缩进,您似乎在末尾有一个额外的右括号-它与任何内容都不匹配。整个过程应该包含在某个东西中吗?我删除了代码块的额外初始缩进,您似乎在末尾有一个额外的右括号-它与任何东西都不匹配。整件事是不是应该包含在什么东西里?
Grammar grammarQuestionsSingle;
Grammar grammarQuestionsShort;
Grammar grammarQuestionsLong;
Grammar grammarStatement;
//Grammar grammarDeclarationShort;
//Grammar grammarDeclarationLong;
Grammar grammarCommandsSingle;
Grammar grammarCommandsShort;
Grammar grammarCommandsLong;

SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
CreateGrammar grammar = new CreateGrammar();
Think brain = new Think();
bool privacy, completed;
//bool timer;


public void OpenEars()
{
    completed = true;
    if (grammarQuestionsSingle == null || grammarQuestionsShort == null || grammarQuestionsLong == null || grammarStatement == null || grammarCommandsSingle == null || grammarCommandsShort == null || grammarCommandsLong == null)
    {
        grammarQuestionsSingle = grammar.createGrammarQuestionsSingle();
        grammarQuestionsShort = grammar.createGrammarQuestionsShort();
        grammarQuestionsLong = grammar.createGrammarQuestionsLong();
        grammarStatement = grammar.createGrammarStatement();
        grammarCommandsSingle = grammar.createGrammarCommandsSingle();
        grammarCommandsShort = grammar.createGrammarCommandsShort();
        grammarCommandsLong = grammar.createGrammarCommandsLong();
    }
    recognizer.RequestRecognizerUpdate();
    if (!grammarQuestionsSingle.Loaded)
    {
        recognizer.LoadGrammar(grammarQuestionsSingle);
    }
    if (!grammarQuestionsShort.Loaded)
    {
        recognizer.LoadGrammar(grammarQuestionsShort);
    }
    if (!grammarQuestionsLong.Loaded)
    {
        recognizer.LoadGrammar(grammarQuestionsLong);
    }
    if (!grammarStatement.Loaded)
    {
        recognizer.LoadGrammar(grammarStatement);
    }
    if (!grammarCommandsSingle.Loaded)
    {
        recognizer.LoadGrammar(grammarCommandsSingle);
    }
    if (!grammarCommandsShort.Loaded)
    {
        recognizer.LoadGrammar(grammarCommandsShort);
    }
    if (!grammarCommandsLong.Loaded)
    {
        recognizer.LoadGrammar(grammarCommandsLong);
    }
    DictationGrammar dictationGrammar = new DictationGrammar("grammar:dictation");
    dictationGrammar.Name = "DictationQuestion";
    recognizer.LoadGrammar(dictationGrammar);
    recognizer.RequestRecognizerUpdate();
    recognizer.SetInputToDefaultAudioDevice();
    Listening();
}

public void Listening()
{
    while (!completed)
    {
        Thread.Sleep(333);
    }
    recognizer.SpeechRecognized += recognizer_SpeechRecognized;
    recognizer.RecognizeAsync(RecognizeMode.Single);
}

private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    completed = false;
    SemanticValue sem = e.Result.Semantics;
    if (!privacy)
    {
        if (e.Result.Grammar.Name=="CommandsSingle" && sem["keyCommandsSingle"].Value.ToString() == "go to sleep")
        {
            privacy = true;
            brain.useMouth("ear muffs are on");
            completed = true;
            Listening();
        }
        else
        {
            brain.Understanding(sender, e);
            completed = true;
        }
    }
    else
    {
        if (e.Result.Grammar.Name == "CommandsSingle" && sem["keyCommandsSingle"].Value.ToString() == "wake up")
        {
            privacy = false;
            brain.useMouth("I am listening again");
            completed = true;
            Listening();
        }
    }
    completed = true;
    Listening();
}
}