Hallo Mycsharpler,
Viele werden noch nicht mit der Spracherkennung aus dem System.Speech.Recognition Namespace herumgespielt haben, aber vielleicht habe ich ja Glück und jemand kann mir helfen.
Ich benutze in meiner WPF Anwendung die Klasse SpeechRecognitionEngine um Sprache zu erkennen. Das funktioniert auch meistens einige Sekunden lang super. Nach zufälliger Zeit, manchmal auch sofort, beendet sich aber der Thread der Engine selbst, ohne das über irgendein Event mitzuteilen.
Wenn ich die Klasse SpeechRecognizer benutze, wird oben das Windows 7 Spracheingabefenster angezeigt, das auch immer den zuletzt gesprochenen Text zeigt. Wenn der Thread beendet ist wird dieser Text auch noch richtig angezeigt, aber keines der Events der Klasse feuert mehr.
Folgendermaßen benutze ich die Klasse:
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
recognizer.SetInputToDefaultAudioDevice();
//Grammatik laden ...
recognizer.RecognizeAsync(RecognizeMode.Multiple);
In dem SpeechRecognized-Event wird einfach nur eine Action, die in einem Dictionary dem zu erkennenden Text zugeordnet ist, ausgeführt:
void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Action<string> a;
if (dict.TryGetValue(e.Result.Text, out a) && a != null)
a(e.Result.Text);
}
Das Ausgabefenster zeigt auch immer folgende Meldung an:> Fehlermeldung:
Information: 0 : SAPI does not implement phonetic alphabet selection.
Die kommt allerdings immer, auch wenn die Eingabe noch funktioniert.
Ich habe schon stundenlang nach einer Lösung gegoogelt und würde mich wirklich freuen, wenn mir hier jemand weiterhelfen könnte.
Viele Grüße,
Big Al