2017-03-22 3 views
1
SpeechRecognitionEngine sre = new SpeechRecognitionEngine(); 
Choices clist = new Choices(); 
// just assume I have added words in clist not shown here 
Grammar gr = new Grammar(new GrammarBuilder(clist)); 

sre.RequestRecognizerUpdate(); 
sre.LoadGrammar(gr); 
sre.SpeechRecognized += sre_SpeechRecognized; 
sre.SetInputToDefaultAudioDevice(); 
sre.RecognizeAsync(RecognizeMode.Multiple); 

void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
{ 
//This only outputs words present in grammar 
    Console.WriteLine(e.Result.Text); 
} 

Kurz gesagt, warum brauchen wir eine Grammatik in der Spracherkennung. Was ist der Punkt, wenn eine Grammatik benötigt wird? Wenn der Erkenner Strings in der Grammatik entsprechen muss, warum können wir dann nicht einfach ausgeben, was der Spracherkenner ohne Grammatik erkannt hat?Warum brauchen Grammatik in der Spracherkennung C#

Danke und freundlicherweise korrigieren Sie mich, wo ich falsch liege.

+0

Mögliche Duplikate von [Speech Recognition API ohne Grammatik C#] (http://stackoverflow.com/questions/9229187/speech-recognition-api-witout-grammar-c-sharp) –

Antwort

3

Wir benutzen Grammatik, um den Kontext für reimende Wörter oder wie das Wort ausgesprochen wurde, zu unterscheiden. Beispiel hello und gelb. Es gibt eine schöne Erklärung mit Beispiel bei link. Hallo bezieht sich auf Grüße Grammatik während gelb bezieht sich auf Farbgrammatik. Diese verbessert die Effizienz/Erkennungsgenauigkeit.

Wenn die Gruppierung innerhalb von Grammatikregeln oder Grammatiken sind klug, können Entwicklern ermöglichen und Szenarien deaktivieren, wenn das System in bewegt sich ein bestimmter Zustand. Es kann Kontext und in einigen Fällen bessere Genauigkeit für die Wörter geben, auf die das System wartet.

Sie können auch auf MSDN-Link verweisen, um die Details auf der Purpose of Grammars zu verstehen.

Es hilft Code Funktionalitäten wie Limits Wortschatz zur Verfügung zu stellen, Fertigt Vokabular, Filter Recognition und Identifiziert Regeln Ergebnisse.

+0

Ich sehe dann habe ich die folgenden zwei Fragen. 1- Kann ich die Grammatik deaktivieren und nur ausgeben, was es erkennt, entweder schreiben oder falsch. 2-wenn das nicht möglich ist, dann kann ich android Spracherkennung Klasse in C#, weil ich denke, es offline Google Api verwendet, weil, als ich eine SMS-Erzähler-App in Android erstellt habe, ich nur eine RedeRecognizer-Klasse intatiated und verwendet seine Funktion und Ereignisse und Ich musste keine Grammatik erstellen, vielleicht weil sie die integrierte Google API Grammatik von Android SDK verwendet. Es wäre schön, wenn ich das gebrauchen könnte. –

+0

@ Ahmed.J, 1. ja du kannst. 2. Ich bin mir nicht sicher über Android-Spracherkennung. –