(Sprachsteuerung wie richtig?) Sprachausgabe in Deutsch?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    (Sprachsteuerung wie richtig?) Sprachausgabe in Deutsch?

    Hey,
    ich habe in letzter Zeit ja hier viel über die Sprachsteuerung gehört. Und auch viele Codes gefunden. Aber es funktioniert davon bei mir keiner richtig. Mein OS ist Windows 7 Prof 64 Bit. Hier mal ein Code welcher wenigstens zur Ausgabe funktioniert(aber nur in English ich habe eine deutsche Stimme installiert jedoch lässt sie sich nicht auswählen dann habe ich das Auswahlmenü von XP gedownloaded und dort lässt sie sich auswählen. Also Erweiterte Spracheinstallungen):

    VB.NET-Quellcode

    1. Imports System.Speech.Synthesis
    2. Public Class Form1
    3. Sub Lesen(ByVal Text As String)
    4. Dim Speaker As New SpeechSynthesizer()
    5. Speaker.Speak(Text)
    6. End Sub
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. Lesen("Hello World!")
    9. End Sub
    10. End Class
    Den Code habe ich verstanden aber ich verstehe nicht wie ich das auf Deutsch umsetze und Spracheingabe mache ohne das oben diese blöde Sprachsteuerungs Fenster kommt.

    Vielen Dank und LG

    edit: Ok ich hab nochmal Bing bemüht und habe einen FUNKTIONSFÄHIGEN Code zur EINGABE gefunden. wuhuuuuuuu zwar in c# aber das kann man ja leicht umschreiben wer ihn will hier eine Website: Klick!
    Jetzt fehlt nurnoch eine Deutsche Sprachausgabe. Hat dazu jmd eine Lösung? Und noch was kann mal jmd den Code auf XP und Vista testen?

    LG

    edit, Fazit: Also ich habe auf XP Home edition 32 bit und windows 7 prof 64 bit getestet:
    • XP: Bricht mit einem Fehler ab.
    • 7: Funtkioniert perfekt.

    Jetzt fehlt nur noch jmd der auf 7 32 bit teste und vista 64 und 32

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „FinnSoft“ ()

    Ich muss dir jetzt einfach hier antworten.
    Microsoft hat bei der 64bit Version richtig scheiße gebaut!

    Du wirst nicht so leicht auf eine deutsche Stimme zugreifen können weil es Probleme mit der 64bit Version gibt.
    So erhalte ich (auch Windows 7 64bit!) mit

    VB.NET-Quellcode

    1. Dim Speaker As New SpeechSynthesizer
    2. Console.WriteLine(Speaker.GetInstalledVoices.Count)

    Den Wert 1 --> das heißt, dass das Programm nur eine installierte Stimme erkannt hat! obwohl ich eigtl sogar 5 installiert habe!

    Wie man diese nun mit VB auf 64bit Windows 7 nutzen kann? Keine Ahnung
    Ich kann dir aber verraten wie du sie mit Windows benutzen kannst.

    Wenn du zu Systemsteuerung\Alle Systemsteuerungselemente\Spracherkennung gehst und dann auf Text-zu-Sprache klickst kann man normalerweiße die Standard-Computerstimme auswählen!
    Aber genau dort hat Microsoft gepfuscht.
    Der klick auf Text-zu-Sprache öffnet diese Datei.

    Quellcode

    1. C:\Windows\System32\Speech\SpeechUX\sapi.cpl

    Das ist jetzt jedoch die sapi.cpl für die 32bit Systeme!
    Dort wird die nur Miscrosoft Anna angezeigt und sonst nichts! egal ob du noch andere Stimmen installiert hast.

    Um alle installierten Stimmen auf 64bit Systemen einzusehen musst du folgende Datei ausführen.

    Quellcode

    1. C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl


    So das Problem ist jetzt also, dass VB auf die 32bit Registrierungseinträge der Stimmen zugreift!
    Also müsstest du eine Möglichkeit finden, dass VB die Stimmen für 64bit Systeme sucht.

    Sollte irgendwer eine Lösung finden bitte mir mitteilen! Danke

    mfg Mike

    EDIT:

    Ich habe mich jetzt nochmal ausgibig mit dem Thema beschäftigt und habe herausgefunden, dass die anderen Stimmen in VB auch auswählbar sind wenn man die Zielplattform der Anwendung auf x86 stellt.!

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

    Wo kann man die Zielplatform der Anwendung einstellen? Ich programmiere gerade ein Programm mit Sprachausgabe und habe seither immer mit externen Tools Audiodateien erstellt, was allerdings den Nachteil hat, dass der Text nicht verändert werden kann.
    Ich würde das so machen:

    VB.NET-Quellcode

    1. Imports System.Speech.Synthesis
    2. Public Class Form1
    3. Private Speaker As New SpeechSynthesizer() ' das hier
    4. Sub Lesen(ByVal Text As String)
    5. Speaker.Speak(Text)
    6. End Sub
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. Lesen("Hello World!")
    9. End Sub
    10. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!