Gesucht: Microschrott Windoof Speaker Code
Verfasst: 24.04.2005 20:55
hallo
(für alle, die microsoft nicht runtermachen wollen, den titel nicht ernst nehmen
)
habe im code archiev folgender code gefunden.
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
(für alle, die microsoft nicht runtermachen wollen, den titel nicht ernst nehmen

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 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
