vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Windows Stimmenauswahl per VB umstellen 
Autor: OGGI
Datum: 03.02.15 09:46

Howdy V A T

1.) Einen Commandbutton und ein Listenfeld mit Namen »lstStimme« in ein neues Projekt einfügen.
2.) Unter IDE-Menüpunkt 'Projekt/Verweise', einen Verweis auf »Microsoft Speech Object Library« setzen.

'speech
Private V As SpeechLib.SpVoice
Private T As SpeechLib.ISpeechObjectToken
 
Private Sub Command_Click()
 
    Dim ObjTextToSpeech As Object
    Dim sItem As String
    Dim sa As String
    Dim lb As Long
 
    'text
    sa = "Man dient seinem Planet, bedingt seinem Land, nicht einer Fahne und" & _
      "nie einem Glauben."
    lb = -4 'vorlesegeschwindigkeit von -10 bis +10, 0=standard
 
    If lstStimme.ListIndex > -1 Then
        Set V.Voice = V.GetVoices().Item(lstStimme.ListIndex)
    End If
 
    V.Rate = lb   'geschwindigkeit
    V.Speak sa, SVSFlagsAsync 'sprechen
 
End Sub
 
Private Sub Form_Load()
 
    Dim strVoice As String
 
    Me.Show
    'vorhandene stimmen auslesen und in liste einfügen
    Set V = New SpVoice
    For Each T In V.GetVoices
        strVoice = T.GetDescription     'The token's name
        lstStimme.AddItem strVoice          'Add to listbox
    Next
 
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Windows Stimmenauswahl per VB umstellen 
Autor: V A T
Datum: 02.02.15 00:51

Hallo,

ich habe eine Frage und hoffe, dass mir - wie bereits so oft - jemand helfen kann.

