Synchro entre texte écrit et texte dit (playsound et tkinter

Résolu
pescadou9999 Messages postés 24 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
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()


Configuration: Linux / Firefox 97.0

6 réponses

  1. 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/
    0
    1. pescadou9999 Messages postés 24 Statut Membre
       
      Bonjour, merci de ta reponse
      il donne ceci : NotImplementedError: block=False cannot be used on this platform yet
      C'est à True par défaut
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > pescadou9999 Messages postés 24 Statut Membre
       
      peut-être en ajoutant
      root.wait_visibility()

      avant la ligne 11.
      0
    3. pescadou9999 Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      non malheureusement pas
      0
    4. pescadou9999 Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      "Le module magicsound remplace le module playsound, devenue obsolète depuis 2020."
      j"ai essayé mais ca ne change rien
      0
    5. pescadou9999 Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      et j'ai remarqué qu'il ne dit pas les messages qui sont dans une fonction DEF quoique ce soit la premiere chose qu'il fasse lors de l'appel à la fonction
      0
  2. 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 de
    wait_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()
    0
    1. pescadou9999 Messages postés 24 Statut Membre
       
      root.wait_visibility() n'a aucun effet sur mes sons
      0
    2. pescadou9999 Messages postés 24 Statut Membre
       
      invisible s'affiche
      visible s'affiche
      les deux simultanément avec la fenetre tk qui apparait
      5 secondes plus tard le message "5secondes plus tard 's'affiche" , la fen tk ne disparait pas
      Ca me semble tout à fait normal, root.wait_visibility() ne semble avoir aucun effet
      0
    3. pescadou9999 Messages postés 24 Statut Membre
       
      dans le wait_visibility(), il n'y a rien dans les parenthese ??
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > pescadou9999 Messages postés 24 Statut Membre
       
      rien entre parenthèses, en effet.
      quand je retire
      root.wait_visibility()
      , j'ai un tout autre comportement. toi pas?
      0
    5. pescadou9999 Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      simplement que avec la fenetre apparait tout de suite
      tandis que sans la fenetre apparait à la fin
      Il n'existe pas grand chose comme doc sur l'utilisation simultanée de tkinter et python
      merci
      0
  3. pescadou9999 Messages postés 24 Statut Membre
     
    merci je reviens dès que possible
    0
  4. pescadou9999 Messages postés 24 Statut Membre
     
    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>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pescadou9999 Messages postés 24 Statut Membre
     
    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()

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Tu n'as pas répondu au #10.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      La partie qui est correcte, c'est ce que tu fais pour le bouton "ok". regarde bien comment tu as défini
      command = getEntry
      .
      Le reste est largement incorrect.
      0
      1. pescadou9999 Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        whais y a des choses à corriger mais moi tant que le son n'est pas synchro (c'est le sujet de ce post) avec le texte dans la fenêtre ... C'est résolu.merci
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > pescadou9999 Messages postés 24 Statut Membre
         
        peux-tu marquer la discussion comme résolue?
        0
  7. pescadou9999 Messages postés 24 Statut Membre
     
    je ne vois pas ou indiquer ça
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      en cliquant sur
      ...
      en dessous de la question de départ.
      0