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

时间:2017-09-17 18:59:07

标签: c# speech

所以,我想要实现的是当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;
            }


        }
    }

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

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

1 个答案:

答案 0 :(得分:2)

不要'认为事件值在飞行中改变了。 因此,对于公认数据的每个部分,将提出新事件。

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

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