Spaces:
Running
Running
File size: 1,924 Bytes
dd2a7f7 9b0a1f4 dd2a7f7 9b0a1f4 dd2a7f7 9b0a1f4 dd2a7f7 9b0a1f4 dd2a7f7 9b0a1f4 dd2a7f7 9b0a1f4 dd1926a |
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import gradio as gr
from transformers import pipeline
from gtts import gTTS
import os
# Mapping user-selected languages to available translation models
TRANSLATION_MODELS = {
"fr": "Helsinki-NLP/opus-mt-en-fr",
"es": "Helsinki-NLP/opus-mt-en-es",
"de": "Helsinki-NLP/opus-mt-en-de",
"it": "Helsinki-NLP/opus-mt-en-it",
"zh": "Helsinki-NLP/opus-mt-en-zh",
"ar": "Helsinki-NLP/opus-mt-en-ar",
"hi": "Helsinki-NLP/opus-mt-en-hi",
"ur": "Helsinki-NLP/opus-mt-en-ur"
}
# Language mapping for gTTS
TTS_LANGUAGES = {
"fr": "fr",
"es": "es",
"de": "de",
"it": "it",
"zh": "zh",
"ar": "ar",
"hi": "hi",
"ur": "ur"
}
def translate_and_speak(text, target_language):
""" Translates input text to the selected language and converts it to speech. """
if not text.strip():
return "Please enter some text.", None
if target_language not in TRANSLATION_MODELS:
return "Translation model not available for this language.", None
try:
# Load translation model dynamically based on user choice
translator = pipeline("translation", model=TRANSLATION_MODELS[target_language])
translated_text = translator(text)[0]['translation_text']
# Convert text to speech using gTTS
output_path = "output.mp3"
tts = gTTS(text=translated_text, lang=TTS_LANGUAGES[target_language])
tts.save(output_path)
return translated_text, output_path
except Exception as e:
return f"Error: {str(e)}", None
# Gradio Interface
demo = gr.Interface(
fn=translate_and_speak,
inputs=[
gr.Textbox(label="Enter Text"),
gr.Dropdown(["fr", "es", "de", "it", "zh", "ar", "hi", "ur"], label="Target Language")
],
outputs=[
gr.Textbox(label="Translated Text"),
gr.Audio(label="Generated Speech")
]
)
# Launch Gradio App
demo.launch(share=True)
|