COMmate Frage: Voice

Für allgemeine Fragen zur Programmierung mit PureBasic.
Hugo
Beiträge: 56
Registriert: 30.03.2005 12:07
Wohnort: Nähe München

COMmate Frage: Voice

Beitrag von Hugo »

Ich beschäftige mich auch gerade mit COMate um Text gesprochen auszugeben, was auch schon funktioniert.

Mein Problem ist, dass die Stimme mit der der Text gesprochen wird immer Microsoft Anna (Englisch) ist, obwohl ich LH Anna, LH Stefan und ScanSoft Steffi (zu finden unter: http://www.filefront.com/8611922/RSSolo ... Steffi.exe) installiert und in den Windows Spracheinstellungen eingestellt habe.

Bei diesem VB Beispiel zur Auswahl der Stimme stehe ich irgendwie auf dem Schlauch um es in PureBasic umzusetzen.

Code: Alles auswählen

Private V As SpeechLib.SpVoice
Private T As SpeechLib.ISpeechObjectToken

Private Sub Command1_Click()

    If List1.ListIndex > -1 Then

        'Set voice object to voice name selected in list box
        'The new voice speaks its own name

        Set V.Voice = V.GetVoices().Item(List1.ListIndex)
        V.Speak V.Voice.GetDescription

    Else
        MsgBox "Please select a voice from the listbox"
    End If

End Sub

Private Sub Form_Load()
    Dim strVoice As String

    Set V = New SpVoice

    'Get each token in the collection returned by GetVoices
    For Each T In V.GetVoices
        strVoice = T.GetDescription     'The token's name
        List1.AddItem strVoice          'Add to listbox
    Next

End Sub
Hier ein Auszug aus meinem aktuellen Code:

Code: Alles auswählen

XIncludeFile  "COMatePLUS.pbi"

Define.COMateObject objSpeak

objSpeak = COMate_CreateObject( "SAPI.SpVoice" ) 
If objSpeak   
  
  ;- ob das wohl richtig ist????? und wenn ja, wie gehts weiter?????
  objSpeak\GetObjectProperty( "GetVoices()" )
  
  ;- Anzeigen und ändern der Lautstärke geht
  Debug objSpeak\GetIntegerProperty( "Volume"        )
        objSpeak\SetProperty(        "Volume = '80'" ) 
  Debug objSpeak\GetIntegerProperty( "Volume"        )

  ;- Dieser Text wird leider nur von Anna gesprochen (Englisch)   
  objSpeak\Invoke( "Speak('Dieser Text soll in Deutsch gesprochen werden', 0 )" ) 
  objSpeak\Release() 
   
EndIf
Kann hier jemand helfen?
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: COMmate Frage: Voice

Beitrag von Kiffi »

Code: Alles auswählen

Enumeration 
  #Window
EndEnumeration

Enumeration 
  #lstVoices
  #cmdSpeak
EndEnumeration

IncludePath #PB_Compiler_Home + "srod\comateplus\" ; Pfad anpassen!
XIncludeFile "comateplus.pbi"

Define SAPI_SpVoice.COMateObject
Define SpObjectToken.COMateObject

SAPI_SpVoice = COMate_CreateObject("SAPI.SpVoice")

If SAPI_SpVoice
  
  OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 300, 300, "")
  
  ListViewGadget(#lstVoices, 5, 5, 290, 260)
  ButtonGadget(#cmdSpeak, 195, 270, 100, 25, "Speak!")
  
  For Counter = 0 To SAPI_SpVoice\GetIntegerProperty("GetVoices\Count") - 1
    SpObjectToken = SAPI_SpVoice\GetObjectProperty("GetVoices\Item(" + Str(Counter) + ")")
    If SpObjectToken
      AddGadgetItem(#lstVoices, -1, SpObjectToken\GetStringProperty("GetDescription"))
      SpObjectToken\Release()
    EndIf
  Next
  
  SetGadgetState(#lstVoices, 0)
  
  Repeat
    
    WWE = WaitWindowEvent()
    
    Select WWE
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case #cmdSpeak
            
            SpObjectToken = SAPI_SpVoice\GetObjectProperty("GetVoices\Item(" + Str(GetGadgetState(#lstVoices)) + ")")
            
            If SpObjectToken
              
              SAPI_SpVoice\SetPropertyRef("Voice = " + Str(SpObjectToken) + " As COMateObject")
              
              SAPI_SpVoice\Invoke("Speak('PureBasic')")
              
              SAPI_SpVoice\Invoke("Speak('Feel the pure power')")
              
              SpObjectToken\Release()
              
            EndIf
            
            
        EndSelect
        
    EndSelect
    
  Until WWE = #PB_Event_CloseWindow
  
  SAPI_SpVoice\Release()
  
EndIf
Grüße ... Kiffi
a²+b²=mc²
Hugo
Beiträge: 56
Registriert: 30.03.2005 12:07
Wohnort: Nähe München

Re: COMmate Frage: Voice

Beitrag von Hugo »

Super, dadurch verstehe ich schon einiges besser...... :praise:

Vielen Dank an Kiffi!
Antworten