Sarath0x8f commited on
Commit
fc1a867
·
verified ·
1 Parent(s): a3f96ea

Update translate_speak.py

Browse files
Files changed (1) hide show
  1. translate_speak.py +82 -78
translate_speak.py CHANGED
@@ -1,79 +1,83 @@
1
- from gtts import gTTS
2
- from deep_translator import GoogleTranslator
3
- import soundfile as sf
4
- import tempfile
5
- import numpy as np
6
- import gtts
7
-
8
- output_path = 'Audio/output.wav'
9
- translate_path = 'Audio/translate.wav'
10
-
11
- def get_lang(lang):
12
- translate = GoogleTranslator().get_supported_languages()
13
-
14
- speak = list(gtts.lang.tts_langs().values())
15
- speak = list(map(lambda x: x.lower(), speak))
16
- speak.sort()
17
-
18
- set_lang = list(set(speak) & set(translate))
19
- set_lang.sort()
20
-
21
- if lang in set_lang:
22
- for key, value in gtts.lang.tts_langs().items():
23
- if value.lower() == lang:
24
- return key
25
- else:
26
- return 'en'
27
- else:
28
- return 'en'
29
-
30
- def audio_streaming(txt=None, lang='en', to=None):
31
- # If an audio file is provided as input, use it; otherwise, use the direct file path
32
- speak = gTTS(text=txt, lang=lang, slow=False)
33
- if to == 1:
34
- audio = output_path
35
- else:
36
- audio = translate_path
37
- speak.save(audio)
38
-
39
- # Load the audio file
40
- data, samplerate = sf.read(audio)
41
-
42
- # Ensure data is in float32 format
43
- data = np.array(data, dtype=np.float32)
44
-
45
- # Save to a temporary file that Gradio can use for audio playback
46
- with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file:
47
- sf.write(tmp_file.name, data, samplerate)
48
- temp_audio_path = tmp_file.name
49
-
50
- # Return the file path to Gradio
51
- return temp_audio_path
52
-
53
- def translate_txt(lang, text):
54
- translator = GoogleTranslator(source="en", target=lang)
55
- translated_text = translator.translate(text)
56
-
57
- audio_path = audio_streaming(translated_text, lang=get_lang(lang), to=2)
58
-
59
- return translated_text, audio_path
60
-
61
- if __name__ == "__main__":
62
- # print(audio_streaming("hello world"))
63
- # os.system(f"start {audio_streaming('hello world!')}")
64
- translate = GoogleTranslator().get_supported_languages()
65
- # print(f"Can translate: {translate}", len(translate))
66
- # print()
67
-
68
- speak = list(gtts.lang.tts_langs().values())
69
- speak = list(map(lambda x: x.lower(), speak))
70
- speak.sort()
71
- # print(f"Can speak: {speak}", len(speak))
72
- # print()
73
-
74
- set_lang = list(set(speak)&set(translate))
75
- set_lang.sort()
76
- # print(f"Set of lang: {set_lang}", len(set_lang))
77
-
78
- not_in_speak = list(set(translate) - set(speak))
 
 
 
 
79
  print(not_in_speak)
 
1
+ from gtts import gTTS
2
+ from deep_translator import GoogleTranslator
3
+ import soundfile as sf
4
+ import tempfile
5
+ import numpy as np
6
+ import gtts
7
+ import datetime
8
+
9
+ output_path = 'Audio/output.wav'
10
+ translate_path = 'Audio/translate.wav'
11
+
12
+ def get_lang(lang):
13
+ translate = GoogleTranslator().get_supported_languages()
14
+
15
+ speak = list(gtts.lang.tts_langs().values())
16
+ speak = list(map(lambda x: x.lower(), speak))
17
+ speak.sort()
18
+
19
+ set_lang = list(set(speak) & set(translate))
20
+ set_lang.sort()
21
+
22
+ if lang in set_lang:
23
+ for key, value in gtts.lang.tts_langs().items():
24
+ if value.lower() == lang:
25
+ return key
26
+ else:
27
+ return 'en'
28
+ else:
29
+ return 'en'
30
+
31
+ def audio_streaming(txt=None, lang='en', to=None):
32
+ # If an audio file is provided as input, use it; otherwise, use the direct file path
33
+ speak = gTTS(text=txt, lang=lang, slow=False)
34
+ if to == 1:
35
+ audio = output_path
36
+ else:
37
+ audio = translate_path
38
+ speak.save(audio)
39
+
40
+ # Load the audio file
41
+ data, samplerate = sf.read(audio)
42
+
43
+ # Ensure data is in float32 format
44
+ data = np.array(data, dtype=np.float32)
45
+
46
+ # Save to a temporary file that Gradio can use for audio playback
47
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_file:
48
+ sf.write(tmp_file.name, data, samplerate)
49
+ temp_audio_path = tmp_file.name
50
+
51
+ # Return the file path to Gradio
52
+ return temp_audio_path
53
+
54
+ def translate_txt(lang, text):
55
+ translator = GoogleTranslator(source="en", target=lang)
56
+ translated_text = translator.translate(text)
57
+
58
+ with open("Request.txt", 'a', encoding="utf-8") as f:
59
+ f.write(f"{datetime.datetime.now()}: {text}->{lang}->{translated_text}\n")
60
+
61
+ audio_path = audio_streaming(translated_text, lang=get_lang(lang), to=2)
62
+
63
+ return translated_text, audio_path
64
+
65
+ if __name__ == "__main__":
66
+ # print(audio_streaming("hello world"))
67
+ # os.system(f"start {audio_streaming('hello world!')}")
68
+ translate = GoogleTranslator().get_supported_languages()
69
+ # print(f"Can translate: {translate}", len(translate))
70
+ # print()
71
+
72
+ speak = list(gtts.lang.tts_langs().values())
73
+ speak = list(map(lambda x: x.lower(), speak))
74
+ speak.sort()
75
+ # print(f"Can speak: {speak}", len(speak))
76
+ # print()
77
+
78
+ set_lang = list(set(speak)&set(translate))
79
+ set_lang.sort()
80
+ # print(f"Set of lang: {set_lang}", len(set_lang))
81
+
82
+ not_in_speak = list(set(translate) - set(speak))
83
  print(not_in_speak)