Spaces:
Running
Running
File size: 4,512 Bytes
d5f27de 19fd82d d5f27de |
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# 1. Install necessary libraries (if you haven't already)
# pip install gradio-client transformers torch sentencepiece
# 2. Import libraries
import gradio as gr
from transformers import pipeline
import torch # PyTorch is needed as a backend for transformers
# 3. Load the translation pipeline
# Using the NLLB model which supports many languages including English and Telugu
# You might need to adjust device mapping based on your hardware (e.g., device=0 for GPU)
try:
# Try loading the specific model mentioned implicitly by language codes
translator = pipeline('translation', model='facebook/nllb-200-distilled-600M', device=-1) # Use -1 for CPU
print("Translator pipeline loaded successfully.")
except Exception as e:
print(f"Error loading translator pipeline: {e}")
# Define a dummy function if pipeline fails to load, so Gradio interface still runs
def translator(text, src_lang, tgt_lang):
return f"Error: Could not load translation model. {e}"
# 4. Define the translation function for Gradio
def translate_text(text_to_translate, source_language, target_language):
"""
Translates text using the loaded Hugging Face pipeline.
Args:
text_to_translate (str): The text to translate.
source_language (str): The source language code (e.g., 'eng_Latn').
target_language (str): The target language code (e.g., 'tel_Telu').
Returns:
str: The translated text or an error message.
"""
if not text_to_translate:
return "Please enter text to translate."
if not source_language or not target_language:
return "Please select both source and target languages."
try:
# Perform the translation using the pipeline
# Note: The pipeline function expects keyword arguments src_lang and tgt_lang
translated_output = translator(text_to_translate,
src_lang=source_language,
tgt_lang=target_language)
# The output is usually a list containing a dictionary
if translated_output and isinstance(translated_output, list):
return translated_output[0]['translation_text']
else:
# Handle unexpected output format
return f"Translation failed. Unexpected output: {translated_output}"
except Exception as e:
print(f"Translation error: {e}")
# Provide a user-friendly error message
return f"An error occurred during translation: {e}. Make sure the language codes are correct and supported by the model."
# 5. Define language choices for dropdowns (using NLLB codes)
# Add more languages as needed from the NLLB supported list
language_choices = [
("English", "eng_Latn"),
("Telugu", "tel_Telu"),
("Hindi", "hin_Deva"),
("Tamil", "tam_Taml"),
("Spanish", "spa_Latn"),
("French", "fra_Latn"),
("German", "deu_Latn"),
("Chinese (Simplified)", "zho_Hans"),
]
# 6. Create the Gradio interface
with gr.Blocks(theme=gr.themes.Soft()) as iface:
gr.Markdown("# Text Translator using NLLB Model")
gr.Markdown("Enter text and select the source and target languages.")
with gr.Row():
# Input text area
input_text = gr.Textbox(label="Text to Translate", placeholder="Enter text here...", lines=5)
# Output text area
output_text = gr.Textbox(label="Translated Text", placeholder="Translation will appear here...", lines=5, interactive=False)
with gr.Row():
# Source language dropdown
source_lang = gr.Dropdown(
label="Source Language",
choices=language_choices,
value="eng_Latn" # Default to English
)
# Target language dropdown
target_lang = gr.Dropdown(
label="Target Language",
choices=language_choices,
value="tel_Telu" # Default to Telugu
)
# Translate button
translate_button = gr.Button("Translate", variant="primary")
# Define the action when the button is clicked
translate_button.click(
fn=translate_text,
inputs=[input_text, source_lang, target_lang],
outputs=output_text,
api_name="translate" # Name for API endpoint if needed
)
gr.Markdown("Powered by Hugging Face Transformers and Gradio.")
# 7. Launch the Gradio app
# When running locally, this will provide a URL.
# On Hugging Face Spaces, this line makes the app run.
if __name__ == "__main__":
iface.launch()
|