C#语音命令:等待输入
我有一个Windows窗体应用程序,可以识别语音命令,然后执行相应的操作。然而,我不知道如何一个接一个地说命令 代码:C#语音命令:等待输入,c#,winforms,C#,Winforms,我有一个Windows窗体应用程序,可以识别语音命令,然后执行相应的操作。然而,我不知道如何一个接一个地说命令 代码: 我是遗漏了什么,还是只是做错了什么?您需要使用System.Speech。这是我在系统上的操作方式。您可以执行以下操作: using System.Speech.Synthesis; using System.Speech.Recognition; namespace Alexis { public partial class frmMain : Form {
我是遗漏了什么,还是只是做错了什么?您需要使用System.Speech。这是我在系统上的操作方式。您可以执行以下操作:
using System.Speech.Synthesis;
using System.Speech.Recognition;
namespace Alexis
{
public partial class frmMain : Form
{
SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();
SpeechSynthesizer Alexis = new SpeechSynthesizer();
SpeechRecognitionEngine startlistening = new SpeechRecognitionEngine();
}
// ...
}
然后以主要形式
private void frmMain_Load(object sender, EventArgs e)
{
_recognizer.SetInputToDefaultAudioDevice();
_recognizer.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices(File.ReadAllLines(@"Default Commands.txt")))));
_recognizer.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(_recognizer_SpeechDetected);
_recognizer.RecognizeAsync(RecognizeMode.Multiple);
startlistening.SetInputToDefaultAudioDevice();
startlistening.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices("alexis"))));
startlistening.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(startlistening_SpeechRecognized);
}
将触发命令,这样您就可以调用这些命令。另外,我不会使用if(e.Result.Text==“启动节能模式”)
我会这样使用if(speech==“启动节能模式”)
所以如果你想继续,你可以这样做
if (speech == "initiate power saving mode")
{
Taskbar taskbar = new Taskbar();
taskbar.Show();
SoundPlayer deacr = new SoundPlayer(Properties.Resources.deacr);
deacr.PlaySync();
}
else if (speech== "confirm")
{
SoundPlayer deacd = new SoundPlayer(Properties.Resources.deacd);
deacd.PlaySync();
Application.SetSuspendState(PowerState.Suspend, true, true);
}
else if (speech == "cancel")
{
SoundPlayer cancelled = new SoundPlayer(Properties.Resources.cancelled);
cancelled.PlaySync();
}
确保将命令“启动节能模式”和“取消”放在命令txt文档中(区分大小写)
然后,如果您想降低发布,那么您可以创建一个选项卡式表单并添加您自己的自定义命令。希望这有帮助。但请记住,这是一个供您参考的示例。您需要使用System.Speech。这就是我在系统上执行此操作的方式。您可以执行以下操作:
using System.Speech.Synthesis;
using System.Speech.Recognition;
namespace Alexis
{
public partial class frmMain : Form
{
SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();
SpeechSynthesizer Alexis = new SpeechSynthesizer();
SpeechRecognitionEngine startlistening = new SpeechRecognitionEngine();
}
// ...
}
然后以主要形式
private void frmMain_Load(object sender, EventArgs e)
{
_recognizer.SetInputToDefaultAudioDevice();
_recognizer.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices(File.ReadAllLines(@"Default Commands.txt")))));
_recognizer.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(_recognizer_SpeechDetected);
_recognizer.RecognizeAsync(RecognizeMode.Multiple);
startlistening.SetInputToDefaultAudioDevice();
startlistening.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices("alexis"))));
startlistening.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(startlistening_SpeechRecognized);
}
将触发命令,这样您就可以调用这些命令。另外,我不会使用if(e.Result.Text==“启动节能模式”)
我会这样使用if(speech==“启动节能模式”)
所以如果你想继续,你可以这样做
if (speech == "initiate power saving mode")
{
Taskbar taskbar = new Taskbar();
taskbar.Show();
SoundPlayer deacr = new SoundPlayer(Properties.Resources.deacr);
deacr.PlaySync();
}
else if (speech== "confirm")
{
SoundPlayer deacd = new SoundPlayer(Properties.Resources.deacd);
deacd.PlaySync();
Application.SetSuspendState(PowerState.Suspend, true, true);
}
else if (speech == "cancel")
{
SoundPlayer cancelled = new SoundPlayer(Properties.Resources.cancelled);
cancelled.PlaySync();
}
确保将命令“启动节能模式”和“取消”放在命令txt文档中(区分大小写)
然后,如果您想降低发布,那么您可以创建一个选项卡式表单并添加您自己的自定义命令。希望这有帮助。但请记住,这是一个供您参考的示例。创建一个事件?然后将代码粘贴到事件处理程序中?我遗漏了什么吗?在你的
if
/else
语句系列中显示的括号看起来“奇怪”。你真的想在第一个if
块内测试e.Result.Text==“confirm”
(它已经测试了e.Result.Text==“initiate power Save mode”
)是的,有点像如果这个,那么如果那个。创建一个事件?然后将代码粘贴到事件处理程序中?我遗漏了什么吗?在你的if
/else
语句系列中显示的括号看起来“奇怪”。你真的想在第一个if
块内测试e.Result.Text==“确认”
(它已经测试了e.Result.Text==“启动节能模式”
)是的,有点像如果这个,那么如果那个。