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()