This repository was archived by the owner on Nov 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
58 lines (50 loc) · 2.03 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from googletrans import Translator
import speech_recognition as sr
import pyttsx3
from googletrans import LANGCODES
class PyTranslator:
def __init__(self):
self.trans, self.voice = Translator(), pyttsx3.init()
self.rec, self.mic = sr.Recognizer(), sr.Microphone()
def speak(self, text):
self.voice.say(text)
self.voice.runAndWait()
def translate(self, text):
translated = self.trans.translate(text)
print(f"[+] Translation: {translated.text}")
return translated.text
def take_voice(self, lang="en"):
while True:
with self.mic as source:
self.rec.adjust_for_ambient_noise(source)
print(" [+] Listening for input")
voice_input = self.rec.listen(source)
try:
voice_input = self.rec.recognize_google(voice_input, language=lang)
print(f" [+] Response: {voice_input.lower()}")
return voice_input.lower()
except:
self.speak("Failed to recognize audio. Try again")
print(" [!] Error: Failed to recognize audio")
def choose_language(self):
print("[*] Choosing Your Language")
while True:
self.speak("Choose a language")
try:
lang_code = LANGCODES[self.take_voice()]
return lang_code
except Exception:
self.speak("Failed to recognize language. Try Again")
print("[!] Error: Invalid Language")
if __name__ == "__main__":
try:
translator = PyTranslator()
lang_code = translator.choose_language()
print(f"[+] Selected Language: {lang_code}")
translator.speak("Translation Started")
while True:
text = translator.take_voice(lang=lang_code)
translator.speak(translator.translate(text))
except KeyboardInterrupt:
print("[!] Keyboard Interrupt: Exiting Code")
exit(0)