GNT sans publicité, site mobile, fonctionnalitées exclusives...

Problème synthèse vocale avec Thread

Le
Darwin
Bonjour,

Dans mon appli, j'ai inséré une synthèse vocale. Le problème est que tant
que le programme annonce le message, aucun autre traitement ne peut se
faire.
Exemple : lors de l'ouverture d'une fiche client, le programme annonce le
nom du client et une fois qu'il a fini de parler, la fiche s'affiche
Pour faire en sorte que la fiche s'ouvre pendant que le programme parle,
j'ai décidé d'utiliser les threads.
Je fais donc :
ThreadExécute("ThreadMessage",threadNormal,"MsgVocal",CLIENTS.NomClient)

Le première fois où l'on ouvre une fiche, ça marche nickel, mais dès qu'on
ferme et qu'on veut ouvrir une autre fiche, le programme plante avec comme
message d'erreur : "L'objet automation 'sapi.SPVOICE' n'est pas installé sur
votre système."

Pour info, voici ma procédure "MsgVocal"
-
PROCEDURE MsgVocal(sMessage)
Voice est un objet OLE dynamique
Voice = allouer un objet OLE("sapi.SPVOICE")
Voice>>Speak(sMessage)
--

J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça ne
change rien.
Si quelqu'un a une idée, ça m'arrangerait bien.

Merci d'avance.
Lire les 3 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
patrice
Le #14341181
"Darwin" news:450ee676$0$25944$
Pour info, voici ma procédure "MsgVocal"
----------------------------------------------------
PROCEDURE MsgVocal(sMessage)
Voice est un objet OLE dynamique
Voice = allouer un objet OLE("sapi.SPVOICE")
Voice>>Speak(sMessage)
-----------------------------------------------------

J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça


ne
change rien.
Si quelqu'un a une idée, ça m'arrangerait bien.

Merci d'avance.




et en ajoutant un "libérer" à la fin ?
Darwin
Le #14340851
Salut, merci pour ta réponse.
Je viens de tester "Libérer Voice", mais rien de mieux.
Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te gêne
surtout pas.

"Darwin" 450ee676$0$25944$
Bonjour,

Dans mon appli, j'ai inséré une synthèse vocale. Le problème est que tant
que le programme annonce le message, aucun autre traitement ne peut se
faire.
Exemple : lors de l'ouverture d'une fiche client, le programme annonce le
nom du client et une fois qu'il a fini de parler, la fiche s'affiche
Pour faire en sorte que la fiche s'ouvre pendant que le programme parle,
j'ai décidé d'utiliser les threads.
Je fais donc :
ThreadExécute("ThreadMessage",threadNormal,"MsgVocal",CLIENTS.NomClient)

Le première fois où l'on ouvre une fiche, ça marche nickel, mais dès qu'on
ferme et qu'on veut ouvrir une autre fiche, le programme plante avec comme
message d'erreur : "L'objet automation 'sapi.SPVOICE' n'est pas installé
sur votre système."

Pour info, voici ma procédure "MsgVocal"
----------------------------------------------------
PROCEDURE MsgVocal(sMessage)
Voice est un objet OLE dynamique
Voice = allouer un objet OLE("sapi.SPVOICE")
Voice>>Speak(sMessage)
-----------------------------------------------------

J'ai essayé de mettre un "ThreadArrete" à la fin de la procédure, mais ça
ne change rien.
Si quelqu'un a une idée, ça m'arrangerait bien.

Merci d'avance.



patrice
Le #14340811
"Darwin" news:45102ade$0$27366$
Salut, merci pour ta réponse.
Je viens de tester "Libérer Voice", mais rien de mieux.
Merci quand même pour ta suggestion, et si tu as d'autres idées, ne te


gêne
surtout pas.




essaie peut être d'avoir un seul thread (jamais fermé) pour gérer ton objet
voice (et ainsi de l'allouer une sule fois)

pseudo code:

thread:
allouer voice
boucle sans fin
lecture_bloquante_prochain_message(msg)
jouer msg
finboucle
Publicité
Suivre les réponses
Poster une réponse
Anonyme