Ich habe mehrere VB6-Programme geschrieben, welche auch Sprachausgaben haben. Klapp alles prima, der Computer spricht (oft sehr zum Erstaunen meiner Frau .

Das Problem: Bei einem Programm, welches englische Vokabeln vorliest benötigt man eine andere "Stimmauswahl", als beim Programm, welches das deutsche Schnitzelrezept vorliesst. Nun habe ich natürlich in Windows (Version 7) sowohl eine deutsche (ScanSoft Steffi_Dri40_16k Hz), als auch eine englische (Microsoft Anna - english (United States) Stimme installiert, muss aber vor dem Start des jeweiligen VB-Programms über die Windows Systemsteuerung "Spracheigenschaften", "Text-in-Sprache", "Stimmauswahl" die korrekte Stimme einstellen, damit das Programm nicht mit ausländischen Akzent spricht.

Die Frage: Gibt es eine Möglichkeit im VB6-Programm abzufragen, welche Stimme aktuell eingestellt ist bzw. die gewünschte Stimme einzustellen? Dann würde das programm automatisch in der richtigen Sprache sprechen und ich mir das manuelle Umstellen sparen.

Vielen Dank an alle, die mich bei der Lösung unterstützen! Ich weiß das wirklich sehr zu schätzen!

Gruß

V A T

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: Zardoz
Datum: 02.02.15 04:29

Hallo V A T,
probier' mal dies:
  Dim TextSpeech As Object
 
  Set TextSpeech = CreateObject("SAPI.SpVoice")
  Set TextSpeech.Voice = _
    TextSpeech.GetVoices("Name=ScanSoft Steffi_Dri40_16kHz").Item(0)

Gruss,

Zardoz

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: V A T
Datum: 02.02.15 23:24

Hallo Zardoz,

zuerst einmal vielen Dank für Deine Unterstützung!!!

Ich habe den Code mal so getestet:

- die englische Stimme ("Microsoft Anna") ist in Windows eingestellt
- ich lasse Deinen Code laufen: Zum Testen eine einfache Form mit nem Command-Button drauf erstellt und hinter das Click-Ereignis den Code gehängt
- ich schaue in Windows, welche Stimme danach eingestellt ist

Ergebnis: Keine Veränderung, immer noch die Anna, nicht die Steffi...

Eine Fehlermeldung gibt es aber nicht, d.h. der Code läuft grundsätzlich, er tut nur nicht, was er tun sollte. Hast Du eine Idee oder mache ich einen Fehler?

Gruß

V A T

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: V A T
Datum: 03.02.15 15:22

Hallo OGGI!

Ich bin begeistert!!! Genau das wollte ich - funktioniert perfekt! Jetzt kann ich die installierten Stimmen abfragen, auswerten und die am ehesten passende benutzen!

Vielen, vielen Dank für Deine umfangreiche Code-Hilfe und die, für einen Einsteiger verständliche, Einsatzanleitung (oft eine Hürde, wenn der Profi mit dem Dummi redet)!

Ich werd das jetzt sofort in alle meine sprechenden Programme einbauen! Meine Frau wird staunen, wenn der Computer jetzt auch noch plötzlich abwechselnd mit verschiedenen Stimmen spricht. Alleine das Bild ist den Aufwand wert...

Nochmals Danke - natürlich auch an Zardoz und alle anderen, die versucht haben zu helfen!

Gruß

V A T

P.S.: Ein echtes Lob an vbarchiv.net, diese Forum ist Gold wert!!!

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: V A T
Datum: 04.02.15 02:50

Hallo OGGI,

ich hatte mich etwas zu früh gefreut und muss dich noch einmal "belästigen". Denn ich bin auf ein Problem gestoßen, dass ich mangels Know-how nicht lösen kann, dass Dich aber wahrscheinlich nur ein müdes Lächeln kostet. Vielleicht kannst Du helfen:

[u]Hier der Status:

1. Ich habe ein Projekt, in dem es mehrere Formen gibt. Um die Stimme nach deinem Code zu ändern habe ich ein eigenständiges Fenster, in dem man die Stimme per Listbox wählen kann.
Über einen Command-Button wird der Name der ausgewählten Stimme dann vorgelesen und die Form verlassen.

Option Explicit
 
Private V As SpeechLib.SpVoice
Private T As SpeechLib.ISpeechObjectToken
 
Private Sub Form_Load()
    Dim strVoice As String
    'Vorhandene Stimmen auslesen und in Listbox einfügen
    Set V = New SpVoice
    For Each T In V.GetVoices
        strVoice = T.GetDescription             'Name der Stimme lesen
        Listbox_Stimmen.AddItem strVoice        'zu Listbox hinzufügen
    Next
    Listbox_Stimmen.ListIndex = 0               'Erste Stimme in Listbox als 
    ' ausgewählt markieren
End Sub
 
Private Sub cmd_Exit_Click()
    Dim ObjTextToSpeech As Object
    Dim Lautstaerke As Long
    Dim Text As String
 
    'Text und Geschwindigkeit festlegen
    Lautstaerke = -4                                     _
      'Vorlesegeschwindigkeit von -10 bis +10, 0=Standard
    Text = Listbox_Stimmen.Text
 
    'Sprechen
    Set V.voice = V.GetVoices().Item(Listbox_Stimmen.ListIndex)
    V.Rate = Lautstaerke
    V.Speak Text, SVSFlagsAsync
 
    'Stimmauswahl-Fenster verlassen
    form_Hauptmenue.Visible = True
    Unload Me
End Sub
2. In meinem Projekt lasse ich den PC bisher sprechen, indem ich ein Modul erstellt habe, in dem folgender Code steht:

Option Explicit
 
Public Sub sprachausgabe(Text As String)
    Dim voice As Variant
 
    'Sprachausgabe
    Set voice = CreateObject("SAPI.SpVoice")
    voice.Rate = -5                     'Lesegeschwindigkeit
    voice.Volume = 100                  'Leselautstärke
    DoEvents
    voice.Speak Text, 0                 'Vorlesen
End Sub
Der Aufruf erfolgt dann aus diversen Formen heraus mit
sprachausgabe (String-Variable)
.
Der Vorteil: Ich musste die VB-Befehle zur Sprachausgabe nur einmal hinterlegen, kann auf sie von überall im Projekt flexibel zugreifen.

Nun das Problem: Scheinbar nutzt Dein Code und mein Code nicht dieselbe "Art" zu sprechen (ich muss das so ungeschickt ausdrücken, weil ich es nicht besser erklären kann). D.h. ich kann zwar über Deinen Code die Sprache umstellen und damit einmal was sprechen, wenn mein Programm danach aber wieder auf meinen "alten" Code zur Sprachausgabe zurückgreift, spricht Windows nicht mit der zuvor über Deinen Code eingestellten Sprache, sondern mit der in der Windows-Systemsteuerung hinterlegten. Ich erkläre mir das so, dass die durch Deinen Code gar nicht geändert (das war ja mein ursprünglicher Laienhafter Lösungsansatz) wird. Was ja grundsätzlich auch die viel bessere Variante ist!

Meine Frage: Wie kann ich Deinen Code so umbauen, dass die Ergebnisse der Auswahl vom Programm gemerkt (z.B. Ablage in öffentlichen Variablen oder sowas) werden und ich sie von jedem Punkt im Projekt aufrufen und zum Sprechen nutzen kann (dann brauche ich meinen "alten" Code zum Sprechen nicht mehr und nehme nur noch Deinen). Also kurz gesagt: Ich will Auswahl der Sprache mit der gesprochen werden soll (s. Code oben + Form-übergreifendes Merken der Einstellungen) und das Sprechen mit der ausgwählten Sprache (noch kein Code vorhanden) voneinander trennen.

Hältst Du das für einen sinnvollen Ansatz und kannst du mir einen Realisierungstipp geben? Ich wäre Dir echt dankbar!

Gruß

V A T

P.S.: Übrigens ne sehr interessante Homepage hast Du! Ich werde sie weiterempfehlen!

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: OGGI
Datum: 04.02.15 09:08

ObjTextToSpeech As Object muss evtl. mit ins Modul, oder du verzichtest einfach ganz darauf und schreibst es direkt in den Code. Die Spracheinstellungen werden in der Registry abgelegt.
Dim ObjTextToSpeech As Object
Sub RegistryLesen()
 
    'stimme
    pubSprecherStimme = GetSetting(App.Title, "Options", "SprecherStimme", _
      "Name=Mirosoft Anna")
    pubiSprecherTempo = Val(GetSetting(App.Title, "Options", "SprecherTempo", _
    "0"))
 
End Sub
Private Sub cmdLesen_Click(Index As Integer)
 
    Dim sa As String
    Dim ObjTextToSpeech As Object
 
    Set ObjTextToSpeech = CreateObject("SAPI.spVoice")
    Set ObjTextToSpeech.voice = ObjTextToSpeech.GetVoices( _
      pubSprecherStimme).Item(0)
    ObjTextToSpeech.Rate = pubiSprecherTempo
 
    sa = "Für die Entwicklung des modernen Rechtsstaats, war nicht der Einfluss" & _
      "des Christentums entscheidend, sondern die Befreiung von ihm."
 
    Me.MousePointer = 11
    ObjTextToSpeech.speak sa
    Me.MousePointer = 0
 
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: V A T
Datum: 06.02.15 17:41

Hallo OGGI,

danke für Deine Unterstützung! Aber jetzt hast du mich verwirrt...

Zum Verständnis einige Frage:
a) Habe ich das richtig interprtiert, dass "deine" Art den PC sprechen zu lassen eine andere Art ist als "meine" bisher(!) genutzte Art? Wenn ja, bedeutet das für mich ich muss mich für eine entscheiden und die andere "vergessen"...
b) Hast Du in deinem zuletzt geschriebenen Code jetzt gar nicht mehr Deinen ursprünglichen Ansatz verfolgt, sondern hast versucht "meinen" Ansatz so weiterzuentwickeln, dass er meine Anforderung erfüllt?
c) Das erste Stück Code, was ich zuletzt veröffentlicht habe, stammt im Prinzip aus Deiner Feder und funktioniert perfekt (Stimme wählen, mit der Stimme etwas sagen). Einziges Problem, ich bekomme es nicht hin mir die gewählte Stimme zu merken, damit ich an anderer Stelle im Programm wieder etwas mit dieser Stimme sagen kann ohne sie vorher erneut zu wählen. Mein Ansatz war, "meinen" alten Code zu löschen und stattdessen ins Modul einen neuen Code zu schreiben, der auf "deine Art" spricht. Ist dieser Ansatz sinnvoll?
d) ich habe unabhängig von all den Fragen probiert Deinen letzten Code zum Laufen zu bringen. ist mir leider nicht gelungen. Er sagt die Variable "pubSprecherStimme" sei nicht definiert. Ich hab aber keine Ahnung, wie ich die richtig definiere.

