Gesucht: Microschrott Windoof Speaker Code

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Gesucht: Microschrott Windoof Speaker Code

Beitrag von Green Snake »

hallo

(für alle, die microsoft nicht runtermachen wollen, den titel nicht ernst nehmen :allright: )

habe im code archiev folgender code gefunden.

Code: Alles auswählen


; English forum:
; Author: Danilo
; Date: 21. January 2003

;-----------------------------------------
;-----------------------------------------
#CLSCTX_INPROC_SERVER  = $1
#CLSCTX_INPROC_HANDLER = $2
#CLSCTX_LOCAL_SERVER   = $4
#CLSCTX_REMOTE_SERVER  = $10
#CLSCTX_ALL = (#CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER)

Procedure FemaleVoice()
  ; Select Female Voice
  Shared SelectedVoice
  SelectedVoice = 0
EndProcedure

Procedure MaleVoice()
  ; Select Male Voice
  Shared SelectedVoice
  SelectedVoice = 1
EndProcedure

Procedure SetVoiceVolume(Volume)
  ; Set Voice Volume ( 0 - 100 )
  Shared CurrentVolume
  If Volume < 0 Or Volume > 100 : Volume = 100 : EndIf
  CurrentVolume = Volume
EndProcedure

Procedure SetVoiceSpeed(Speed)
  ; Set Speed of Voice
  ;                 0 = default speed
  ; values can be between -10 and 10
  Shared CurrentSpeed
  CurrentSpeed = Speed
EndProcedure

Procedure SetVoicePitch(Pitch)
  ; Set Voice Pitch
  ; values can be between -10 and 10
  Shared CurrentPitch
  If Pitch < -10 : Pitch = -10 : EndIf
  If Pitch >  10 : Pitch =  10 : EndIf
  CurrentPitch = Pitch
EndProcedure

Procedure InitSpeech()
   Shared VoiceObject
   CoInitialize_(0)
   If CoCreateInstance_(?CLSID_SpVoice, 0, #CLSCTX_ALL, ?IID_ISpVoice, @VoiceObject) = 0
      SetVoiceVolume(100)
      SetVoiceSpeed(0)
      SetVoicePitch(0)
      MaleVoice()
      ProcedureReturn 1
   Else
      ProcedureReturn 0
   EndIf
        DataSection
          CLSID_SpVoice:
            ;96749377-3391-11D2-9EE3-00C04F797396
            Data.l $96749377
            Data.w $3391,$11D2
            Data.b $9E,$E3,$00,$C0,$4F,$79,$73,$96
          IID_ISpVoice:
            ;6C44DF74-72B9-4992-A1EC-EF996E0422D4
            Data.l $6C44DF74
            Data.w $72B9,$4992
            Data.b $A1,$EC,$EF,$99,$6E,$04,$22,$D4
        EndDataSection
EndProcedure

Procedure Speak(String.s)
   Shared VoiceObject, SelectedVoice, CurrentVolume, CurrentSpeed, CurrentPitch
   ; Set Voice (male or female)
   If SelectedVoice = 1
      Text$ = "<voice required="+Chr(34)+"Gender=Male"+Chr(34)+">"+String
   Else
      Text$ = "<voice required="+Chr(34)+"Gender=Female"+Chr(34)+">"+String
   EndIf
   ; Set Volume
   Text$ = "<volume level="+Chr(34)+Str(CurrentVolume)+Chr(34)+"/>"+Text$
   ; Set Speed
   Text$ = "<rate absspeed="+Chr(34)+Str(CurrentSpeed)+Chr(34)+">"+Text$
   ; Set Pitch
   Text$ = "<pitch absmiddle="+Chr(34)+Str(CurrentPitch)+Chr(34)+"/>"+Text$

   length = Len(Text$)*2+10
   *mem = AllocateMemory(5000)
   MultiByteToWideChar_(#CP_ACP ,0,Text$,-1,*mem,length)
   CallCOM(80,VoiceObject,*mem,0,0)
EndProcedure

Procedure CloseSpeech()
   Shared VoiceObject
   CallCOM(08,VoiceObject)
   CoUninitialize_()
EndProcedure

; Voices
Procedure Speaker_Danilo()
  MaleVoice()
  SetVoiceSpeed(-2)
  SetVoicePitch(3)
EndProcedure

Procedure Speaker_Jennifer()
  FemaleVoice()
  SetVoiceSpeed(-2)
  SetVoicePitch(10)
EndProcedure

Procedure Speaker_Mother()
  FemaleVoice()
  SetVoicePitch(-10)
  SetVoiceSpeed(0)
EndProcedure


; start code
If InitSpeech()
  Speaker_Danilo()
      Speak("Hello everybody!")               : Delay(100)
      Speak("my girlfriend is here too now") : Delay(100)
      Speak("Say hello - babe") : Delay(100)
  Speaker_Jennifer()
      Speak("Hi e b s - my name is Jennifer")
  Speaker_Danilo()
      Speak("Hey, my mother just returned from supermarket"): Delay(50)
      Speak("Say hello mom"): Delay(50)
  Speaker_Mother()
      Speak("Hi, iam the big mother")
  Speaker_Danilo()
      Speak("Greetings...")
     SetVoiceSpeed(-10)
     SetVoicePitch(-10)
      Speak("Danilo")
  CloseSpeech()
Else
   MessageRequester("ERROR","MS Speech API not installed",0)
EndIf
;-----------------------------------------
;-----------------------------------------

der geht bei mir nicht, wiso

der erste fehler kommt bei allocatememory
geht das bei euch?

das komische ist, als ich noch die version 3.30 hatte, ging es.
aber ich denke kaum, das es an der version liegt.... oder doch.. nein schwachsinn.

jedenfalls, falls bei euch der code nicht geht, wisst ihr vielleicht auch wo der fehler ist..


danke im voraus :allright:
-.-"
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

wenn du PureTools von Danilo installiert hast (enthält CallCom) und die Api von M$ drauf ist funktioniert es einwandfrei

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Wow

Beitrag von Green Snake »

danke dir, es lag an den pure tools

danke nochmals
-.-"
Antworten