|
|
import json |
|
|
import torch |
|
|
import gradio as gr |
|
|
from transformers import pipeline |
|
|
from gtts import gTTS |
|
|
import os |
|
|
|
|
|
|
|
|
with open("lang_code.json", "r", encoding="utf-8") as f: |
|
|
LANG_CODES = json.load(f) |
|
|
|
|
|
|
|
|
translator = pipeline("translation", model="facebook/nllb-200-distilled-600M") |
|
|
|
|
|
|
|
|
def translate_and_speak(text, src_lang, tgt_lang): |
|
|
try: |
|
|
src_code = LANG_CODES[src_lang] |
|
|
tgt_code = LANG_CODES[tgt_lang] |
|
|
|
|
|
|
|
|
result = translator(text, src_lang=src_code, tgt_lang=tgt_code) |
|
|
translated_text = result[0]['translation_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 |
|
|
|
|
|
|
|
|
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]) |
|
|
|
|
|
|
|
|
demo.launch() |
|
|
|