masadonline commited on
Commit
cb113e3
·
verified ·
1 Parent(s): 54aae44

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -26
app.py CHANGED
@@ -1,39 +1,52 @@
1
  import streamlit as st
2
- import requests
3
- import os
4
  from PIL import Image
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
- # Streamlit config
8
  st.set_page_config(page_title="DeafTranslator", layout="centered")
9
  st.title("🤟 DeafTranslator")
10
  st.markdown("Translate **Urdu** text to **English** and view it in **Sign Language** (ASL).")
11
 
12
- # Hugging Face translation model (no token required for public models, but safer with token)
13
- TRANSLATE_API_URL = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-ur-en"
14
- HF_API_TOKEN = st.secrets.get("HF_API_TOKEN", None)
15
- HEADERS = {"Authorization": f"Bearer {HF_API_TOKEN}"} if HF_API_TOKEN else {}
16
-
17
- # Sign language images folder (alphabet or word-based)
18
- SIGN_IMAGE_FOLDER = "sign_images" # Place a.jpg, b.jpg, etc. here
19
 
20
  def translate_urdu_to_english(urdu_text):
21
- payload = {"inputs": urdu_text}
22
  try:
23
- response = requests.post(TRANSLATE_API_URL, headers=HEADERS, json=payload)
24
- # Check for 404 or any other status code
25
- response.raise_for_status() # Will raise HTTPError for bad responses
26
- result = response.json()
27
- if response.status_code == 200:
28
- return result[0]['translation_text']
29
- else:
30
- st.error(f"Error: Unable to get translation. Status Code: {response.status_code}")
31
- except requests.exceptions.HTTPError as err:
32
- st.error(f"Translation failed: {response.status_code} - {response.text}")
33
  except Exception as e:
34
- st.error(f"Unexpected error: {str(e)}")
35
- return ""
36
-
37
 
38
  def display_sign_language(english_text):
39
  words = english_text.lower().split()
@@ -49,7 +62,6 @@ def display_sign_language(english_text):
49
  if os.path.exists(char_image_path):
50
  st.image(char_image_path, caption=char.upper(), width=80)
51
 
52
- # --- Streamlit App UI ---
53
  urdu_text = st.text_area("📝 Enter Urdu Text", height=150)
54
 
55
  if st.button("🔄 Translate & Show Signs"):
@@ -58,7 +70,6 @@ if st.button("🔄 Translate & Show Signs"):
58
  else:
59
  with st.spinner("Translating..."):
60
  english_translation = translate_urdu_to_english(urdu_text)
61
-
62
  if english_translation:
63
  st.markdown("### ✅ Translated English")
64
  st.success(english_translation)
 
1
  import streamlit as st
 
 
2
  from PIL import Image
3
+ import os
4
+ import argostranslate.package
5
+ import argostranslate.translate
6
+
7
+ # Load Argos Translate Urdu to English model (first time only)
8
+ def load_argos_translate_model():
9
+ available_packages = argostranslate.package.get_available_packages()
10
+ for pkg in available_packages:
11
+ if pkg.from_code == "ur" and pkg.to_code == "en":
12
+ argostranslate.package.install_from_path(pkg.download())
13
+ break
14
+
15
+ # Check if translation model is installed
16
+ installed_languages = argostranslate.translate.get_installed_languages()
17
+ urdu_to_english = None
18
+ for lang in installed_languages:
19
+ if lang.code == "ur":
20
+ for to_lang in lang.translations:
21
+ if to_lang.to_lang.code == "en":
22
+ urdu_to_english = to_lang
23
+ break
24
 
25
+ # If not installed, download and install
26
+ if urdu_to_english is None:
27
+ with st.spinner("Downloading translation model..."):
28
+ load_argos_translate_model()
29
+ installed_languages = argostranslate.translate.get_installed_languages()
30
+ for lang in installed_languages:
31
+ if lang.code == "ur":
32
+ for to_lang in lang.translations:
33
+ if to_lang.to_lang.code == "en":
34
+ urdu_to_english = to_lang
35
+ break
36
 
37
+ # Streamlit UI
38
  st.set_page_config(page_title="DeafTranslator", layout="centered")
39
  st.title("🤟 DeafTranslator")
40
  st.markdown("Translate **Urdu** text to **English** and view it in **Sign Language** (ASL).")
41
 
42
+ SIGN_IMAGE_FOLDER = "sign_images" # Ensure images like a.jpg, b.jpg etc. are in this folder
 
 
 
 
 
 
43
 
44
  def translate_urdu_to_english(urdu_text):
 
45
  try:
46
+ return urdu_to_english.translate(urdu_text)
 
 
 
 
 
 
 
 
 
47
  except Exception as e:
48
+ st.error(f"Translation failed: {str(e)}")
49
+ return ""
 
50
 
51
  def display_sign_language(english_text):
52
  words = english_text.lower().split()
 
62
  if os.path.exists(char_image_path):
63
  st.image(char_image_path, caption=char.upper(), width=80)
64
 
 
65
  urdu_text = st.text_area("📝 Enter Urdu Text", height=150)
66
 
67
  if st.button("🔄 Translate & Show Signs"):
 
70
  else:
71
  with st.spinner("Translating..."):
72
  english_translation = translate_urdu_to_english(urdu_text)
 
73
  if english_translation:
74
  st.markdown("### ✅ Translated English")
75
  st.success(english_translation)