Spaces:
Paused
Paused
| import gradio as gr | |
| from deep_translator import GoogleTranslator | |
| from gtts import gTTS | |
| import tempfile | |
| # Supported languages | |
| languages = { | |
| "English": "en", | |
| "Arabic": "ar", | |
| "German": "de" | |
| } | |
| # Translation function | |
| def translate_text(input_text, source_lang, target_lang): | |
| if not input_text: | |
| return "", None | |
| source_code = languages[source_lang] | |
| target_code = languages[target_lang] | |
| translation = GoogleTranslator(source=source_code, target=target_code).translate(input_text) | |
| # Generate audio | |
| tts = gTTS(translation, lang=target_code) | |
| tmp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") | |
| tts.save(tmp_file.name) | |
| return translation, tmp_file.name | |
| # Gradio UI | |
| with gr.Blocks(title="Multi-Language Translator") as demo: | |
| gr.Markdown("# ๐ Multi-Language Translator\nTranslate between English, Arabic, and German with audio pronunciation!") | |
| with gr.Row(): | |
| source_text = gr.Textbox(label="Enter text to translate", placeholder="Type here...") | |
| with gr.Row(): | |
| source_lang = gr.Dropdown(choices=list(languages.keys()), label="Source Language", value="English") | |
| target_lang = gr.Dropdown(choices=list(languages.keys()), label="Target Language", value="Arabic") | |
| translate_button = gr.Button("Translate") | |
| output_text = gr.Textbox(label="Translated Text", interactive=False) | |
| output_audio = gr.Audio(label="Pronunciation", interactive=False) | |
| translate_button.click(translate_text, inputs=[source_text, source_lang, target_lang], outputs=[output_text, output_audio]) | |
| demo.launch() | |