System.Speech et mp3

cs_DAN1 Messages postés 78 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 19 juillet 2017 - 24 juin 2017 à 13:58
cs_DAN1 Messages postés 78 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 19 juillet 2017 - 25 juin 2017 à 21:14
Bonjour à tous.
J'ai programmé un petit logiciel de synthèse vocale avec
System.Speech.
Tout fonctionne parfaitement bien et je l'utilise maintenant depuis très longtemps.
J'ai un bouton stop, pause, reprise.
Par contre je ne sais pas comment je pourrais détecter la faim de mon texte et j'aimerais avoir votre avis à ce sujet.

Une deuxième question serait pour moi de savoir comment au lieu d'avoir le son en sortie de mes haut-parleurs transformés celui-ci au format MP3 pour l'enregistrer ensuite.
Auriez-vous une solution à me proposer ?
D'avance merci de votre aide

4 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
25 juin 2017 à 17:04
Bonjour
Un peu d'humour
Tu dis : "Par contre je ne sais pas comment je pourrais détecter la faim de mon texte

Je te réponds : Passe devant un restaurant ! Si ton texte te dit de t'arrêter c'est bon !

Pour la seconde question impossible de le faire en VB Net de façon simple : il faut passer par des logiciels touts faits ( freewares ou payants)
0
cs_DAN1 Messages postés 78 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 19 juillet 2017 3
25 juin 2017 à 17:47
Salut VB 95.
En synthèse vocale lorsque je lui fournis un texte il me le lit et s'arrête à la faim je n'ai pas la possibilité de détecter par programme cet fin de lecture et je suis donc obligé de cliquer sur la touche stoppe avant de pouvoir lire un nouveau texte que j'ai copié préalablement dans mon presse-papier.
Si j'étais en mesure de détecter cet fin de lecture je pourrais donc afficher le bouton lecture pour lire le nouveau contenu de mon presse-papier je ne sais pas si je suis assez précis.
Pour la transformation MP3 il devrait tout de même y avoir possibilité de récupérer une partie de audaCity pour l'insérer dans une application VB mais je ne sais vraiment pas comment procéder.
D'avance merci tout de même d'avoir prie connaissance de ma question.
A+.
Dan
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 25 juin 2017 à 18:50
bonjour
Pour ta seconde question avec Audacity il faut
- à partir de VB net démarrer Audacity dans un nouveau processus
- ensuite faire dialoguer entre eux les 2 processus ( celui de Audacity et celui de ton projet VB )
Ce n'est pas de la tarte car j'essaye de faire quelque chose de similaire avec un programme d'échecs ( VB gère le plateau et le joueur humain et le joueur ordinateur est géré par un moteur UCI - ( Universal Chess Interface) et je galère grave )

Pour voir pour détecter par programme la fin d'un texte regarde là : https://openclassrooms.com/courses/faites-parler-vos-applications-en-net et en particulier ceci : Connaître l'état de notre voix de synthèse
Quand tu déclenches la lecture d'un texte tu testes toutes les secondes l'état de la voix de synthèse avec un Timer .
Tant que cette voix est sur "Speaking" soit l'état 1 elle parle
Si l'état est différent c'est que le texte est fini ( on ne se sert pas de la Pause)
Si c'est fini le programme peut déclencher l'importation d'un autre fichier Texte et lancer sa lecture

Il y a même plus fort
https://msdn.microsoft.com/fr-fr/library/system.speech.synthesis.speechsynthesizer(v=vs.110).aspx

-Les méthodes SetOutPutXXXXXXXXXXx envoie le son sur les HP ou dans un fichier au format désiré
- l'évènement SpeakCompleted indique que le texte a té entièrement lu par le synthétiseur vocal ( donc plus besoin de lire l'état de la voix)
Attention l'exemple joint est en mode Console et en C # ( des traducteurs existent)

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
0
cs_DAN1 Messages postés 78 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 19 juillet 2017 3
25 juin 2017 à 21:14
Bonsoir.
Programmé un jeu d'échecs me paraît hautement plus difficile que ce que je veux faire.
Compliment j'essaie d'imaginer tous les problèmes et la recherche des coups d'avance.
L'idée du timer est une bonne idée mais plutôt compliquée j'ai trouvé plus simple :

Dim WithEvents lamachineaparler As New Speech.Synthesis.SpeechSynthesizer


et pour finir et détecter la faim de ma lecture
Private Sub lamachineaparler_StateChanged(ByVal sender As Object, ByVal e As System.Speech.Synthesis.StateChangedEventArgs) _
Handles lamachineaparler.StateChanged
If e.State = Synthesis.SynthesizerState.Ready Then
' MessageBox.Show("fin de lecture")
LECC = 0
LIRE.Text = "LIRE"

lamachineaparler.SpeakAsyncCancelAll() ' Et pour stopper la lecture

PAUSE.Visible = False

End If
End Sub

cela marche très bien.
Par contre je vais regarder comment on peut intégrer par programme audacity dans visuelle basique.
Merci encore.
Peut-être que quelqu'un pourra me renseigner pour ma deuxième question on ne sait jamais.
A+.
Dan


0
Rejoignez-nous