PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD16] AutomationEvénement et sapi.SPVOICE
[WD16] AutomationEvénement et sapi.SPVOICE
Débuté par Marc, 06 nov. 2011 00:12 - 3 réponses
Posté le 06 novembre 2011 - 00:12
Bonjour,

Mon application utilise un objet automation "SAPI.SPVOICE" que je réussi à utiliser mais lorsque je tente de gérer les évennements associés (word par exemple), l'évennement se branche mais impossible de récupérer les paramètres transmis.
Message d'erreur windev à l'exécution de la procédure évennements (PROC_word dans mon exemple): Type OLE non géré par le WLangage.
(ou "Un élément de type 'vide' ne peut pas être converti" selon le contexte)

Quelqu'un a t'il rencontré ce problème?
Comment récupérer les paramètres transmis par un évennement sapi.SPVOICE géré via AutomationEvénement?

En quelques lignes, mon code est :

objVoice est un objet Automation dynamique
objVoice = allouer un objet Automation("sapi.SPVOICE")
AutomationEvénement("PROC_Word",objVoice,"Word")

...

objVoice>>GetVoices("Name=Virginie_Dri40_16kHz")
objVoice>>rate = POT_vitesse_lecture
objVoice>>volume = POT_volume
objVoice>>Speak("Ceci est un test",1)

...

// SpVoice.Word(
// StreamNumber As Long,
// StreamPosition As Variant,
// CharacterPosition As Long,
// Length As Long
// )

PROC_Word(StreamNumber,StreamPosition,CharacterPosition,longueur)

varStreamPosition est un Variant = StreamPosition
VariantConvertit(varStreamPosition, wlEntier)

Trace(StreamNumber,varStreamPosition,CharacterPosition,longueur)

Merci pour votre aide

Marc
Posté le 08 novembre 2011 - 11:35
Bonjour,

Je reformule ma question autrement :
Quelqu'un a t'il déjà intégré à une application Windev des fonctions de synthèse vocale ? L'objectif est de faire lire un texte et de pouvoir mettre en surbrillance les mots de ce texte au fur et à mesure de la lecture.
Merci pour votre aide

Marc
Posté le 08 novembre 2011 - 16:25
Bonjour,

J'ai un code qui marche très bien.
Ca te créer un fichier wav.
Mais tu peux rediriger le stream pour le lire directement.

EXTERNE "SpeechAudioFormatType.wl"// Déclaration des constantes des formats de fichier sonore supportés (supported stream formats)

Procedure __TexteVersWav(sTexteEnregistrer, sFichierWav, nFormat=SAFTCCITT_ALaw_8kHzMono)

// *******************************************************************************************
// les formats supportés sont u-Law formats et A-Law formats par la téléphonie
// ici nous prenons le format A-Law 8kHz mono
// *******************************************************************************************

objFileStream est un objet automation dynamique
objVoice est un objet automation dynamique

objFileStream = allouer un objet OLE("SAPI.SpFileStream")
objVoice = allouer un objet OLE("SAPI.SPVOICE")

QUAND EXCEPTION DANS
objFileStream>>Format>>Type = nFormat
objFileStream>>Open(sFichierWav, 3, OLEFaux)//SSFMCreateForWrite = 3 -> SSFMCreateForWrite : Creates file even if file exists and so destroys or overwrites the existing file.
objVoice>>AudioOutputStream = objFileStream
//objVoice>>GetVoices("Name=ScanSoft Virginie_Dri40_16kHz")>>Item(0)
//objVoice>>rate = nRate
objVoice>>Speak(sTexteEnregistrer)
objFileStream>>Close()

Libérer objFileStream
Libérer objVoice
FAIRE
Libérer objFileStream
Libérer objVoice
FIN
Posté le 09 novembre 2011 - 10:58
Merci pour ta réponse Chris.
Très cordialement,

Marc