Dll de Espeak
Publié : sam. 03/oct./2009 14:21
Salut,
je voudrais piloter la synthèse vocale Espeak à partir de sa DLL et non par SAPI.
J'arrive à dialoguer avec la DLL grâce à des CallFunction, mais dès que je veux intègrer ces même CallFunction dans des procédures cela plante...
Dans cet exemple, si je commente l'appel à la fonction Aff(), le débugger affiche la valeur de retour de l'initialisation.
Par contre, si j'appelle la fonction Aff(), j'ai une erreur "invalide memory access..."
Je suppose que les format des paramètres ne doivent pas être correct et que la pile pourrait être trop dépiler/enpiler ...
mais je ne sais pas où !
Quelqu'un aurait une idée ?
J'ai essayer en déclarant des prototype tel que :
Prototype.i Espeak_Initialize( output.i, buflength.i, Path.p-ascii, options.i )
mais cela fait pareil.
Merci
je voudrais piloter la synthèse vocale Espeak à partir de sa DLL et non par SAPI.
J'arrive à dialoguer avec la DLL grâce à des CallFunction, mais dès que je veux intègrer ces même CallFunction dans des procédures cela plante...
Code : Tout sélectionner
;typedef enum { AUDIO_OUTPUT_PLAYBACK, .. } espeak_AUDIO_OUTPUT;
; int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options);
Global hESpeak, R, Path$
Path$ = GetCurrentDirectory()
Procedure Aff()
R = CallFunction( hESpeak, "espeak_Initialize", 0, 0, @PAth$, 0 )
Debug R
EndProcedure
hESpeak = OpenLibrary( #PB_Any, "Espeak.dll" )
If hESpeak
R = CallFunction( hESpeak, "espeak_Initialize", 0, 0, @Path$, 0 )
EndIf
Debug R
;Aff()
Par contre, si j'appelle la fonction Aff(), j'ai une erreur "invalide memory access..."
Je suppose que les format des paramètres ne doivent pas être correct et que la pile pourrait être trop dépiler/enpiler ...
mais je ne sais pas où !
Quelqu'un aurait une idée ?
J'ai essayer en déclarant des prototype tel que :
Prototype.i Espeak_Initialize( output.i, buflength.i, Path.p-ascii, options.i )
mais cela fait pareil.
Merci