我认为桌面识别正在开始,因为您正在使用共享桌面识别器。您应该只为您的应用程序使用 inproc 识别器。您可以通过在应用程序中实例化 SpeechRecognitionEngine() 来做到这一点。
由于您使用的是听写语法和桌面窗口识别器,我相信它可以由说话者进行训练以提高其准确性。通过 Windows 7 识别器培训,看看准确性是否有所提高。
要开始使用 .NET 演讲,几年前在http://msdn.microsoft.com/en-us/magazine/cc163663.aspx上发表了一篇非常好的文章。这可能是迄今为止我发现的最好的介绍性文章。它有点过时了,但很有帮助。(AppendResultKeyValue 方法在 beta 之后被删除。)
这是一个快速示例,它显示了使用我能想到的听写语法的最简单的 .NET Windows 窗体应用程序之一。这应该适用于 Windows Vista 或 Windows 7。我创建了一个表单。在上面放了一个按钮并使按钮变大。添加了对 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();
}
}
在 System.Speech.Recognition 和 Microsoft.Speech.Recognition 之间有什么区别??