insider12's picture
Update app.py
0fed57d verified
raw
history blame
1.9 kB
import json
import torch
import gradio as gr
from transformers import pipeline
from gtts import gTTS
import os
# Load FLORES-200 language codes from lang_code.json
with open("lang_code.json", "r", encoding="utf-8") as f:
LANG_CODES = json.load(f)
# Translation pipeline
translator = pipeline("translation", model="facebook/nllb-200-distilled-600M")
# Translation + TTS function
def translate_and_speak(text, src_lang, tgt_lang):
try:
src_code = LANG_CODES[src_lang]
tgt_code = LANG_CODES[tgt_lang]
# Translate
result = translator(text, src_lang=src_code, tgt_lang=tgt_code)
translated_text = result[0]['translation_text']
# Generate speech for translated text
tts = gTTS(translated_text, lang=tgt_lang.split("_")[0])
audio_path = "translated_audio.mp3"
tts.save(audio_path)
return translated_text, audio_path
except Exception as e:
return f"Error: {e}", None
# Gradio UI
with gr.Blocks(theme="soft") as demo:
gr.HTML("<h1 style='color:black; text-align:center;'>@GenAi MultiLanguage Translator Model</h1>")
with gr.Row():
with gr.Column():
src_text = gr.Textbox(label="Enter Text", placeholder="Type something here...")
src_lang = gr.Dropdown(choices=list(LANG_CODES.keys()), value="English (Latin script)", label="Source Language")
tgt_lang = gr.Dropdown(choices=list(LANG_CODES.keys()), value="French", label="Target Language")
translate_btn = gr.Button("Translate")
with gr.Column():
output_text = gr.Textbox(label="Translated Text")
output_audio = gr.Audio(label="Speech Output", type="filepath")
translate_btn.click(fn=translate_and_speak,
inputs=[src_text, src_lang, tgt_lang],
outputs=[output_text, output_audio])
# Run app
demo.launch()