insider12 commited on
Commit
0fed57d
·
verified ·
1 Parent(s): 52c0097

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -44
app.py CHANGED
@@ -1,64 +1,54 @@
 
 
1
  import gradio as gr
2
  from transformers import pipeline
3
  from gtts import gTTS
4
  import os
5
- import uuid
6
 
7
- # Load translation model
8
- translator = pipeline("translation", model="facebook/nllb-200-distilled-600M")
9
-
10
- # Supported languages
11
- languages = {
12
- "English": "eng_Latn",
13
- "French": "fra_Latn",
14
- "Spanish": "spa_Latn",
15
- "German": "deu_Latn",
16
- "Hindi": "hin_Deva",
17
- "Marathi": "mar_Deva"
18
- }
19
 
20
- def translate_text(text, source_lang, target_lang):
21
- if not text.strip():
22
- return "Please enter text to translate.", None
23
 
 
 
24
  try:
25
- translated = translator(
26
- text,
27
- src_lang=languages[source_lang],
28
- tgt_lang=languages[target_lang]
29
- )[0]['translation_text']
30
 
31
- # Create TTS for translated text
32
- tts_file = f"{uuid.uuid4()}.mp3"
33
- tts = gTTS(translated, lang=target_lang[:3].lower())
34
- tts.save(tts_file)
35
 
36
- return translated, tts_file
37
- except Exception as e:
38
- return f"Error: {str(e)}", None
 
39
 
 
 
 
40
 
41
- # UI
42
- with gr.Blocks(css=".gradio-container {max-width: 750px; margin: auto;}") as demo:
43
- gr.Markdown(
44
- "<h1 style='text-align: center; color: black;'>@GenAi MultiLanguage Translator Model</h1>"
45
- )
46
 
47
  with gr.Row():
48
  with gr.Column():
49
- src_text = gr.Textbox(label="Enter your text", placeholder="Type something here...")
50
- src_lang = gr.Dropdown(list(languages.keys()), value="English", label="Source Language")
51
- tgt_lang = gr.Dropdown(list(languages.keys()), value="French", label="Target Language")
52
- translate_btn = gr.Button("Translate", variant="primary")
53
 
54
  with gr.Column():
55
- translated_text = gr.Textbox(label="Translated Text")
56
- audio_output = gr.Audio(label="Speak Translation", type="filepath")
57
 
58
- translate_btn.click(
59
- translate_text,
60
- inputs=[src_text, src_lang, tgt_lang],
61
- outputs=[translated_text, audio_output]
62
- )
63
 
 
64
  demo.launch()
 
1
+ import json
2
+ import torch
3
  import gradio as gr
4
  from transformers import pipeline
5
  from gtts import gTTS
6
  import os
 
7
 
8
+ # Load FLORES-200 language codes from lang_code.json
9
+ with open("lang_code.json", "r", encoding="utf-8") as f:
10
+ LANG_CODES = json.load(f)
 
 
 
 
 
 
 
 
 
11
 
12
+ # Translation pipeline
13
+ translator = pipeline("translation", model="facebook/nllb-200-distilled-600M")
 
14
 
15
+ # Translation + TTS function
16
+ def translate_and_speak(text, src_lang, tgt_lang):
17
  try:
18
+ src_code = LANG_CODES[src_lang]
19
+ tgt_code = LANG_CODES[tgt_lang]
 
 
 
20
 
21
+ # Translate
22
+ result = translator(text, src_lang=src_code, tgt_lang=tgt_code)
23
+ translated_text = result[0]['translation_text']
 
24
 
25
+ # Generate speech for translated text
26
+ tts = gTTS(translated_text, lang=tgt_lang.split("_")[0])
27
+ audio_path = "translated_audio.mp3"
28
+ tts.save(audio_path)
29
 
30
+ return translated_text, audio_path
31
+ except Exception as e:
32
+ return f"Error: {e}", None
33
 
34
+ # Gradio UI
35
+ with gr.Blocks(theme="soft") as demo:
36
+ gr.HTML("<h1 style='color:black; text-align:center;'>@GenAi MultiLanguage Translator Model</h1>")
 
 
37
 
38
  with gr.Row():
39
  with gr.Column():
40
+ src_text = gr.Textbox(label="Enter Text", placeholder="Type something here...")
41
+ src_lang = gr.Dropdown(choices=list(LANG_CODES.keys()), value="English (Latin script)", label="Source Language")
42
+ tgt_lang = gr.Dropdown(choices=list(LANG_CODES.keys()), value="French", label="Target Language")
43
+ translate_btn = gr.Button("Translate")
44
 
45
  with gr.Column():
46
+ output_text = gr.Textbox(label="Translated Text")
47
+ output_audio = gr.Audio(label="Speech Output", type="filepath")
48
 
49
+ translate_btn.click(fn=translate_and_speak,
50
+ inputs=[src_text, src_lang, tgt_lang],
51
+ outputs=[output_text, output_audio])
 
 
52
 
53
+ # Run app
54
  demo.launch()