Synchro entre texte écrit et texte dit (playsound et tkinter
Résoluyg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Quand j'exécute le script suivant, avant de me donner la fenêtre Tk il me donne le son "Hello les gars" et ensuite montrer la fenetre tk.
Et pour de plus long scripts c'est gênant puisqu'on entend différentes lignes de son avant l'apparition de la fenêtre.
Je fais peut être une erreur, le "import playsound" est-il mal placé.
Merçi si vous pouvez m'aider.
Pierre
from tkinter import *
root=Tk()
from gtts import gTTS
def makeMP3(words,language="fr"):
import playsound
tts = gTTS(words, lang=language)
tts.save("tmp.mp3")
playsound.playsound("tmp.mp3")
makeMP3("Hello les gars")
root.mainloop()
6 réponses
Le fil porte sur un script Python combinant tkinter et gTTS/playsound où l’audio se déclenche avant l’apparition de la fenêtre Tk, rendant l’exécution confuse et bloquant l’affichage de l’interface. Des réponses suggèrent que le problème vient du fait que mainloop() bloqué empêche l’interface de s’afficher avant les sons, et proposent d’isoler l’audio depuis un bouton ou d’exécuter le script audio après l’ouverture. Ainsi, la solution consiste à déclencher l’audio après l’ouverture de la fenêtre, via une action utilisateur (par exemple un bouton), afin d’éviter que le mainloop ne soit bloqué. D'autres échanges recommandent de tester d’abord un exemple simple pour comprendre les principes de Tkinter avant d’ajouter des éléments, afin d’éviter les erreurs d’organisation entre l’interface et les processus audio.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
as-tu essayéplaysound.playsound("tmp.mp3", False)?
https://fr.acervolima.com/jouer-du-son-en-python/ -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
quand je teste ceci, je vois clairement l'effet dewait_visibility()
. toi pas (suivant que tu le supprimes ou pas)?import time import tkinter root=tkinter.Tk() print("invisible") root.wait_visibility() print("visible") time.sleep(5) print("5 secs plus tard") root.mainloop() -
-
Voila, une "fausse" IA sans prétention c'est pour amuser les gamins, j'ai installé les modules nécessaires dans mon Xubuntu 20.04 LTS
<code python>
from tkinter import *
from gtts import gTTS
from playsound import playsound
from googlesearch import search
def makeMP3(words,language="fr"):
tts = gTTS(words, lang=language)
tts.save("tmp.mp3")
playsound("tmp.mp3")
def mef(): #rechercher un mot sur google - trouve - et mettre url dans un fichier text.txt
labelsuite=Entry(fen)
labelsuite.grid(column=2, row=7)
suite=labelsuite.get()
label5=Label(fen,text= "je cherche : "+str(suite))
label5.grid(column=2,row=9)
for j in search("https://fr.wikipedia.org/wiki/"+str(suite)): #y a un probleme car il n'écrit pas "suite"
file=open("text.txt",'at')
file.write(j)
file.write('\n')
file.close()
def getEntry():
res = prenom.get()
label2= Label(fen, text="Bonjour " + str(res) + ", contente de notre connexion")
label2.grid(column=2,row=5)
makeMP3("Bonjour " + str(res) + ", contente de notre connexion") # il n y a que cette partie qu'elle dit après
label3= Label(fen, text="Maintenant, " +str(res)+", nous allons rechercher un mot sur internet")
label3.grid(column=2,row=6)
makeMP3("Maintenant" +str(res)+", quel mot veux tu rechercher ?")
fen = Tk()
fen.geometry("1000x600")
from gtts import gTTS
import os
fen.title("Intelligence artificielle - Test")
label1=Label(fen, text='**** j u l I A ****', bg="yellow", relief=GROOVE)
label1.grid(column=0,row=3)
makeMP3("Bonjour je suis une IA appelée Julia")
icone = PhotoImage(file='IA2.png')
faire2= Label(fen, image=icone)
faire2.grid(row=4, column=0)
faire3 = Label(fen, text="prog en Python")
faire3.grid()
faire4 = Label(fen, text="P.DUFLOS")
faire4.grid()
makeMP3("Humain, comment t'appelles tu ?")
label1= Label(fen, text= "Humain, comment t'appelles tu ?")
label1.grid()
prenom=Entry(fen)
prenom.grid()
bouton=Button(fen, text="ok",command = getEntry)
bouton.grid()
makeMP3("Nous allons chercher des mots sur Wikipedia et mémoriser les url trouvées")
bouton=Button(fen, text="chercher : ", command=mef())
bouton.grid(column=2, row=8)
#suite à écrire
fen.mainloop()
</code> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Nouvelle version mais problemes de sons toujours pas résolus (tous les messages son sont dit avant l'ouverture de la fenetre tk donc ca ne ressemble plus à rien
#jeu 03 mar 2022 11:03:27 creation de la fenetre de travail+
from tkinter import *
from gtts import gTTS
from playsound import playsound
from googlesearch import search
res=""
suite=""
def makeMP3(words,language="fr"):
tts = gTTS(words, lang=language)
tts.save("tmp.mp3")
playsound("tmp.mp3")
def mef(): #rechercher un mot sur google - trouve - et mettre url dans un fichier
global suite
labelsuite=Entry(fen)
suite=labelsuite.get()
labelsuite.grid(column=2, row=7)
for j in search("https://fr.wikipedia.org/wiki/"+str(suite)):
file=open("text.txt",'at')
file.write(j)
file.write('\n')
file.close()
def getEntry():
global res
prenom=Entry(fen)
res=prenom.get()
prenom.grid()
label2=Label(fen,text="Bonjour "+ res +" contente de notre connexion")
makeMP3("Bonjour " + res + "contente de notre connexion")
label2.grid(column=2,row=5)
label3=Label(fen, text="Maintenant, " +str(res)+", nous allons rechercher un mot sur internet")
makeMP3("Nous allons chercher des mots sur Wikipedia et mémoriser les url trouvées")
label3.grid(column=2,row=6)
fen = Tk()
fen.geometry("1000x800")
from gtts import gTTS
#fen.wait_visibility()
fen.title("Intelligence artificielle - Test")
label1=Label(fen, text='**** J U L I A ****', bg="yellow", relief=GROOVE,commande=makeMP3("Bonjour je suis une IA appelée Julia"))
label1.grid(column=0,row=3)
icone = PhotoImage(file='IA2.png')
faire2= Label(fen, image=icone)
faire2.grid(row=4, column=0)
faire3 = Label(fen, text="prog en Python")
faire3.grid()
faire4 = Label(fen, text="P.DUFLOS")
faire4.grid()
#makeMP3("Humain, comment t'appelles tu ?")
label1= Label(fen, text= "Humain, comment t'appelles tu ?", commande=makeMP3("Humain, comment t'appelles tu ?"))
label1.grid()
prenom=Entry(fen)
prenom.grid()
bouton=Button(fen, text="ok",command = getEntry)
bouton.grid()
bouton=Button(fen, text="chercher : ")
makeMP3("Nous allons chercher des mots sur Wikipedia et mémoriser les url trouvées")
bouton.grid()
label5=Label(fen,text= "je cherche : "+ suite)
commande=mef
label5.grid(column=2,row=9)
fen.mainloop()-
-
quand tu partages du code, merci d'utiliser les balises comme expliqué en détails ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
-
-
-