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