C# 检测特定短语以开始识别命令
我现在正在搞乱这个系统。制作一个Amazon Alexa类型的程序,在这个程序中,你会问它一个命令,然后回答 现在我已经设置好了,我点击一个按钮,它开始检测来自麦克风的音频输入,但我想做Alexa风格或谷歌风格(“Alexa”或“Hey Google”) 以下是我到目前为止的情况:C# 检测特定短语以开始识别命令,c#,speech-recognition,speech-synthesis,C#,Speech Recognition,Speech Synthesis,我现在正在搞乱这个系统。制作一个Amazon Alexa类型的程序,在这个程序中,你会问它一个命令,然后回答 现在我已经设置好了,我点击一个按钮,它开始检测来自麦克风的音频输入,但我想做Alexa风格或谷歌风格(“Alexa”或“Hey Google”) 以下是我到目前为止的情况: public partial class SpeechRecognition : Form { SpeechRecognitionEngine recEngine = new SpeechRecogniti
public partial class SpeechRecognition : Form
{
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
SpeechSynthesizer synth = new SpeechSynthesizer();
public SpeechRecognition()
{
InitializeComponent();
}
private void SpeechRecognition_Load(object sender, EventArgs e)
{
Choices command = new Choices();
command.Add(new string[] { "Say Hello", "Print my name", "speak selected text", "time", "current weather", "humidity"});
GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Append(command);
Grammar grammar = new Grammar(gBuilder);
recEngine.LoadGrammarAsync(grammar);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechRecognized += recEngine_SpeechRecognized;
}
void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
synth.SelectVoiceByHints(VoiceGender.Neutral);
var request = new ForecastIORequest("...", 38.47382f, -76.50636f, DateTime.Now, Unit.us);
var response = request.Get();
switch (e.Result.Text)
{
case "Say Hello":
PromptBuilder builder = new PromptBuilder();
builder.StartSentence();
builder.AppendText("Hello Zack");
builder.EndSentence();
builder.AppendBreak(new TimeSpan(0, 0, 0, 0,50));
builder.StartSentence();
builder.AppendText("How are you?");
builder.EndSentence();
synth.SpeakAsync(builder);
break;
case "Print my name":
richTextBox1.Text += "\nZack";
break;
case "speak selected text":
synth.SpeakAsync(richTextBox1.SelectedText);
break;
case "time":
DateTime time = DateTime.Now;
synth.SpeakAsync(time.ToShortTimeString());
break;
case "current weather":
response = request.Get();
synth.SpeakAsync("The weather in St. Leonard is " + response.currently.summary + "with a temperature of " + Math.Round((decimal)response.currently.temperature, 0) + " degrees farenheit");
break;
case "humidity":
response = request.Get();
synth.SpeakAsync("Current humidity is " + 100 * response.currently.humidity + "percent");
break;
default:
synth.SpeakAsync("I did not recognize a command");
break;
}
}
private void enableBtn_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsync(RecognizeMode.Multiple);
disableBtn.Enabled = true;
}
private void disableBtn_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsyncStop();
disableBtn.Enabled = false;
}
我该如何改变这一点,使它不断地听那一个短语,然后再听一个命令?我猜我需要创建识别引擎的另一个实例?任何帮助都会很好。这是旧的,但你可以使用snowboy.kitt.ai。