Spaces:
Sleeping
Sleeping
File size: 1,775 Bytes
1c456d6 db3afff 1c456d6 65b7c53 1c456d6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
import gradio as gr
import pandas as pd
import os
import warnings
from gtts import gTTS
from deep_translator import GoogleTranslator
from langdetect import detect
# Load language dataset
dataset = pd.read_csv("language.csv")
dataset.dropna(inplace=True)
# Extract language names and codes
langlist = tuple(dataset['name'].tolist())
langcode = dataset['iso'].tolist()
lang_array = {langlist[i]: langcode[i] for i in range(len(langlist))}
speech_langs = {"en": "English", "es": "Spanish", "fr": "French", "de": "German", "hi": "Hindi", "zh-CN": "Chinese", "te": "Telugu"}
# Function to translate and speak
def translate_and_speak(text, selected_option):
if len(text) > 0:
try:
detected_lang = detect(text) # Detect input language
source_lang = "en" if detected_lang == "en" else detected_lang # Handle Tanglish
translator = GoogleTranslator(source=source_lang, target=lang_array[selected_option])
output = translator.translate(text)
audio_file = None
if lang_array[selected_option] in speech_langs:
tts = gTTS(text=output, lang=lang_array[selected_option], slow=False)
audio_file = "translated_audio.mp3"
tts.save(audio_file)
return output, audio_file
except Exception as e:
return str(e), None
return "", None
# Gradio UI
demo = gr.Interface(
fn=translate_and_speak,
inputs=[gr.Textbox(label="Write Your Text"), gr.Dropdown(choices=list(langlist), label="Select Language to Translate")],
outputs=[gr.Textbox(label="Translated Text"), gr.Audio(label="Translated Audio")],
title="Language Translation App",
description="Translate text into different languages."
)
demo.launch()
|