Vielleicht möchten Sie die .net System.Speech Namespace statt SAPI benutzen? Es gibt einen sehr guten Artikel, der vor ein paar Jahren bei http://msdn.microsoft.com/en-us/magazine/cc163663.aspx veröffentlicht wurde. Es ist wahrscheinlich der beste einführende Artikel, den ich bisher gefunden habe. Es ist etwas veraltet, aber sehr helfpul. (Die AppendResultKeyValue-Methode wurde nach der Betaversion gelöscht.)
Versuchen Sie, eine gemeinsame Erkennung zu verwenden? Vielleicht sehen Sie Befehle. Haben Sie eine spezifische Aufgabe für die Anerkennung? In diesem Fall wären Sie besser mit einer aufgabenspezifischen Grammatik und einem Inproc-Erkenner ausgestattet.
Wenn Sie mit Wörtern umgehen müssen, verwenden Sie den DictationGrammar, der mit System.Speech geliefert wird. Siehe http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx
Zum Spaß, peitschte ich die einfachste .NET Windows Forms App, um eine Diktatgrammatik zu verwenden, die ich mir vorstellen konnte. Ich habe ein Formular erstellt. Hat einen Knopf darauf gelegt und den Knopf groß gemacht. Hinzugefügt einen Verweis auf System.Speech und die Zeile:
using System.Speech.Recognition;
Dann habe ich die folgenden Ereignishandler 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();
}
}
Dank Michael. Ich muss jedes Wort erkennen. Alle Beispiele in dem Link, den Sie angegeben haben, betreffen das Erstellen von Befehlen. Wie kann ich alles bekommen? – Kaan
Wenn Sie den Desktop-Erkenner verwenden (der in Windows Vista und 7 enthalten ist), wird eine integrierte Diktatgrammatik mitgeliefert. Siehe http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx –
Ich aktualisierte die Antwort, um ein Beispiel für die Verwendung von DictationGrammar einzuschließen. –