Sorry für meine laienhafte Ausdrucksweise! Und nochmals Danke, dass Du Dich mit meinen Problemen rumschlägst!!!

Gruß

V A T

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: OGGI
Datum: 06.02.15 18:13

pubXxx steht für eine Public-Variable, diese wird in der Regel in einem Modul deklariert.
priXxx steht für eine Private-Variable, diese wird in der Regel in einer Form deklariert.
Also pubSprecherStimme als Stringvariable und pubiSprecherTempo als Integervariable in einem Modul deklarieren und der Code sollte laufen.

Beitrag wurde zuletzt am 06.02.15 um 18:20:02 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: V A T
Datum: 06.02.15 18:51

Hi OGGI,

danke für die Erläuterungen. Hab's entsprechend eingebaut, laufe aber immer noch in einen Fehler: "Die Methode 'Item' fürdas Objekt 'IspeechObjectTokens' ist fehlgeschlagen.

Mein Code sieht jetzt so aus:


FORM (mit Button "cmd_Lesen"):
Dim ObjTextToSpeech As Object
 
Private Sub cmd_Lesen_Click()
    Dim sa As String
    Dim ObjTextToSpeech As Object
 
    Set ObjTextToSpeech = CreateObject("SAPI.spVoice")
    Set ObjTextToSpeech.voice = ObjTextToSpeech.GetVoices( _
      pubSprecherStimme).Item(0)
    ObjTextToSpeech.Rate = pubiSprecherTempo
 
    sa = "Hallo"
 
    Me.MousePointer = 11
    ObjTextToSpeech.speak sa
    Me.MousePointer = 0
