SAPI和Windows 7的问题

我试图用Windows 7来识别演讲,但是它总是将演讲视为一个命令,或者只是说“那是什么?”。

我怎样才能得到所有的演讲?

码:

SpeechRecognizer _speechRecognizer; public Window1() { InitializeComponent(); // set up the recognizer _speechRecognizer = new SpeechRecognizer(); _speechRecognizer.Enabled = false; _speechRecognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized); } 

也许你想使用.net System.Speech命名空间而不是SAPI? 几年前发布了一篇很好的文章, url是http://msdn.microsoft.com/en-us/magazine/cc163663.aspx 。 这可能是迄今为止我发现的最好的入门文章。 这是一个过时的,但非常helfpul。 (AppendResultKeyValue方法在testing版之后被删除。)

你想使用共享识别器吗? 这可能是你看到命令的原因。 你有具体的任务来表彰吗? 在这种情况下,你会更好地使用任务特定的语法和一个inproc识别器。

如果您需要处理任何单词,请使用System.Speech附带的DictationGrammar。 请参阅http://msdn.microsoft.com/zh-CN/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx

为了好玩,我把最简单的.NET窗体应用程序放在一起,使用我能想到的听写语法。 我创build了一个表单。 丢下一个button,使button大。 添加了对System.Speech的参考和行:

 using System.Speech.Recognition; 

然后我将下面的事件处理程序添加到button1:

 private void button1_Click(object sender, EventArgs e) { SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); Grammar dictationGrammar = new DictationGrammar(); recognizer.LoadGrammar(dictationGrammar); try { button1.Text = "Speak Now"; recognizer.SetInputToDefaultAudioDevice(); RecognitionResult result = recognizer.Recognize(); button1.Text = result.Text; } catch (InvalidOperationException exception) { button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message); } finally { recognizer.UnloadAllGrammars(); } }