import * import ctypes,os from PIL
import ImageTk, Image
import tkinter.messagebox as tkMessageBox
import speech_recognition as sr
import pyttsx3
import threading as td from deep_translator
import GoogleTranslator from gtts import gTTS from pydub
import AudioSegment from pydub.playback
import play
# Initialize the recognizer r = sr.Recognizer()
main = Tk() main.title("Voiceprint Translator")
main.geometry("940x570") main.config(bg="#C7F8FF")
main.resizable(0,0) lt = ["English","Hindi","Tamil","Gujrati","Marathi"] v1 =
StringVar(main)
v1.set(lt[0]) v2 = StringVar(main)
v2.set(lt[1]) Label(main,text="Translate Language via Voice Commands",font=("",18,"bold"),bg="#C7F8FF",fg="black").place(x=240,y=20) flag=False can =
Canvas(main,width=400,height=450,bg="#17C3B2",relief="solid",bd=1,highlig
htthickness=0) can.place(x=30,y=80)
Label(main,text="Input Box
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=44,y=70)
can =
Canvas(main,width=400,height=450,bg="#17C3B2",relief="solid",bd=1,highlig
htthickness=0) can.place(x=490,y=80)
Label(main,text="Output Box
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=780,y=60)
txtbx =
Text(main,width=40,height=7,font=("",12,"bold"),relief="solid",bd=0,highlightt hickness=0)
txtbx.place(x=50,y=100) txtbx2 =
Text(main,width=40,height=7,font=("",12,"bold"),relief="solid",bd=0,highlightt hickness=0)
txtbx2.place(x=510,y=100)
def speak
(): global txtbx2 tx
= txtbx2
.get
("1.0",END)code = ["en","hi","ta","gu","mr"] language =
code[lt.index(v2.get())] myobj = gTTS(text=tx,
lang=language, slow=False) try:
os.remove("temp.mp3")
except: pass
myobj.save("temp.mp3") song =
AudioSegment.from_mp3("temp.mp3") play(song)
def translate():
global txtbx
,txtbx2 txtbx2
.delete
("1.0","end-1c") tx
= txtbx
.get
("1.0",END) code = ["en","hi","ta","gu","mr"] lang = code[lt.index(v2.get())] translated =
GoogleTranslator(source='auto', target=lang).translate(tx) txtbx2.insert("end1c",translated) def detect():
global flag,txtbx
while(1): if
flag==True:
print("breaked") break try:
with sr.Microphone() as source2:
r.adjust_for_ambient_noise(source2, duration=0.2) audio2 =
r.listen(source2)
MyText = r.recognize_google(audio2)
MyText = MyText.lower() txtbx.insert("end1c", MyText)
except sr.RequestError as e:
tkMessageBox.showinfo("warning","Could not request results; {0}".format(e))
break
except sr.UnknownValueError:
tkMessageBox.showinfo("warning","unknown error occured")
break def start(): global flag,b1 flag=False b1["text"]= "Stop Speaking"
b1["command"] = stop td.Thread(target=detect).start()
def stop():
global flag,b1 b1["text"] = "Give
Voice Input" b1["command"] = start
flag=True
b1 = Button(main,text="Give Voice
Input",font=("",12,"bold"),width=35,height=1,bg="#FEF9EF",fg="black",comm
and=start,relief="solid",bd=4,highlightthickness=0) b1.place(x=50,y=250)
Button(main,text="Speak
Text",font=("",12,"bold"),width=35,height=1,bg="#FEF9EF",fg="black",comma
nd=speak,relief="solid",bd=4,highlightthickness=0).place(x=510,y=250)
Button(main,text="Translate",font=("",15,"bold"),width=71,height=3,bg="#FE
F9EF",fg="black",command=translate,relief="solid",bd=3,highlightthickness=0
).place(x=30,y=446)
Label(main,text="Select Language
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=50,y=300)
Label(main,text="Select Language
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=510,y=300)
o1 = OptionMenu(main,v1,*lt)
o1.config(font=("",12,"bold"),width=36,bg="#FEF9EF",fg="black",relief="solid"
,bd=1,highlightthickness=0) o1.place(x=50,y=340) o2 = OptionMenu(main,v2,*lt)
o2.config(font=("",12,"bold"),width=36,bg="#FEF9EF",fg="black",relief="solid"
,bd=1,highlightthickness=0) o2.place(x=510,y=340)
main.mainloop()
aW1wb3J0ICogaW1wb3J0IGN0eXBlcyxvcyBmcm9tIFBJTCAKaW1wb3J0IEltYWdlVGssIEltYWdlIAppbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveCAKaW1wb3J0IHNwZWVjaF9yZWNvZ25pdGlvbiBhcyBzciAKaW1wb3J0IHB5dHRzeDMgCmltcG9ydCB0aHJlYWRpbmcgYXMgdGQgZnJvbSBkZWVwX3RyYW5zbGF0b3IgCmltcG9ydCBHb29nbGVUcmFuc2xhdG9yIGZyb20gZ3R0cyBpbXBvcnQgZ1RUUyBmcm9tIHB5ZHViCmltcG9ydCBBdWRpb1NlZ21lbnQgZnJvbSBweWR1Yi5wbGF5YmFjayAKaW1wb3J0IHBsYXkKIyBJbml0aWFsaXplIHRoZSByZWNvZ25pemVyIHIgPSBzci5SZWNvZ25pemVyKCkKbWFpbiA9IFRrKCkgbWFpbi50aXRsZSgiVm9pY2VwcmludCBUcmFuc2xhdG9yIikKbWFpbi5nZW9tZXRyeSgiOTQweDU3MCIpIG1haW4uY29uZmlnKGJnPSIjQzdGOEZGIikKbWFpbi5yZXNpemFibGUoMCwwKSBsdCA9IFsiRW5nbGlzaCIsIkhpbmRpIiwiVGFtaWwiLCJHdWpyYXRpIiwiTWFyYXRoaSJdIHYxID0KU3RyaW5nVmFyKG1haW4pCnYxLnNldChsdFswXSkgdjIgPSBTdHJpbmdWYXIobWFpbikKdjIuc2V0KGx0WzFdKSBMYWJlbChtYWluLHRleHQ9IlRyYW5zbGF0ZSBMYW5ndWFnZSB2aWEgVm9pY2UgQ29tbWFuZHMiLGZvbnQ9KCIiLDE4LCJib2xkIiksYmc9IiNDN0Y4RkYiLGZnPSJibGFjayIpLnBsYWNlKHg9MjQwLHk9MjApIGZsYWc9RmFsc2UgY2FuID0KQ2FudmFzKG1haW4sd2lkdGg9NDAwLGhlaWdodD00NTAsYmc9IiMxN0MzQjIiLHJlbGllZj0ic29saWQiLGJkPTEsaGlnaGxpZwpodHRoaWNrbmVzcz0wKSBjYW4ucGxhY2UoeD0zMCx5PTgwKQpMYWJlbChtYWluLHRleHQ9IklucHV0IEJveAo6Iixmb250PSgiIiwxMiwiYm9sZCIpLGJnPSIjMTdDM0IyIixmZz0iYmxhY2siKS5wbGFjZSh4PTQ0LHk9NzApCmNhbiA9CkNhbnZhcyhtYWluLHdpZHRoPTQwMCxoZWlnaHQ9NDUwLGJnPSIjMTdDM0IyIixyZWxpZWY9InNvbGlkIixiZD0xLGhpZ2hsaWcKaHR0aGlja25lc3M9MCkgY2FuLnBsYWNlKHg9NDkwLHk9ODApCkxhYmVsKG1haW4sdGV4dD0iT3V0cHV0IEJveAo6Iixmb250PSgiIiwxMiwiYm9sZCIpLGJnPSIjMTdDM0IyIixmZz0iYmxhY2siKS5wbGFjZSh4PTc4MCx5PTYwKQp0eHRieCA9ClRleHQobWFpbix3aWR0aD00MCxoZWlnaHQ9Nyxmb250PSgiIiwxMiwiYm9sZCIpLHJlbGllZj0ic29saWQiLGJkPTAsaGlnaGxpZ2h0dCBoaWNrbmVzcz0wKQp0eHRieC5wbGFjZSh4PTUwLHk9MTAwKSB0eHRieDIgPQpUZXh0KG1haW4sd2lkdGg9NDAsaGVpZ2h0PTcsZm9udD0oIiIsMTIsImJvbGQiKSxyZWxpZWY9InNvbGlkIixiZD0wLGhpZ2hsaWdodHQgaGlja25lc3M9MCkKdHh0YngyLnBsYWNlKHg9NTEwLHk9MTAwKQpkZWYgc3BlYWsoKTogZ2xvYmFsIHR4dGJ4MiB0eCA9IHR4dGJ4Mi5nZXQoIjEuMCIsRU5EKQpjb2RlID0gWyJlbiIsImhpIiwidGEiLCJndSIsIm1yIl0gbGFuZ3VhZ2UgPQpjb2RlW2x0LmluZGV4KHYyLmdldCgpKV0gbXlvYmogPSBnVFRTKHRleHQ9dHgsCmxhbmc9bGFuZ3VhZ2UsIHNsb3c9RmFsc2UpIHRyeToKb3MucmVtb3ZlKCJ0ZW1wLm1wMyIpCmV4Y2VwdDogcGFzcwpteW9iai5zYXZlKCJ0ZW1wLm1wMyIpIHNvbmcgPQpBdWRpb1NlZ21lbnQuZnJvbV9tcDMoInRlbXAubXAzIikgcGxheShzb25nKQpkZWYgdHJhbnNsYXRlKCk6Cmdsb2JhbCB0eHRieCx0eHRieDIgdHh0YngyLmRlbGV0ZSgiMS4wIiwiZW5kLTFjIikgdHggPSB0eHRieC5nZXQoIjEuMCIsRU5EKQpjb2RlID0gWyJlbiIsImhpIiwidGEiLCJndSIsIm1yIl0gbGFuZyA9IGNvZGVbbHQuaW5kZXgodjIuZ2V0KCkpXSB0cmFuc2xhdGVkID0KR29vZ2xlVHJhbnNsYXRvcihzb3VyY2U9J2F1dG8nLCB0YXJnZXQ9bGFuZykudHJhbnNsYXRlKHR4KSB0eHRieDIuaW5zZXJ0KCJlbmQxYyIsdHJhbnNsYXRlZCkgZGVmIGRldGVjdCgpOgpnbG9iYWwgZmxhZyx0eHRieAp3aGlsZSgxKTogaWYKZmxhZz09VHJ1ZToKcHJpbnQoImJyZWFrZWQiKSBicmVhayB0cnk6CndpdGggc3IuTWljcm9waG9uZSgpIGFzIHNvdXJjZTI6CnIuYWRqdXN0X2Zvcl9hbWJpZW50X25vaXNlKHNvdXJjZTIsIGR1cmF0aW9uPTAuMikgYXVkaW8yID0Kci5saXN0ZW4oc291cmNlMikKTXlUZXh0ID0gci5yZWNvZ25pemVfZ29vZ2xlKGF1ZGlvMikKTXlUZXh0ID0gTXlUZXh0Lmxvd2VyKCkgdHh0YnguaW5zZXJ0KCJlbmQxYyIsIE15VGV4dCkKZXhjZXB0IHNyLlJlcXVlc3RFcnJvciBhcyBlOgp0a01lc3NhZ2VCb3guc2hvd2luZm8oIndhcm5pbmciLCJDb3VsZCBub3QgcmVxdWVzdCByZXN1bHRzOyB7MH0iLmZvcm1hdChlKSkKYnJlYWsKZXhjZXB0IHNyLlVua25vd25WYWx1ZUVycm9yOgp0a01lc3NhZ2VCb3guc2hvd2luZm8oIndhcm5pbmciLCJ1bmtub3duIGVycm9yIG9jY3VyZWQiKQpicmVhayBkZWYgc3RhcnQoKTogZ2xvYmFsIGZsYWcsYjEgZmxhZz1GYWxzZSBiMVsidGV4dCJdPSAiU3RvcCBTcGVha2luZyIKYjFbImNvbW1hbmQiXSA9IHN0b3AgdGQuVGhyZWFkKHRhcmdldD1kZXRlY3QpLnN0YXJ0KCkKZGVmIHN0b3AoKToKZ2xvYmFsIGZsYWcsYjEgYjFbInRleHQiXSA9ICJHaXZlClZvaWNlIElucHV0IiBiMVsiY29tbWFuZCJdID0gc3RhcnQKZmxhZz1UcnVlCmIxID0gQnV0dG9uKG1haW4sdGV4dD0iR2l2ZSBWb2ljZQpJbnB1dCIsZm9udD0oIiIsMTIsImJvbGQiKSx3aWR0aD0zNSxoZWlnaHQ9MSxiZz0iI0ZFRjlFRiIsZmc9ImJsYWNrIixjb21tCmFuZD1zdGFydCxyZWxpZWY9InNvbGlkIixiZD00LGhpZ2hsaWdodHRoaWNrbmVzcz0wKSBiMS5wbGFjZSh4PTUwLHk9MjUwKQpCdXR0b24obWFpbix0ZXh0PSJTcGVhawpUZXh0Iixmb250PSgiIiwxMiwiYm9sZCIpLHdpZHRoPTM1LGhlaWdodD0xLGJnPSIjRkVGOUVGIixmZz0iYmxhY2siLGNvbW1hCm5kPXNwZWFrLHJlbGllZj0ic29saWQiLGJkPTQsaGlnaGxpZ2h0dGhpY2tuZXNzPTApLnBsYWNlKHg9NTEwLHk9MjUwKQpCdXR0b24obWFpbix0ZXh0PSJUcmFuc2xhdGUiLGZvbnQ9KCIiLDE1LCJib2xkIiksd2lkdGg9NzEsaGVpZ2h0PTMsYmc9IiNGRQpGOUVGIixmZz0iYmxhY2siLGNvbW1hbmQ9dHJhbnNsYXRlLHJlbGllZj0ic29saWQiLGJkPTMsaGlnaGxpZ2h0dGhpY2tuZXNzPTAKKS5wbGFjZSh4PTMwLHk9NDQ2KQpMYWJlbChtYWluLHRleHQ9IlNlbGVjdCBMYW5ndWFnZQo6Iixmb250PSgiIiwxMiwiYm9sZCIpLGJnPSIjMTdDM0IyIixmZz0iYmxhY2siKS5wbGFjZSh4PTUwLHk9MzAwKQpMYWJlbChtYWluLHRleHQ9IlNlbGVjdCBMYW5ndWFnZQo6Iixmb250PSgiIiwxMiwiYm9sZCIpLGJnPSIjMTdDM0IyIixmZz0iYmxhY2siKS5wbGFjZSh4PTUxMCx5PTMwMCkKbzEgPSBPcHRpb25NZW51KG1haW4sdjEsKmx0KQpvMS5jb25maWcoZm9udD0oIiIsMTIsImJvbGQiKSx3aWR0aD0zNixiZz0iI0ZFRjlFRiIsZmc9ImJsYWNrIixyZWxpZWY9InNvbGlkIgosYmQ9MSxoaWdobGlnaHR0aGlja25lc3M9MCkgbzEucGxhY2UoeD01MCx5PTM0MCkgbzIgPSBPcHRpb25NZW51KG1haW4sdjIsKmx0KQpvMi5jb25maWcoZm9udD0oIiIsMTIsImJvbGQiKSx3aWR0aD0zNixiZz0iI0ZFRjlFRiIsZmc9ImJsYWNrIixyZWxpZWY9InNvbGlkIgosYmQ9MSxoaWdobGlnaHR0aGlja25lc3M9MCkgbzIucGxhY2UoeD01MTAseT0zNDApCm1haW4ubWFpbmxvb3AoKQ==
import * import ctypes,os from PIL
import ImageTk, Image
import tkinter.messagebox as tkMessageBox
import speech_recognition as sr
import pyttsx3
import threading as td from deep_translator
import GoogleTranslator from gtts import gTTS from pydub
import AudioSegment from pydub.playback
import play
# Initialize the recognizer r = sr.Recognizer()
main = Tk() main.title("Voiceprint Translator")
main.geometry("940x570") main.config(bg="#C7F8FF")
main.resizable(0,0) lt = ["English","Hindi","Tamil","Gujrati","Marathi"] v1 =
StringVar(main)
v1.set(lt[0]) v2 = StringVar(main)
v2.set(lt[1]) Label(main,text="Translate Language via Voice Commands",font=("",18,"bold"),bg="#C7F8FF",fg="black").place(x=240,y=20) flag=False can =
Canvas(main,width=400,height=450,bg="#17C3B2",relief="solid",bd=1,highlig
htthickness=0) can.place(x=30,y=80)
Label(main,text="Input Box
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=44,y=70)
can =
Canvas(main,width=400,height=450,bg="#17C3B2",relief="solid",bd=1,highlig
htthickness=0) can.place(x=490,y=80)
Label(main,text="Output Box
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=780,y=60)
txtbx =
Text(main,width=40,height=7,font=("",12,"bold"),relief="solid",bd=0,highlightt hickness=0)
txtbx.place(x=50,y=100) txtbx2 =
Text(main,width=40,height=7,font=("",12,"bold"),relief="solid",bd=0,highlightt hickness=0)
txtbx2.place(x=510,y=100)
def speak(): global txtbx2 tx = txtbx2.get("1.0",END)
code = ["en","hi","ta","gu","mr"] language =
code[lt.index(v2.get())] myobj = gTTS(text=tx,
lang=language, slow=False) try:
os.remove("temp.mp3")
except: pass
myobj.save("temp.mp3") song =
AudioSegment.from_mp3("temp.mp3") play(song)
def translate():
global txtbx,txtbx2 txtbx2.delete("1.0","end-1c") tx = txtbx.get("1.0",END)
code = ["en","hi","ta","gu","mr"] lang = code[lt.index(v2.get())] translated =
GoogleTranslator(source='auto', target=lang).translate(tx) txtbx2.insert("end1c",translated) def detect():
global flag,txtbx
while(1): if
flag==True:
print("breaked") break try:
with sr.Microphone() as source2:
r.adjust_for_ambient_noise(source2, duration=0.2) audio2 =
r.listen(source2)
MyText = r.recognize_google(audio2)
MyText = MyText.lower() txtbx.insert("end1c", MyText)
except sr.RequestError as e:
tkMessageBox.showinfo("warning","Could not request results; {0}".format(e))
break
except sr.UnknownValueError:
tkMessageBox.showinfo("warning","unknown error occured")
break def start(): global flag,b1 flag=False b1["text"]= "Stop Speaking"
b1["command"] = stop td.Thread(target=detect).start()
def stop():
global flag,b1 b1["text"] = "Give
Voice Input" b1["command"] = start
flag=True
b1 = Button(main,text="Give Voice
Input",font=("",12,"bold"),width=35,height=1,bg="#FEF9EF",fg="black",comm
and=start,relief="solid",bd=4,highlightthickness=0) b1.place(x=50,y=250)
Button(main,text="Speak
Text",font=("",12,"bold"),width=35,height=1,bg="#FEF9EF",fg="black",comma
nd=speak,relief="solid",bd=4,highlightthickness=0).place(x=510,y=250)
Button(main,text="Translate",font=("",15,"bold"),width=71,height=3,bg="#FE
F9EF",fg="black",command=translate,relief="solid",bd=3,highlightthickness=0
).place(x=30,y=446)
Label(main,text="Select Language
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=50,y=300)
Label(main,text="Select Language
:",font=("",12,"bold"),bg="#17C3B2",fg="black").place(x=510,y=300)
o1 = OptionMenu(main,v1,*lt)
o1.config(font=("",12,"bold"),width=36,bg="#FEF9EF",fg="black",relief="solid"
,bd=1,highlightthickness=0) o1.place(x=50,y=340) o2 = OptionMenu(main,v2,*lt)
o2.config(font=("",12,"bold"),width=36,bg="#FEF9EF",fg="black",relief="solid"
,bd=1,highlightthickness=0) o2.place(x=510,y=340)
main.mainloop()