OVH Cloud OVH Cloud

Lecture synchrone

12 réponses
Avatar
TouTi
Bonsoir à tous

Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la lecture
d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode asynchrone
est alors très utile

Pour la lecture du wav, j'utilise l'API sndPlaySound

Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech objet
library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub

* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "\son\annonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner

* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien mais
le programme se fige durant la lecture du wav

Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??

Merci


Guy

2 réponses

1 2
Avatar
Jean-marc
"Jacques93" a écrit dans le message de news:
%23a7H$

Donc si je comprends, on lance la lecture du "vrai" son en ASYNC
puis on fait un while avec le SND_NOSTOP juste dans le but d'attendre
la fin du "vrai son" (je suppose que le .wav à utiliser dans la boucle
while est juste la pour attendre la fin du "vrai", il doit être vide ?)
Puis on lance le parle "blah blah ..."

C'est bien l'idée?




Oui, tout à fait. Le fichier utilisé dans la boucle n'a même pas besoin
d'exister (à condition de mettre également SND_NODEFAULT, sinon il y a
le son par défaut qui est joué, en l'occurrence le beep d'erreur). Si il
est vraiment vide (cad 0 octet), le format de fichier est invalide, et on
se retrouve dans le cas précédent : il faut mettre SND_NODEFAULT.



C'est bien ce que je pensais et merci pour les explications
complémentaires.

Créer un fichier .wav silencieux étant ici superflu, autant qu'il n'existe
pas, mais ce n'est que mon avis ;-)



C'est sur!

Le seul inconvénient que je vois, est la nécessité du sleep entre le début
du "vrai" wav, et la boucle d'attente. Mais pas d'autre idée
pour l'instant.



A mon sens, ça ne gêne pas, ce niveau de "bidouille" est très
acceptable :-))

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
TouTi
Bonjour

J'ai essayé toutes vos solutions et j'ai employé différents composants pour
arriver au résultat. C'est un mix de timer, calcul de durée et d'une
collection...

Bonne continuation

--
Guy
1 2