Spaces:
Running
Running
fixed code
Browse files
app.py
CHANGED
@@ -17,8 +17,7 @@ voice_characters = {
|
|
17 |
"Guy": "en-US-GuyNeural",
|
18 |
},
|
19 |
"Hindi": {
|
20 |
-
"Swara": "hi-IN-SwaraNeural"
|
21 |
-
"Madhur": "hi-IN-MadhurNeural"
|
22 |
}
|
23 |
}
|
24 |
|
@@ -41,9 +40,14 @@ def tts_wrapper(text, language, character, translation_direction):
|
|
41 |
elif translation_direction == "Hindi to English":
|
42 |
text = GoogleTranslator(source='hi', target='en').translate(original_text)
|
43 |
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
45 |
if not voice:
|
46 |
-
return f"
|
47 |
|
48 |
filename = asyncio.run(generate_tts(text, voice))
|
49 |
return text, filename
|
@@ -51,11 +55,13 @@ def tts_wrapper(text, language, character, translation_direction):
|
|
51 |
except Exception as e:
|
52 |
return f"Error: {str(e)}", None
|
53 |
|
54 |
-
# β
FIXED: Voice character list updates properly now
|
55 |
def get_characters(language):
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
59 |
|
60 |
# ===== CHATBOT PART USING BLENDERBOT =====
|
61 |
|
@@ -104,13 +110,12 @@ def create_app():
|
|
104 |
with gr.Tab("TTS"):
|
105 |
text_input = gr.Textbox(label="Enter Text", placeholder="Type something...", lines=4)
|
106 |
language_dropdown = gr.Dropdown(choices=list(voice_characters.keys()), value="English - US", label="Language")
|
107 |
-
character_dropdown = gr.Dropdown(choices=list(voice_characters["English - US"].keys()), value="Aria", label="Voice Character")
|
108 |
translation_dropdown = gr.Dropdown(choices=["None", "English to Hindi", "Hindi to English"], value="None", label="Translation Direction")
|
109 |
tts_button = gr.Button("π Generate Voice")
|
110 |
output_text = gr.Textbox(label="Translated Text or Error")
|
111 |
output_audio = gr.Audio(label="Generated Voice")
|
112 |
|
113 |
-
# β
This updates the character dropdown dynamically based on selected language
|
114 |
language_dropdown.change(fn=get_characters, inputs=language_dropdown, outputs=character_dropdown)
|
115 |
|
116 |
tts_button.click(fn=tts_wrapper,
|
|
|
17 |
"Guy": "en-US-GuyNeural",
|
18 |
},
|
19 |
"Hindi": {
|
20 |
+
"Swara": "hi-IN-SwaraNeural" # Only one voice will be used for Hindi
|
|
|
21 |
}
|
22 |
}
|
23 |
|
|
|
40 |
elif translation_direction == "Hindi to English":
|
41 |
text = GoogleTranslator(source='hi', target='en').translate(original_text)
|
42 |
|
43 |
+
# Hindi uses fixed voice "Swara"
|
44 |
+
if language == "Hindi":
|
45 |
+
voice = voice_characters["Hindi"]["Swara"]
|
46 |
+
else:
|
47 |
+
voice = voice_characters.get(language, {}).get(character)
|
48 |
+
|
49 |
if not voice:
|
50 |
+
return f"No voice found for selected language and character", None
|
51 |
|
52 |
filename = asyncio.run(generate_tts(text, voice))
|
53 |
return text, filename
|
|
|
55 |
except Exception as e:
|
56 |
return f"Error: {str(e)}", None
|
57 |
|
|
|
58 |
def get_characters(language):
|
59 |
+
if language == "Hindi":
|
60 |
+
return gr.update(choices=[], value=None, visible=False)
|
61 |
+
else:
|
62 |
+
chars = list(voice_characters.get(language, {}).keys())
|
63 |
+
default_char = chars[0] if chars else None
|
64 |
+
return gr.update(choices=chars, value=default_char, visible=True)
|
65 |
|
66 |
# ===== CHATBOT PART USING BLENDERBOT =====
|
67 |
|
|
|
110 |
with gr.Tab("TTS"):
|
111 |
text_input = gr.Textbox(label="Enter Text", placeholder="Type something...", lines=4)
|
112 |
language_dropdown = gr.Dropdown(choices=list(voice_characters.keys()), value="English - US", label="Language")
|
113 |
+
character_dropdown = gr.Dropdown(choices=list(voice_characters["English - US"].keys()), value="Aria", label="Voice Character", visible=True)
|
114 |
translation_dropdown = gr.Dropdown(choices=["None", "English to Hindi", "Hindi to English"], value="None", label="Translation Direction")
|
115 |
tts_button = gr.Button("π Generate Voice")
|
116 |
output_text = gr.Textbox(label="Translated Text or Error")
|
117 |
output_audio = gr.Audio(label="Generated Voice")
|
118 |
|
|
|
119 |
language_dropdown.change(fn=get_characters, inputs=language_dropdown, outputs=character_dropdown)
|
120 |
|
121 |
tts_button.click(fn=tts_wrapper,
|