| import gradio as gr |
| from langdetect import detect |
| from gtts import gTTS |
| import os |
|
|
| |
| lang_map = { |
| 'en': 'English', |
| 'es': 'Spanish', |
| 'fr': 'French', |
| 'de': 'German', |
| 'it': 'Italian', |
| 'pt': 'Portuguese', |
| 'nl': 'Dutch', |
| 'ru': 'Russian', |
| 'zh-cn': 'Chinese (Simplified)', |
| 'ja': 'Japanese', |
| 'ko': 'Korean', |
| 'pl': 'Polish', |
| 'uk': 'Ukrainian', |
| 'sk': 'Slovak', |
| 'lt': 'Lithuanian', |
| 'cs': 'Czech', |
| 'sr': 'Serbian', |
| 'hr': 'Croatian', |
| 'hi': 'Hindi' |
| } |
|
|
| def identify_and_pronounce(name, selected_lang): |
| if not name or name.strip() == "": |
| return "Please enter a name.", None |
| |
| |
| try: |
| detected_lang = detect(name) |
| except Exception as e: |
| return f"Error detecting language: {str(e)}", None |
| |
| |
| detected_lang_name = lang_map.get(detected_lang, 'English (default)') |
| detected_lang_code = detected_lang if detected_lang in lang_map else 'en' |
|
|
| |
| if selected_lang != "Auto" and selected_lang in lang_map.values(): |
| lang_name = selected_lang |
| lang_code = [code for code, name in lang_map.items() if name == selected_lang][0] |
| else: |
| lang_name = detected_lang_name |
| lang_code = detected_lang_code |
|
|
| |
| try: |
| tts = gTTS(text=name, lang=lang_code, slow=False) |
| audio_file = "output.mp3" |
| tts.save(audio_file) |
| return f"Detected language: {detected_lang_name}\nPronounced in: {lang_name}", audio_file |
| except Exception as e: |
| return f"Error generating pronunciation: {str(e)}", None |
|
|
| |
| language_options = ["Auto"] + list(lang_map.values()) |
| interface = gr.Interface( |
| fn=identify_and_pronounce, |
| inputs=[ |
| gr.Textbox(label="Enter a name", value="Tomasz Durzyński"), |
| gr.Dropdown(choices=language_options, label="Select Language (Auto uses detection)", value="Auto") |
| ], |
| outputs=[ |
| gr.Textbox(label="Language Info"), |
| gr.Audio(label="Pronunciation") |
| ], |
| title="Name Language Detector and Pronouncer", |
| description="Enter a name to detect its language and hear it pronounced. Optionally, select a language to override the default." |
| ) |
|
|
| |
| interface.launch() |