Ausgelagert aus Sprachsteuerung [Überarbeitet]. ~Thunderbolt
Hallo,
sorry das ich den alten Thread nochmals anspreche. Versuche die Sprachsteuerung in mein Programm einzubetten.
Spoiler anzeigen
Hier meine XML:
<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
w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="de-DE" version="1.0">
<rule id="thema" scope="public">
<one-of>
<item>Ausschalten</item>
<item>Beenden</item>
<item>Kalender oeffnen</item>
<item>Musik oeffnen</item>
<item>Foto oeffnen</item>
<item>Frida</item>
<item>Statistik oeffnen</item>
<item>Buero oeffnen</item>
<item>Astro oeffnen</item>
<item>Lotto oeffnen</item>
</one-of>
</rule>
</grammar>
Zu 80 Prozent macht das Programm das was es soll.
Klopfe ich einfach mal auf den Tisch oder es hustet jemand im Raum, wird Case Beenden ausgeführt.
Ist dies einmal geschehen geht alles durcheinander. Es wird dann ständig Musik öffnen verstanden obwohl dies nicht gesprochen wird.
Hallo,
sorry das ich den alten Thread nochmals anspreche. Versuche die Sprachsteuerung in mein Programm einzubetten.
VB.NET-Quellcode
- Public Class CSprachsteuerung
- Public Aktiv As Boolean
- Private GrammarFile As String
- ' Private Woerterbuch As XDocument
- Private EingabeText As String
- Public WithEvents Mikro As SpeechRecognitionEngine
- Public Sub Initalisieren()
- If Not Me.Aktiv Then Exit Sub
- Me.Mikro = New SpeechRecognitionEngine
- Me.GrammarFile = Pfade.Diverse.Pfad & "grammar.xml"
- ' Me.Woerterbuch = XDocument.Load(Me.GrammarFile)
- Me.Mikro.SetInputToDefaultAudioDevice()
- Dim grammar As New Grammar(Me.GrammarFile, "thema")
- Me.Mikro.UnloadAllGrammars()
- Me.Mikro.LoadGrammar(grammar)
- Me.Mikro.RecognizeAsync(RecognizeMode.Multiple)
- Me.Eingabetext = Nothing
- End Sub
- Private Sub Mikro_SpeechRecognized(ByVal sender As Object, ByVal e As SpeechRecognizedEventArgs) Handles Mikro.SpeechRecognized
- If Not Me.Aktiv Then Exit Sub
- Me.Eingabetext = e.Result.Text
- Fehlermeldung.Schreiben(Me.Eingabetext)
- Select Case Me.Eingabetext
- Case "Frida"
- With Sprachausgabe
- .Sprachtext = " Ja Hallo " & Anwender.Vorname
- .Sprachgeschwindigkeit = -2
- .Vorlesen()
- End With
- Me.EingabeClearing()
- Exit Sub
- Case "Ausschalten"
- If Not Ausschalten.Visible Then
- Ausschalten.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- Case "Beenden"
- If TerminKalender.Visible Then TerminKalender.Close()
- If Musikcenter.Visible Then Musikcenter.Close()
- If Statistik_Tagesdaten.Visible Then Statistik_Tagesdaten.Close()
- If Fotocenter.Visible Then Fotocenter.Close()
- If Astronomie.Visible Then Astronomie.Close()
- If Buero.Visible Then Buero.Close()
- If Lottomanagment.Visible Then Lottomanagment.Close()
- Me.EingabeClearing()
- Exit Sub
- Case "Kalender oeffnen"
- If TerminKalender.Visible Then
- TerminKalender.WindowState = FormWindowState.Maximized
- Me.EingabeClearing()
- Exit Sub
- Else
- TerminKalender.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- Case "Foto oeffnen"
- If Not Fotocenter.Visible Then
- Fotocenter.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- 'Case "Musik oeffnen"
- ' 'If Musikcenter.Visible Then
- ' ' Musikcenter.WindowState = FormWindowState.Maximized
- ' ' Me.EingabeClearing()
- ' ' Exit Sub
- ' 'Else
- ' If Not Musikcenter.Visible Then
- ' Musikcenter.Show()
- ' Me.EingabeClearing()
- ' Exit Sub
- ' End If
- Case "Statistik oeffnen"
- If Not Statistik_Tagesdaten.Visible Then
- Statistik_Tagesdaten.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- Case "Astro oeffnen"
- If Not Astronomie.Visible Then
- Astronomie.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- Case "Buero oeffnen"
- If Not Buero.Visible Then
- Buero.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- Case "Lotto oeffnen"
- If Not Lottomanagment.Visible Then
- Lottomanagment.Show()
- Me.EingabeClearing()
- Exit Sub
- End If
- End Select
- Me.EingabeClearing()
- End Sub
- Private Sub EingabeClearing()
- Me.EingabeText = Nothing
- Me.Mikro.Dispose()
- Me.Mikro = New SpeechRecognitionEngine
- Me.Mikro.SetInputToDefaultAudioDevice()
- Dim grammar As New Grammar(Me.GrammarFile, "thema")
- Me.Mikro.UnloadAllGrammars()
- Me.Mikro.LoadGrammar(grammar)
- Me.Mikro.RecognizeAsync(RecognizeMode.Multiple)
- Thread.Sleep(1000)
- End Sub
- End Class
Hier meine XML:
<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
w3.org/TR/speech-grammar/grammar.xsd"
xml:lang="de-DE" version="1.0">
<rule id="thema" scope="public">
<one-of>
<item>Ausschalten</item>
<item>Beenden</item>
<item>Kalender oeffnen</item>
<item>Musik oeffnen</item>
<item>Foto oeffnen</item>
<item>Frida</item>
<item>Statistik oeffnen</item>
<item>Buero oeffnen</item>
<item>Astro oeffnen</item>
<item>Lotto oeffnen</item>
</one-of>
</rule>
</grammar>
Zu 80 Prozent macht das Programm das was es soll.
Klopfe ich einfach mal auf den Tisch oder es hustet jemand im Raum, wird Case Beenden ausgeführt.
Ist dies einmal geschehen geht alles durcheinander. Es wird dann ständig Musik öffnen verstanden obwohl dies nicht gesprochen wird.
Gruß Markus
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()