Hallo,
erstmal vielen Dank an RSBAsic für die hervorragenden Arbeiten, die vielen Bibliotheken, die er hier zur Verfügung stellt. Hochachtung.
Ich bastel mir eine Sprachausgabe und habe dabei festgestellt, dass nach Ausführen der Prozedur "TextToAudioFile" die wav-Datei nicht geschlossen wird.
Das Programm muss ich erst beenden.
Ist das ein bug oder ein feature? Oder kann ich mit meinen Anfängerkenntnissen einen Workaround erstellen?
Hier ist mein Gerüst zum Ausprobieren:
Code: Alles auswählen
Global Window_0
Global Text, Button_0, Button_1, Button_2
Declare speichern(EventType)
Declare Stopp(EventType)
Declare vorlesen(EventType)
Procedure OpenWindow_0(x = 0, y = 0, width = 430, height = 250)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "Sprachausgabe", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Text = EditorGadget(#PB_Any, 20, 20, 270, 90)
Button_0 = ButtonGadget(#PB_Any, 20, 120, 100, 25, "vorlesen")
Button_1 = ButtonGadget(#PB_Any, 190, 120, 100, 25, "Stopp")
Button_2 = ButtonGadget(#PB_Any, 20, 160, 100, 25, "speichern")
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Button_0
vorlesen(EventType())
Case Button_1
Stopp(EventType())
Case Button_2
speichern(EventType())
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
Global text$
text$="Hallo. - - Hier ist Hedda. Dieser Text kann auch gespeichert werden."
; XIncludeFile "Sprachausgabeformular.pbf"
OpenWindow_0()
SetGadgetText(text,text$)
Global PBEx_Speech
PBEx_Speech = OpenLibrary(#PB_Any, "PB.Ex_Speech_x64.dll")
Prototype TextToSpeaker(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, Asynchronous, ErrorOutput)
Global TextToSpeaker.TextToSpeaker = GetFunction(PBEx_Speech, "TextToSpeaker")
Prototype TextToAudioFile(Text.p-Unicode, Voice.p-Unicode, Speed, Volume, SaveFilePath.p-Unicode, ErrorOutput)
Global TextToAudioFile.TextToAudioFile = GetFunction(PBEx_Speech, "TextToAudioFile")
Prototype SpeechRecognition(WordArray, WordArraySize, ErrorOutput)
Global SpeechRecognition.SpeechRecognition = GetFunction(PBEx_Speech, "SpeechRecognition")
Prototype WaitSpeechRecognition(RecognizedWord)
Global WaitSpeechRecognition.WaitSpeechRecognition = GetFunction(PBEx_Speech, "WaitSpeechRecognition")
Prototype KillSpeechRecognition()
Global KillSpeechRecognition.KillSpeechRecognition = GetFunction(PBEx_Speech, "KillSpeechRecognition")
Define ErrorOutput$ = Space(1024)
Procedure vorlesen(EventType)
text$= GetGadgetText(text)
If text$=""
text$="Kein Text zum vorlesen."
EndIf
TextToSpeaker(text$,"",0,100,1,@ErrorOutput$)
EndProcedure
Procedure speichern(EventType)
text$= GetGadgetText(text)
If text$=""
End
EndIf
TextToAudioFile(text$,"",0,100,"hedda.wav",@ErrorOutput$)
EndProcedure
Procedure stopp(eventtype)
End
EndProcedure
Repeat
Event = WaitWindowEvent()
Select EventWindow()
Case Window_0
Window_0_Events(event)
EndSelect
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
CloseLibrary(PBEx_Speech)
End
Gruss und Danke schon mal