Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 语音识别程序正在随机显示那些没有';的口语单词的预定义单词(在';GramarBuilder()和';中定义);语法上不存在_C#_Visual Studio 2017_Speech Recognition - Fatal编程技术网

C# 语音识别程序正在随机显示那些没有';的口语单词的预定义单词(在';GramarBuilder()和';中定义);语法上不存在

C# 语音识别程序正在随机显示那些没有';的口语单词的预定义单词(在';GramarBuilder()和';中定义);语法上不存在,c#,visual-studio-2017,speech-recognition,C#,Visual Studio 2017,Speech Recognition,我是C#的新手,我不确定我是否在正确的论坛上写作。我正在建立一个简单的语音识别程序,它将语音命令作为输入,执行语音到文本的转换,然后搜索与该文本匹配的视频 我正在使用grammarBuider() 准确的语音识别。但问题是:什么时候 如果语法不存在,程序启动 任意显示/写入中定义的现有单词 语法 所以 我想要的是:如果我的语法Grammarbuilder中不存在的任何单词被说出,程序不应该在屏幕上写任何或任何随机的语法单词。相反,它应该向用户显示一条消息,即“您所说的单词在程序语法中不存在,或者

我是C#的新手,我不确定我是否在正确的论坛上写作。我正在建立一个简单的语音识别程序,它将语音命令作为输入,执行语音到文本的转换,然后搜索与该文本匹配的视频

我正在使用
grammarBuider()
准确的语音识别。但问题是:什么时候
如果语法不存在,程序启动
任意显示/写入中定义的现有单词
语法

所以

我想要的是:如果我的语法
Grammarbuilder
中不存在的任何单词被说出,程序不应该在屏幕上写任何或任何随机的语法单词。相反,它应该向用户显示一条消息,即“您所说的单词在程序语法中不存在,或者找不到与您的语音搜索匹配的视频”

有人能告诉我如何解决这个问题吗? 这是我的密码

   public Form1()
    {
        InitializeComponent();
    }


    private void btnStart_Click(object sender, EventArgs e)
    {
        btnStart.Enabled = false;
            btnStop.Enabled = true;
            clist.Add(new string[] { "go away", "able", "active", "actual", "afraid", "busy", "casual" });
            Grammar gr = new Grammar(new GrammarBuilder(clist));
            try
            {
                sre.RequestRecognizerUpdate();
                sre.LoadGrammar(gr);
                sre.SpeechRecognized+= sre_SpeechRecognized;
                sre.SetInputToDefaultAudioDevice();
                sre.RecognizeAsync(RecognizeMode.Multiple);


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");

            }

    }
        void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            textBoxContent.Text += e.Result.Text.ToString() + Environment.NewLine;     


        }

    private void btnStop_Click(object sender, EventArgs e)
    {

            sre.RecognizeAsyncStop();
            btnStart.Enabled = true;
            btnStop.Enabled = false;

    }
}

每个识别结果都有一个-一个短语正确识别确定性的相对度量。无论可信度是高是低,您的
SpeechRecognitionEngine
都会引发
SpeechRecognited
事件,从而提供最佳匹配。在识别语法中未包含的单词时,尝试检查这些分数。如果我是对的,这就是问题所在,那么您有以下选择:

  • 检查
    sre_SpeechRecognized
    上的e.Result.Confidence,如果分数过低,则向用户显示消息
  • 尝试为
    SpeechRecognitionEngine
    设置置信阈值,并处理
    SpeechRecognitionRejected
    事件。声称
如果应用程序正在使用SpeechRecognitionEngine实例,则可以使用UpdateRecognitionSetting方法之一修改接受或拒绝语音输入的置信度

尝试调用
SpeechRecognitionEngine.UpdateRecogniterSetting
进行设置。我不知道这个设置是如何调用的,但是声明它是
'cfgconfidencerepjectionreshold'


祝你好运

你们能详细描述一下当说出语法中不存在的单词时会发生什么吗?程序开始显示任何预定义的单词。我的语法目前有这些词{“走开”、“能行”、“活跃”、“实际”、“害怕”、“忙碌”、“随意”}),但我知道,如果说了任何其他单词,它就会开始显示出害怕或能行等。这是一个很好的建议。可以编码为如下内容:
如果(e.Result.Confidence>=0.75)textBoxContent.AppendText(e.Result.Text);否则如果(e.Result.Confidence>0.60&e.Result.Confidence<0.75)textBoxContent.AppendText(“不确定,重复”);else textBoxContent.AppendText(“我听不见你说话”)。此外,还应订阅该活动,以便在音频级别过低时发出警告。