GttS Wait Until words is complete Python

Question:

I am using gtts to read words from a list and say them one by one. The current problem I am facing is that when I play the words one by one in the list they start at the same time.
Here is the reproduced result:

def speak(text,language="en",accent="com"):
    
    mp3_fp = BytesIO()
    phrase = gTTS(text=text,lang=language,tld=accent)
    phrase.write_to_fp(mp3_fp)
    pygame.init()
    pygame.mixer.init()
    pygame.mixer.music.load(mp3_fp,"mp3")
    pygame.mixer.music.play()

def play():
        data = list[boy, girl, small, big]
        for i in data:
            speak(i)

You can see that I try to play the words directly from gtts instead of having to save them.
If I saved them individually would there be any benefit that might help me?

Asked By: GCIreland

||

Answers:

You must wait until the word has been spoken respectively the sound has ended. e.g.:

pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
    pygame.time.delay(10)
    pygame.event.poll()
Answered By: Rabbid76