Sprachsteuerung

  • VB.NET

Es gibt 88 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Dodo schrieb:

    Wie ich vermutet hatte, geht ein riesen hype los auf die Sprachsteuerung!
    Das kann gut möglich sein ^^
    Ich wolte es mal testen ( kann es im moment auch eigentlich nicht gebrauchen ) aber zum Spasss halber mal :P

    In Sharp geht es eigentlich wunderbar bin aber mit VB.Net am Kämpfen ^^
    Falls ich es schaffen sollte werde ich gerne helfen.
    (Hab im mom aber nur wenig zeit :D )

    SAR-71 schrieb:

    Aber die Benutzung von der Spracherkennung die Windows bietet setzt voraus das man diese auf dem Rechner hat

    Ich z.B. habe sie (warum auch immer) nicht auf dem Rechner

    Geh bitte nochmal eine Seite zurück, da habe ich einen Link zum Speech SDK 5.1 von MS gepostet.
    Diese IST die Spracherkennung.
    Man kann sie also Problemlos herunterladen und installieren, dann funktioniert (wenn man die grammar.xml abändert) auch das gepostete
    C#-Beispiel.
    Eine Sprachsteuerung ist, in der Form wie sie auf XP (und auch Vista) möglich ist, auch nichts für eine Breite an Usern.
    Man kann es für sich selber realisieren, ja, aber in ein Programm für viele User einzubauen ist schon allein deswegen
    nicht möglich, da man vor der Ersten Benutzung sein Profil soweit trainieren muss, dass es wenigsten ein bisschen was erkennt.
    Edit:
    @Eistee:
    Auch in VB.net ist es nichts anderes.
    Einzig bei der Portierung von Konsolenanwendung auf Windows-Forms bekomm ich nen Fehler, der mir an dieser Stelle recht unlogisch erscheint.
    Ich weiß gar nicht was ihr alle habt O.o
    ich habe natürlich zuerst auch den c# getestet. Dann damit rumgespielt um ihn zu verstehen und dann eben in vb.net neu geschrieben, also nicht mit converter oder son mist. Dafür, das ichs das erste Mal gemacht habe hat es auf anhieb funktioniert, heißt also wer nicht ganz dumm ist bekommts och hin.
    Wenn man nicht die schlechteste Aussprache hat erkennt das System die Stimme auch so. Ich habe mein System kein einziges Mal trainiert und es funktionieren trotzdem alle Wörter die ich einprogrammiere.

    OK, danke Leute!

    Hier der Aktuelle Stand:

    Wir wissen. dass

    - mein gepostetes Beispiel funktioniert
    - man es problemlos als Windosform-Anwendunk erstellen kann(bei mir klappts)
    - man unter xp das Speech sdk von Microsoft braucht (danke Magerqurag :thumbsup: )
    - man die XML unter Xp aud Englisch stellen muss (sie seite 3)

    Nur ein Problem hab ich noch:

    VB.NET-Quellcode

    1. recognizer.SetInputToDefaultAudioDevice()


    "Der Wert liegt auserhalb des erwarteten bereichs")

    Kann mir hierbei jemand helfen ich komm damit echt net zurecht. Sonst würde die Sprachsteuerung sogar funken :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „huendi“ ()

    @huendi:
    - man es problemlos als Windosform-Anwendunk erstellen kann(bei mir klappts)

    Nur ein Problem hab ich noch:

    Das widerspricht sich wohl etwas ;D
    Der gennante Fehler tritt eben nur bei Windowsformsanwendungen auf, bei ner Consolen-Application klappts wunderbar.
    Dabei ist es egal ob C# oder Vb.net.
    Der Fehler kann umgangen werden, wenn man den Befehl

    VB.NET-Quellcode

    1. recognizer.SetInputToDefaultAudioDevice()

    in einen anderen Thread auslagert. (Warum auch immer.)
    Dafür kommen im weiteren Verlauf des Codes noch mehr Fehler,
    die auch nur unter Windowsforms auftreten, und die ich noch nicht beheben konnte.
    Hallo Zusammen. Ich bin neu in dem Forum aber ich denke ich kann euch weiter helfen! Ihr fügt den Verweiß "System.Speech" hinzu!

    dann braucht ihr eine Textbox und ein button......löscht einfach alles in eurem Codefenster und fügt meine code ein! Wenn ihr das Programm ausführt, gebt den Text in eure Textbox ein und klickt auf den Button! Das wars! :)

    VB.NET-Quellcode

    1. Imports System.SpeechPublic Class Form1
    2. Dim speech As System.Speech.Synthesis.SpeechSynthesizer
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. speech = New System.Speech.Synthesis.SpeechSynthesizer speech.SpeakAsync("Welcome " & TextBox1.Text)
    5. End Sub
    6. End Class
    Habe XP und die SpeechSDK von Microsoft runtergeladen & installiert.
    Habe diesen Code:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Collections.Generic
    3. Imports System.Linq
    4. Imports System.Speech
    5. Imports System.Speech.Recognition
    6. Imports System.Text
    7. Namespace mini_speech_demo
    8. Class Program
    9. ' Die main-Funktion wird alle Aufgaben ausführen. In einem größeren Programm würde man das eher auslagern.
    10. Private Shared Sub Main(ByVal args As String())
    11. ' Hier werden recognition-engine und grammar vorbereitet. SpeechRecognitionEngine bedeutet, dass nur unser Programm auf die Spracherkennung zugreift.
    12. Console.WriteLine("Firing up speech-demo")
    13. Dim recognizer As New SpeechRecognitionEngine()
    14. recognizer.SetInputToDefaultAudioDevice()
    15. ' hier setzen wir einen Event-Handler für das "Recognized"-Event. Es gibt noch eine Menge anderer Events.
    16. ' Die aufgerufene Funktion recognizer_SpeechRecognized wird aufgerufen.
    17. AddHandler recognizer.SpeechRecognized, AddressOf recognizer_SpeechRecognized
    18. ' der try-catch block ist eigentlich optional, aber ich hatte am Anfang so viele Exceptions, dass ich ihn drin gelassen habe.
    19. Try
    20. Dim grammar As New Grammar(My.Resources.grammar, "thema")
    21. recognizer.UnloadAllGrammars()
    22. recognizer.LoadGrammar(grammar)
    23. ' mit folgender Zeile wird die eigentliche Erkennung gestartet.
    24. recognizer.RecognizeAsync(RecognizeMode.Multiple)
    25. Catch e As Exception
    26. Console.WriteLine("Exception aufgetreten: " & e.Message)
    27. Exit Sub
    28. End Try
    29. ' wenn wir es bis hier geschafft haben, ist alles ok. Das zeigen wir dem Benutzer an...
    30. Console.WriteLine("Speech-Engine up and running")
    31. ' ... und gehen in eine Schleife, die auf Tastendruck beendet wird (und mit ihr auch das Programm).
    32. While Not Console.KeyAvailable
    33. System.Threading.Thread.Sleep(100)
    34. End While
    35. Console.WriteLine("terminating.")
    36. ' Jetzt noch schnell aufräumen.
    37. recognizer.Dispose()
    38. Exit Sub
    39. End Sub
    40. ' Diese Funktion wird aufgerufen, sobald etwas erkannt wurde.
    41. ' In e.Result.Text steht der erkannte Text.
    42. Private Shared Sub recognizer_SpeechRecognized(ByVal sender As Object, ByVal e As System.Speech.Recognition.SpeechRecognizedEventArgs)
    43. Console.WriteLine((e.Result.Text & " (") + e.Result.Confidence.ToString() & ")")
    44. End Sub
    45. End Class
    46. End Namespace

    in einer Consolen-Anwendung. Allerdings kommt immer als Fehler:
    Fehler 1 "Sub Main" wurde nicht in "ConsoleApplication2.Module1" gefunden. ConsoleApplication2
    Habe Visual Basic 2008 Profesionell.