#!/usr/bin/env python
import PySimpleGUI as sg
from gtts import gTTS
from pygame import mixer
import time
import os

'''
    Simple demonstration of using Google Text to Speech
    Get a multi-line string
    Convert to speech
    Play back the speech
    
    Note that there are 2 temp files created. The program tries to delete them but will fail on one of them
'''

layout = [[sg.Text('What would you like me to say?')],
          [sg.MLine(size=(60,10), enter_submits=True)],
          [sg.Button('Speak', bind_return_key=True), sg.Exit()]]

window = sg.Window('Google Text to Speech', layout)

i = 0
mixer.init()
while True:
    event, values = window.read()
    if event in (None, 'Exit'):
        break
    # Get the text and convert to mp3 file
    tts = gTTS(text=values[0], lang='en',slow=False)
    tts.save('speech{}.mp3'.format(i%2))
    # playback the speech
    mixer.music.load('speech{}.mp3'.format(i%2))
    mixer.music.play()
    # wait for playback to end
    while mixer.music.get_busy():
        time.sleep(.1)
    mixer.stop()
    i += 1

window.close()

# try to remove the temp files. You'll likely be left with 1 to clean up
try:
    os.remove('speech0.mp3')
except:
    pass
try:
    os.remove('speech1.mp3')
except:
    pass