Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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#_Speech - Fatal编程技术网

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

C#语音识别-将用户语音输入存储到字符串,c#,speech,C#,Speech,因此,我试图实现的是,当SpeechSynthesizer询问“我应该叫你什么?”并且用户说“Bob”时,将“Bob”存储在一个名为myName的字符串变量中,如图所示,并用(“Hello”+myName)回答。现在,我在一个.txt文件中有一个单词列表,SpeechSynthesizer可以理解这个列表中的“Bob”。我有一个用户语音输入的日志,我可以看到它正在注册它,但没有执行if语句 我不完全了解这个库,并尝试做一些研究,但找不到任何具体的问题 重要的是,我需要将它存储在一个变量中,因为这

因此,我试图实现的是,当SpeechSynthesizer询问“我应该叫你什么?”并且用户说“Bob”时,将“Bob”存储在一个名为myName的字符串变量中,如图所示,并用(“Hello”+myName)回答。现在,我在一个.txt文件中有一个单词列表,SpeechSynthesizer可以理解这个列表中的“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;
            }


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


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

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

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";
        }
        ...
    }
}

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

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

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";
        }
        ...
    }
}

为什么您认为
e.Result.Text
将在同一事件处理程序中更改?我想
sSynth.Speak(“你好”+myName)总是告诉你“你好设置”,对吗?是的。。。仍然不确定该怎么做。我在这方面的经验是有限的。您有什么建议吗?为什么您认为
e.Result.Text
将在同一事件处理程序中更改?我想
sSynth.Speak(“你好”+myName)总是告诉你“你好设置”,对吗?是的。。。仍然不确定该怎么做。我在这方面的经验是有限的。你有什么建议吗?同时阅读关于你的案例看起来更好的内容阅读关于你的案例看起来更好的内容