C# 语音识别 - 将用户语音输入存储到字符串

C# Speech Recognition - Store user speech input to string

所以,我想要实现的是,当 SpeechSynthesizer 询问 "What should I call you?" 并且用户说 "Bob" 时,将 "Bob" 存储在一个名为 myName 的字符串变量中,如图所示和回复 ("Hello" + myName)。现在,我在 SpeechSynthesizer 理解的 .txt 文件中有一个单词列表,并且在该列表中有 "Bob"。我有一个用户语音输入的日志,我可以看到它正在注册但没有执行 if 语句。

我不完全了解这个库并尝试进行一些研究,但找不到任何与我的问题相关的内容。

重要的是,我需要将它存储在一个变量中,因为这将解决我遇到的其他问题。这更像是一个示例问题。

提前致谢。

private void sRecognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {

        if (e.Result.Text == "listen")
        {
            listenMode = true; //resume listening
            sSynth.Speak("listening mode initializing.  Listening now");                              
        }

        if (listenMode == true)
        {
            switch (e.Result.Text)
            {                                     
                case "setup":
                    sSynth.Speak("setup initialized");
                    sSynth.Speak("what should i call you?");
                    if (e.Result.Text == "bob")
                    {
                        myName = e.Result.Text;
                        sSynth.Speak("hello " + myName);
                        break;
                    }
                    else
                        break;


                default:
                    answer.Text = answer.Text + " " + e.Result.Text.ToString();
                    break;
            }


        }
    }

我可以这样(但这不是我需要的)。

case "Bob":
     sSynth.Speak("Hello Bob");
break;

不要认为事件值是即时更改的。 因此,对于已识别数据的每个部分,都会引发新事件。

我建议将参数类型/名称(最好是枚举)作为变量,并根据执行操作的值检查处理程序中的值。

private string _parameter = string.Empty;

private void sRecognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    switch(_parameter)
    {
        case string.Empty: 
        {
            switch (e.Result.Text)
            {                                     
                case "setup": _parameter = "Name"; ...
            }
            break;
        }
        case "Name" : 
        { 
            sSynth.Speak("hello " + myName); 
            _parameter = "Age";
        }
        ...
    }
}