akash015 commited on
Commit
376e6d0
·
verified ·
1 Parent(s): 625e946

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +93 -0
app.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from TTS.api import TTS
2
+ import gradio as gr
3
+ from googletrans import Translator, LANGUAGES
4
+
5
+ # Load the TTS model once
6
+ tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=False)
7
+ translator = Translator()
8
+
9
+ # Define the list of supported languages
10
+ SUPPORTED_LANGUAGES = {
11
+ "English (en)": "en",
12
+ "Spanish (es)": "es",
13
+ "French (fr)": "fr",
14
+ "German (de)": "de",
15
+ "Italian (it)": "it",
16
+ "Portuguese (pt)": "pt",
17
+ "Polish (pl)": "pl",
18
+ "Turkish (tr)": "tr",
19
+ "Russian (ru)": "ru",
20
+ "Dutch (nl)": "nl",
21
+ "Czech (cs)": "cs",
22
+ "Arabic (ar)": "ar",
23
+ "Chinese (zh-cn)": "zh-cn",
24
+ "Japanese (ja)": "ja",
25
+ "Hungarian (hu)": "hu",
26
+ "Korean (ko)": "ko",
27
+ "Hindi (hi)": "hi"
28
+ }
29
+
30
+ def translate_text(text, input_lang, output_lang):
31
+ try:
32
+ translated = translator.translate(text, src=input_lang, dest=output_lang)
33
+ return translated.text
34
+ except Exception as e:
35
+ return str(e)
36
+
37
+ def generate_speech(input_text, voice_path, input_lang, output_lang, translation_enabled):
38
+ try:
39
+ # Check if translation is enabled
40
+ if translation_enabled:
41
+ # Translate text
42
+ translated_text = translate_text(input_text, input_lang, output_lang)
43
+ if 'ERROR' in translated_text:
44
+ return translated_text, None
45
+ else:
46
+ translated_text = input_text
47
+ output_lang = input_lang
48
+
49
+ # Generate speech
50
+ output_path = "output.wav"
51
+ tts.tts_to_file(
52
+ text=translated_text,
53
+ file_path=output_path,
54
+ speaker_wav=voice_path,
55
+ language=output_lang,
56
+ split_sentences=True
57
+ )
58
+ return translated_text, output_path
59
+ except Exception as e:
60
+ return str(e), None
61
+
62
+ def update_output_lang_options(translation_enabled, input_lang):
63
+ if not translation_enabled:
64
+ return gr.update(choices=[input_lang], value=input_lang, interactive=False)
65
+ return gr.update(choices=list(SUPPORTED_LANGUAGES.values()), value=input_lang, interactive=True)
66
+
67
+ with gr.Blocks() as iface:
68
+ with gr.Row():
69
+ with gr.Column(scale=1):
70
+ input_text = gr.Textbox(label="Input Text")
71
+ voice_path = gr.Audio(type="filepath", label="Upload Voice")
72
+ input_lang = gr.Dropdown(choices=list(SUPPORTED_LANGUAGES.values()), label="Input Language")
73
+ output_lang = gr.Dropdown(choices=list(SUPPORTED_LANGUAGES.values()), label="Output Language")
74
+ translation_enabled = gr.Checkbox(label="Enable Translation", value=True)
75
+ generate_button = gr.Button("Generate Speech")
76
+
77
+ with gr.Column(scale=1):
78
+ translated_text = gr.Textbox(label="Translated Text")
79
+ generated_speech = gr.Audio(label="Generated Speech")
80
+
81
+ translation_enabled.change(
82
+ update_output_lang_options,
83
+ inputs=[translation_enabled, input_lang],
84
+ outputs=output_lang
85
+ )
86
+
87
+ generate_button.click(
88
+ generate_speech,
89
+ inputs=[input_text, voice_path, input_lang, output_lang, translation_enabled],
90
+ outputs=[translated_text, generated_speech]
91
+ )
92
+
93
+ iface.launch()