from tkinter import *
from gtts import gTTS
from playsound import playsound
import threading
import os
# Mapeamento de letras para sons coreanos
substituicoes = {
'a': '아', 'b': '브', 'c': '크', 'd': '드', 'e': '에', 'f': '프',
'g': '그', 'h': '흐', 'i': '이', 'j': '지', 'k': '크', 'l': '을',
'm': '므', 'n': '느', 'o': '오', 'p': '프', 'q': '쿠', 'r': '르',
's': '스', 't': '트', 'u': '우', 'v': '브', 'w': '우', 'x': '크스',
'y': '이', 'z': '즈'
}
def converter_para_coreano(nome):
nome = nome.strip().lower()
return ''.join(substituicoes.get(letra, letra) for letra in nome)
def falar_em_coreano(texto):
try:
tts = gTTS(text=texto, lang='ko')
tts.save("temp_fala.mp3")
playsound("temp_fala.mp3")
os.remove("temp_fala.mp3")
except Exception as e:
print("Erro ao reproduzir a fala:", e)
# Interface com Tkinter
root = Tk()
root.geometry("600x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Como seria seu nome em coreano?")
Label(root, text="Como seria seu nome\n em coreano?",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.15, rely=0.05)
Label(root, text="Nome:", font=("Arial", 18, "bold"),
bg="#103030", fg="#49e3e3").place(relx=0.2, rely=0.35)
Nome = StringVar()
entrada = Entry(root, textvariable=Nome, font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
entrada.place(relx=0.36, rely=0.36, relwidth=0.55)
entrada.focus()
resultado_label = Label(root, text="", font=("Arial", 14, "bold"),
bg="#cfe2f3", fg="black")
resultado_label.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.2)
def app():
nome = Nome.get()
if nome:
resultado = converter_para_coreano(nome)
resultado_label.config(text=resultado)
threading.Thread(target=lambda: falar_em_coreano(resultado)).start()
else:
resultado_label.config(text="Digite um nome.")
def limpar():
entrada.delete(0, END)
resultado_label.config(text="")
Button(root, text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app).place(relx=0.1, rely=0.5, relwidth=0.25, relheight=0.1)
Button(root, text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar).place(relx=0.4, rely=0.5, relwidth=0.25, relheight=0.1)
Button(root, text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy).place(relx=0.7, rely=0.5, relwidth=0.25, relheight=0.1)
root.mainloop()