End Sub
 
Private Sub Form_Load()
    RegistryLesen
End Sub
 
Sub RegistryLesen()
 
    'stimme
    pubSprecherStimme = GetSetting(App.Title, "Options", "SprecherStimme", _
      "Name=Mirosoft Anna")
    pubiSprecherTempo = Val(GetSetting(App.Title, "Options", "SprecherTempo", _
    "0"))
 
End Sub
MODUL:
Option Explicit
 
Public pubSprecherStimme As String
Public pubiSprecherTempo As Integer
P.S.: Kannst Du bitte nochmal kurz Erläutern, was welcher Programmteil tun soll, dann kann ich es ggf. besser in den bisherigen Kontext einordnen.

MfG

V A T

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Windows Stimmenauswahl per VB umstellen 
Autor: OGGI
Datum: 07.02.15 07:38

Ups, da hab ich dich schön auf's Glatteis geführt. Der zweite Code von mir funzt nur, wenn ein 'On Error Resume Next' implementiert wird. Dieses hilft über die kleine unangenehme Hürde des Item-Errors hinweg

Ich hab mal ein Beispielprogramm geschrieben , das deine Wünsche alle abdecken sollte
http://www.oggisoft.de/zip/sprechen.zip

Beitrag wurde zuletzt am 07.02.15 um 07:39:51 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel