LouisMonawe commited on
Commit
908bc08
·
1 Parent(s): d24d0fc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -45
app.py CHANGED
@@ -47,59 +47,44 @@
47
 
48
  # iface.launch()
49
 
50
-
51
- import requests
52
  import gradio as gr
53
- from dotenv import load_dotenv
54
- import os
55
-
56
- # Load env
57
- load_dotenv()
58
- HF_TOKEN = os.getenv("HF_TOKEN")
59
-
60
- model_name = "Helsinki-NLP/opus-mt-en-nso"
61
- API_URL = f"https://api-inference.huggingface.co/models/{model_name}"
62
- headers = {"Authorization": f"Bearer {HF_TOKEN}", "Accept": "application/json"}
63
-
64
-
65
- def query(payload):
66
- response = requests.post(API_URL, headers=headers, json=payload)
67
-
68
- if response.status_code == 200:
69
- try:
70
- return response.json()
71
- except Exception as e:
72
- return {"error": f"JSON decode error: {str(e)}"}
73
- else:
74
- # Show error message from HF API or HTTP code
75
- try:
76
- err = response.json()
77
- except:
78
- err = response.text
79
- return {"error": f"HTTP {response.status_code}: {err}"}
80
 
 
 
 
 
 
 
 
 
81
 
82
- def translate(input_text):
83
- if not input_text.strip():
84
- return "Please enter text to translate."
85
 
86
- response = query({"inputs": input_text, "options": {"wait_for_model": True}})
 
 
 
 
87
 
88
- if "error" in response:
89
- return f"Error: {response['error']}"
90
 
91
- try:
92
- translation = response[0]["translation_text"]
93
- return translation
94
- except (KeyError, IndexError):
95
- return f"Unexpected response format: {response}"
96
 
97
 
98
- translator = gr.Interface(
 
99
  fn=translate,
100
- inputs=[gr.Textbox(label="Input Text", placeholder="Input Text To Be Translated")],
101
- outputs=gr.Textbox(label="Translation"),
102
- title="Translademia",
 
 
 
 
103
  )
104
 
105
- translator.launch()
 
 
47
 
48
  # iface.launch()
49
 
50
+ from transformers import MarianMTModel, MarianTokenizer, pipeline
 
51
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
+ # Define supported models for South African languages
54
+ language_models = {
55
+ "Afrikaans": "Helsinki-NLP/opus-mt-en-af",
56
+ "Zulu": "Helsinki-NLP/opus-mt-en-zu",
57
+ "Xhosa": "Helsinki-NLP/opus-mt-en-xh",
58
+ "Sesotho": "Helsinki-NLP/opus-mt-en-st",
59
+ "Setswana": "Helsinki-NLP/opus-mt-en-tn",
60
+ }
61
 
 
 
 
62
 
63
+ # Translation function
64
+ def translate(text, target_language):
65
+ model_name = language_models[target_language]
66
+ tokenizer = MarianTokenizer.from_pretrained(model_name)
67
+ model = MarianMTModel.from_pretrained(model_name)
68
 
69
+ # Setup pipeline
70
+ translation_pipeline = pipeline("translation", model=model, tokenizer=tokenizer)
71
 
72
+ # Translate
73
+ result = translation_pipeline(text)
74
+ return result[0]["translation_text"]
 
 
75
 
76
 
77
+ # Build Gradio interface
78
+ interface = gr.Interface(
79
  fn=translate,
80
+ inputs=[
81
+ gr.Textbox(label="Enter English Text"),
82
+ gr.Dropdown(choices=list(language_models.keys()), label="Translate to"),
83
+ ],
84
+ outputs="text",
85
+ title="🇿🇦 South African Language Translator",
86
+ description="Translate English text into Afrikaans, Zulu, Xhosa, Sesotho or Setswana",
87
  )
88
 
89
+ # Launch the app
90
+ interface.launch()