Entwickler-Ecke
Multimedia / Grafik - Hilfe bei Spracherkennung
withewolf - So 15.06.08 19:09
Titel: Hilfe bei Spracherkennung
Hi habe heute mal mit hilfe eines Tutorials versucht eine Spracherkennung durchzuführen. Bis da hin leuft auch alles noch ganz gut denn das Problem ist das dieses Tutorial für die Console (Conslenaplication) gemacht wurde aber ich breuchte es für eine Windowsanwendung. Hab es versucht umzuschreiben:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| 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; using System.Speech; using System.Speech.Recognition;
namespace Sprachsteuerung_Versuch_1_Text_in_Textfeld { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Starten_Click(object sender, EventArgs e) { SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); recognizer.SetInputToDefaultAudioDevice(); recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
try { Grammar grammar = new Grammar("grammar.xml", "thema"); recognizer.UnloadAllGrammars(); recognizer.LoadGrammar(grammar); recognizer.RecognizeAsync(RecognizeMode.Multiple); } catch (Exception f) { MessageBox.Show("Fehler aufgetereten:" + f.Message); return; } lbl_text.Text = "Betriebsbereit und Erkennung funktioniert"; recognizer.Dispose(); return; } public void recognizer_SpeechRecognized(object sender, System.Speech.Recognition.SpeechRecognizedEventArgs l) { txt_ausgabeText.Text = l.Result.Text; txt_ausgabeEmpfang.Text = l.Result.Confidence.ToString(); } } } |
aber aus irgendwelchen Gründen funktioniert das nicht was könte da fehlen. Denn das Programm solte nichts anderes machen als Wort wird gesagt verglichen und in einer Textbox ausgegeben. Versuche heut schon den Ganzen Tag aber ohne Erfolg.
Hir ein Link zum Tutorial:
http://amenthes.de/index.php/2007/12/systemspeech-in-net-35-zur-spracherkennung/
Ich hoffe das ihr mir helfen könnt bin langsam am verzweifeln.
Bin dankbar für jede Hilfe.
Mfg withewolf.
Moderiert von Christian S.: C#-Tags hinzugefügt
Christian S. - So 15.06.08 19:25
Hallo!
Da Du die Schleife, wo auf einen Tastendruck gewartet wird, nicht mit drin hast (logisch bei einer WinForms-Anwendung), wird der
recognizer sofort wieder entsorgt. Ich würde das so machen (ungetestet):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| 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; using System.Speech; using System.Speech.Recognition;
namespace Sprachsteuerung_Versuch_1_Text_in_Textfeld { public partial class Form1 : Form { private readonly SpeechRecognitionEngine recognizer; public Form1() { InitializeComponent();
recognizer = new SpeechRecognitionEngine(); recognizer.SetInputToDefaultAudioDevice(); recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); }
private void Starten_Click(object sender, EventArgs e) { try { Grammar grammar = new Grammar("grammar.xml", "thema"); recognizer.UnloadAllGrammars(); recognizer.LoadGrammar(grammar); recognizer.RecognizeAsync(RecognizeMode.Multiple); } catch (Exception f) { MessageBox.Show("Fehler aufgetereten:" + f.Message); return; } lbl_text.Text = "Betriebsbereit und Erkennung funktioniert"; } public void recognizer_SpeechRecognized(object sender, System.Speech.Recognition.SpeechRecognizedEventArgs l) { txt_ausgabeText.Text = l.Result.Text; txt_ausgabeEmpfang.Text = l.Result.Confidence.ToString(); }
public void Form1_Closed(Object sender, EventArgs e) { recoginizer.Dispose(); } } } |
withewolf - So 15.06.08 19:43
Hi super thx für die Antword jetzt besteht nur noch ein Problem das wenn ich unter grammer.xml ein weiteres Item hinzufüge das nicht erkannt wird. Ist da irgendwo eine Begrenzung drinnen oder sowas?
Mfg withewolf.
Christian S. - So 15.06.08 19:49
Wie sieht die Datei aus, wenn Du das Element hinzugefügt hast? :-)
withewolf - So 15.06.08 19:51
Hir ist der Code das Problem ist das er mir keine anderen Wörter auser diese 3 erkennt egal wo ich sie hinschreibe ^^:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| <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="thema" scope="public"> <one-of> <item>Design</item> <item>Wirtschaft</item> <item>Informatik</item> <item>Hallo</item> //Hinzugefügt </one-of> </rule> </grammar> |
Mfg withewolf.
Moderiert von Christian S.: XML-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!