[英]C# Speech Recognition - Store user speech input to string
因此,我要實現的目標是當SpeechSynthesizer詢問“我該怎么稱呼您”時? 並且用戶說“ Bob”,將“ Bob”存儲在名為myName的字符串變量中,如圖所示,並使用(“ Hello” + myName)進行回復。 現在,我有一個.txt文件中的單詞列表,SpeechSynthesizer可以理解,並且該列表中包含“鮑勃”。 我有一個用戶語音輸入的日志,可以看到它正在注冊它,但是沒有執行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";
}
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.