Feedback

C# - Spracherkennung

Veröffentlicht von am 5/28/2010
(0 Bewertungen)
Ein kurzes Bsp zur Spracherkennung,
wenn ich mehr zeit habe, werde ich vlt ein umfangreiches Beispiel einstellen, wie man Grammatiken im Code schreibt, komplexere Konstrukte bildest,...

Aber als kleiner Einblick, dürfte dieses Beispiel recht nützlich sein
private SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();

//--------Beim laden aufrufen----------
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
Grammar grammar = new Grammar("grammar.xml", "Befehle");
recognizer.UnloadAllGrammars();
recognizer.LoadGrammar(grammar);
//--------------------------------------

private void btnListen_Click(object sender, EventArgs e) {
   recognizer.SetInputToDefaultAudioDevice();
   recognizer.RecognizeAsync(RecognizeMode.Multiple);
}

private void btnStop_Click(object sender, EventArgs e) {
   recognizer.RecognizeAsyncCancel();
}

[DllImport("user32.dll")]
public static extern void LockWorkStation();

private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) {
   if (e.Result.Text == "Schließen") {
      recognizer.Dispose();
      this.Close();
   } else if (e.Result.Text == "Sperren") {
      LockWorkStation();
   }
}



-----------------XML-Datei-------------------
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
                             http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="de-DE" version="1.0">
  <rule id="Befehle" scope="public">
    <one-of>
      <item>Schließen</item>
      <item>Sperren</item>
    </one-of>
  </rule>
</grammar>
Abgelegt unter Spracherkennung, Sprache, XML.

10 Kommentare zum Snippet

timmi schrieb am 5/28/2010:
xml:lang="de-DE" macht bei mir Probleme:

The language for the grammar does not match the language of the speech recognizer.

Wenn ich es in en-GB abändere geht es, dann muss ich die deutschen Befehler aber mit einem englischen Slang aussprechen damit es funktioniert! :-P

Vielen Dank, echt interessant deine Beitragsreihe! :)
Felix Knorr schrieb am 5/29/2010:
ist irgendwie eigenartig, bei mir funktioniert es ohne probleme
probier es einmal dem recognizer beim initialisieren eine culture mitzugeben
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(CultureInfo.CreateSpecificCulture("de-DE"));
timmi schrieb am 5/31/2010:
Dann wird folgende Exception geworfen:

No recognizer of the required ID found.
Parameter name: culture

Ich habe dir/euch vorenthalten, das ich eine englische Version vom VS2010 habe in Kombination mit .NET 4, wahrscheinlich wurde die Installation dann sprachentechnisch auch aufs englische hin ausgerichtet?
Hat jemand da Erfahrung?
sortilegio schrieb am 7/17/2010:
Hi Felix Knorr,

kannst du, oder irgendjemand mir bitte erklären, wie ich die spracherkennung in einer webanwendung (asp.net, visual web developer 2008 , c#) integrieren kann.
es sehr wichtig für mich und ich bin für jedes hilfe dankbar.

erstmal danke und ich hoffe auf antwort.

schönes wochenende :o)
Felix Knorr schrieb am 7/18/2010:
das funktioniert im prinzip ganz gleich wie bei windows anwendungen.
dabei ist mir gerade selber aufgefallen das ich in diesem tutorial etwas vergessen habe, das man auf den namespace System.Speech zugreifen kann, muss man ihn zuerst den Verweisen hinzufügen,
falls es nicht funktioniert kannst du mir eine pn schicken und ich kann da dann einen kleinen bspcode in asp.net schicken
sortilegio schrieb am 7/20/2010:
Hi , Felix Knorr ..... die spracherkennung funktioniert nicht wie bei windows anwendung.. den verweis habe hinzugefügt, trotzdem funktioniert es nicht.... ich wollte dir eine pn schicken, aber hier geht das nicht, teilt du mir bitte mit , wo ich dich schreiben kann... bitte ich brauche deine hilfe. DANKE !!


das funktioniert im prinzip ganz gleich wie bei windows anwendungen.
dabei ist mir gerade selber aufgefallen das ich in diesem tutorial etwas vergessen habe, das man auf den namespace System.Speech zugreifen kann, muss man ihn zuerst den Verweisen hinzufügen,
falls es nicht funktioniert kannst du mir eine pn schicken und ich kann da dann einen kleinen bspcode in asp.net schicken
sortilegio schrieb am 7/23/2010:
Hallo Felix Knorr, bitte melde dich . Ich habe ein paar Fragen bezüglich die Spracherkenung.

Danke
sortilegio schrieb am 7/23/2010:
Hallo Felix Knorr, bitte melde dich . Ich habe ein paar Fragen bezüglich die Spracherkenung.

Danke
Felix Knorr schrieb am 7/30/2010:
tut mir leid das ich mich nicht früher gemeldet habe, aber ich war auf urlaub
sortilegio schrieb am 8/5/2010:
Halllo ,Felix Knorr !! schön , dass du wieder da bist :) wie gesagt die spracherkenung funktioniert nicht in asp.net wie bei windows anwendung kannst du mir da helfen.

Danke
 

Logge dich ein, um hier zu kommentieren!