2010-08-30 12 views
6

Ich schrieb eine App in C# für Spracherkennung mit System.Speech, die auf Windows 7 funktioniert. Allerdings bin ich nach dem Erstellen der gleichen App, die auf Windows 2003 (x86) funktioniert.Microsoft Spracherkennungsplattform

Meine Programmierumgebung: Windows 7 x64 Pro Visual Studio 2008

Um diese Anwendung in meiner Programmierumgebung zu entwickeln, habe ich installiert:

1.Microsoft Speech Platform - Server Runtime (Version 10.1) (x86)

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

2.Microsoft Speech Platform - Software Development Kit (SDK) (Version 10.1) (x86)

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

3.Microsoft Speech Platform - Server Runtime Sprachen (Version 10,1)

(hier installiert SR für en-GB)

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

In meinem Programm statt Systems .Sprache Ich habe Microsoft.Speech.Recognition;

diesen Code aus SDK-Dokumentation Pasted:

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<SpeechRecognizedEventArgs>(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; 
    } 
} 

Ich habe Plattform Ziel x86 in Projekteigenschaften auch. Der Code kompiliert, aber sobald ich ihn starte oder debugge, funktioniert die Erkennung nicht. Irgendeine Idee was vermisse ich?

+0

zumindest unter Windows XP können Sie nicht Spracherkennungs-Software ohne Installation von Komponenten aus dem SDK laufen. Sind Sie sicher, dass die erforderlichen Komponenten auf dem Zielcomputer vorhanden sind? –

+0

Die Idee ist, diese zuerst auf dem lokalen Rechner zu installieren und später auf Windows 2003 zu installieren. Mein Programmiergerät ist Windows 7 x64 VS2008, auf dem Runtime, SDK und enGB SR wie oben beschrieben installiert sind. Kompiliert, läuft auf meinem Rechner, erkennt aber keine Auswahl (Farbnamen) –

+0

Beim Debuggen habe ich festgestellt, dass in sre = new SpeechRecognitionEngine(); Eigenschaften: EndSilenceTmeout EndSilenceTmeoutAmbiguous Wurf Ausnahme:.. „Recognizer von Erkennungs aber das Programm weiter auszuführen –

Antwort

5

Sie erstellen eine Spracherkennungs-Engine, ohne eine Engine anzugeben. Da Sie die en-GB-Engine installiert haben, müssen Sie ein cultureinfo (oder ein recognizerinfo) angeben:

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

Ahhh das war es Vielen Dank nicht unterstützt Einstellung :)! –