Spaces:
Sleeping
Sleeping
| import re | |
| import torch | |
| from transformers import T5ForConditionalGeneration, T5Tokenizer | |
| MODEL_PATH = "./sign_language_converter_model" | |
| # Load tokenizer & model | |
| tokenizer = T5Tokenizer.from_pretrained(MODEL_PATH) | |
| model = T5ForConditionalGeneration.from_pretrained(MODEL_PATH) | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model.to(device) | |
| model.eval() | |
| def convert_to_sign_friendly(text: str) -> list[str]: | |
| inputs = tokenizer( | |
| "convert to sign-friendly: " + text, | |
| return_tensors="pt", | |
| truncation=True, | |
| padding=True | |
| ).to(device) | |
| with torch.no_grad(): | |
| outputs = model.generate( | |
| **inputs, | |
| max_length=256, | |
| num_beams=4, | |
| early_stopping=True | |
| ) | |
| sign_friendly_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| sign_friendly_text = clean_gloss(sign_friendly_text) | |
| return sign_friendly_text | |
| def clean_gloss(gloss: str) -> list[str]: | |
| words = gloss.split() | |
| cleaned = [] | |
| for w in words: | |
| w = re.sub(r"[,.!]", "", w) | |
| if w.startswith("X-"): | |
| w = w.replace("X-", "") | |
| if w.startswith("DESC-"): | |
| w = w.replace("DESC-", "") | |
| cleaned.append(w) | |
| return cleaned | |
| # Test the conversion on some example sentences | |
| if __name__ == "__main__": | |
| text = "I want to go to the store" | |
| print(convert_to_sign_friendly(text)) | |
| print(convert_to_sign_friendly("She is going to the park later")) | |
| print(convert_to_sign_friendly("Can you help me with this?")) | |
| print(convert_to_sign_friendly("The weather is nice today")) | |