我们已经开始使用speechRecognitionEngine,并基于我们在堆栈溢出时发现的应用程序构建了一个非常基本的应用程序。代码如下:
public partial class Form1 : Form
{
SpeechRecognitionEngine sr = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
public Form1()
{
InitializeComponent();
// Create an in-process speech recognizer for the en-US locale.
}
private void BeginSpeach()
{
//Create grammar
Choices words = new Choices();
words.Add("Hi");
words.Add("No");
words.Add("Yes");
Grammar wordsList = new Grammar(new GrammarBuilder(words));
wordsList.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(rec_SpeechRecognized);
sr.LoadGrammar(wordsList);
sr.SetInputToDefaultAudioDevice();
sr.RecognizeAsync();
}
void rec_SpeechRecognized(object sender, RecognitionEventArgs e)
{
MessageBox.Show(e.Result.Text);
}
private void Form1_Load(object sender, EventArgs e)
{
BeginSpeach();
}
}这似乎工作得很好。唯一的问题是,一旦它检测到单词"hi",也就是说,它不会再有任何缺陷。有没有办法让这段话一直听下去?所以我可以说“嗨”,然后是“不”,然后是“是”。
我们希望在此基础上创建一个命令列表
谢谢你的建议
发布于 2014-03-12 05:34:32
从推特上得出结论。
sr.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(rec_test);然后再次调用这个
private void rec_test(object sender, RecognizeCompletedEventArgs e)
{
sr.RecognizeAsync();
}发布于 2014-06-30 15:50:24
你可以直接改变
sr.RecognizeAsync();在BeginSpeach()中
sr.RecognizeAsync(RecognizeMode.Multiple);这会检测到你说的每一句话。
Official Documentation
RecognizeAsync() -执行单个异步语音识别操作。
RecognizeAsync(RecognizeMode) -执行一个或多个异步语音识别操作。
https://stackoverflow.com/questions/22332157
复制相似问题