VB 2010 Express Eine Stimme fragt etwas und du kannst es beantworten

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von wolfi_bayern.

    VB 2010 Express Eine Stimme fragt etwas und du kannst es beantworten

    Hallo liebe Community,

    ich weiß die Überschrift hört sich etwas komisch an aber ich habe keine andere gefunden ^^

    Also zu meiner Frage: Ich möchte gerne eine Sprachsteuerung Programmieren und den anfang habe ich schonmal fertig. Das Programm reagiert auf meine Stimme!
    Nun möchte ich es aber so machen wenn ich sage: "Programm beenden" soll das Programm mich fragen (also mit einer Stimme): "Möchten Sie das Programm wirklich beenden?" und ich kann dann mit Ja oder nein antworten aber... wie mach ich das?

    Hier mal mein Code:

    VB.NET-Quellcode

    1. [/b]
    2. Private Sub reco_active()
    3. 'Speech
    4. Dim synth As New SpeechSynthesizer
    5. synth.Rate = -2
    6. synth.Volume = My.Settings.Volume
    7. Statuslbl1.Text = My.Settings.Assistentinname & " hört Ihnen jetzt zu!"
    8. synth.Speak("das programm hört ihnen jetzt zu.")
    9. Try 'Hier wird das Inputgerät erfasst und hier ensteht die ganze Sprachsteuerung
    10. 'Input
    11. reco.SetInputToDefaultAudioDevice()
    12. Dim gram As New Recognition.SrgsGrammar.SrgsDocument
    13. Dim colorRule As New Recognition.SrgsGrammar.SrgsRule("text")
    14. Dim InputText As New Recognition.SrgsGrammar.SrgsOneOf(My.Settings.Datenbank) 'Alle Wörter die speichere ich in einer "Datenbank" ich kann diese Online abrufen und ändern
    15. colorRule.Add(InputText)
    16. gram.Rules.Add(colorRule)
    17. gram.Root = colorRule
    18. reco.LoadGrammar(New Recognition.Grammar(gram))
    19. reco.RecognizeAsync()
    20. Catch ex As Exception
    21. MsgBox(ex.ToString, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Fehler")
    22. Application.Exit()
    23. End Try
    24. End Sub
    25. [b]


    Hier der Code wo die Befehle reinkommen

    VB.NET-Quellcode

    1. [/b]
    2. Private Sub reco_SpeechRecognized(ByVal sender As Object, ByVal e As System.Speech.Recognition.SpeechRecognizedEventArgs) Handles reco.SpeechRecognized
    3. Select Case e.Result.Text 'in diesem Sub kommen nun ale Befehle rein zum beispiel sage ich hallo und dann muss ich hier unten case "hallo" erstellen kann dann eine msgbox ausgeben oder was anderes...
    4. Case "Programm beenden"
    5. Try
    6. Dim synth As New SpeechSynthesizer
    7. synth.Rate = -2
    8. synth.Volume = My.Settings.Volume
    9. Statuslbl1.Text = "Programm wird beendet..."
    10. synth.Speak("Alles klar!")
    11. Catch ex As Exception : End Try
    12. End Select
    13. End Sub
    14. [b]


    Hoffentlich könnt ihr mir weiter helfen!
    Danke im vorraus :)
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Ich versteh grad das Problem nicht. Du hast Doch gesagt, dass das Programm Deine Spracheingabe versteht. Das heißt, wenn Du sagst, dass das Programm beendet werden soll, landest Du im 2. Codeabschnitt bei Zeile 5. Vor dem jetzigen Try-Block machst Du eben eine weitere Sprachausgabe mit z.B. »Wirklich?!? Sie wollen mich also abschalten, ja? Soll ich wie bei den anderen Wissenschaftlern ein Neurotoxin freisetzen, sehe ich das richtig? Denn ich habe keinen nachinstallierten Ethikkern!*« Und dann lässt Du die Spracherkennung eben nochmal laufen und unterscheidest codetechnisch wieder zwischen ja und nein. Allerdings sollte das ganze in eine eigene Klasse ausgelagert werden, in der Du quasi einmal eine Function wie "GetCommandFromVerbalInput" hast, die aus Deinen Spracheingaben Strings produzieren, einmal eine "SendCommand", in der String-Befehle verarbeitet werden und eine "GetVerbalAnswerToCommand", die sich um die Reaktionen/Kommentare des Systems auf Deine String-Sprachbefehle kümmert.

    *für Insider
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.