微软语音识别平台

我使用System.Speech在C#中编写了一个用于语音识别的应用程序,它可以在Windows 7上正常工作。但是我创建了可以在Windows 2003(x86)上运行的相同应用程序。

我的编程环境:Windows 7 x64 Pro Visual Studio 2008

为了在我的编程环境中开发这个应用程序,我安装了:

1.Microsoft语音平台 – 服务器运行时(版本10.1)(x86)

http://www.microsoft.com/downloads/details.aspx?FamilyID=674356C4-E742-4855-B3CC-FC4D5522C449&displaylang=en&displaylang=en

2.Microsoft语音平台 – 软件开发套件(SDK)(版本10.1)(x86)

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4d36908b-3264-49ef-b154-f23bf7f44ef4

3.Microsoft语音平台 – 服务器运行时语言(版本10.1)

(此处为en-GB安装了SR)

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=f704cd64-1dbf-47a7-ba49-27c5843a12d5

在我的程序而不是System.Speech中,我使用了Microsoft.Speech.Recognition;

从SDK文档中粘贴此代码:

using Microsoft.Speech.Recognition; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // Create a new SpeechRecognitionEngine instance. sre = new SpeechRecognitionEngine(); // Create a simple grammar that recognizes “red”, “green”, or “blue”. Choices colors = new Choices(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); GrammarBuilder gb = new GrammarBuilder(); gb.Append(colors); // Create the actual Grammar instance, and then load it into the speech recognizer. Grammar g = new Grammar(gb); sre.LoadGrammar(g); // Register a handler for the SpeechRecognized event. sre.SpeechRecognized += new EventHandler(sre_SpeechRecognized); sre.SetInputToDefaultAudioDevice(); sre.RecognizeAsync(RecognizeMode.Multiple); } // Simple handler for the SpeechRecognized event. void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { MessageBox.Show(e.Result.Text); } SpeechRecognitionEngine sre; } } 

我还在项目属性中将平台目标设置为x86。 代码编译,但一旦我运行或调试它识别不起作用。 知道我错过了什么吗?

您正在创建语音识别引擎而未指定引擎。 由于您已安装了en-GB引擎,因此需要指定cultureinfo (或recognizerinfo ):

 sre = new SpeechRecognitionEngine(new CultureInfo("en-GB"));