Spaces:
Sleeping
Sleeping
| from .language import ( | |
| clean_gloss, | |
| map_word, | |
| lemmatize_words, | |
| llm_text_to_gloss, | |
| ) | |
| from .generator import generate_frames, get_landmarks | |
| from .renderer import render | |
| # ========================== | |
| # Lazy-loaded vocabulary | |
| # ========================== | |
| vocab_set = None | |
| def get_vocab(): | |
| global vocab_set | |
| if vocab_set is None: | |
| print("Loading text-to-sign assets...") | |
| vocab_set = set(get_landmarks().keys()) | |
| return vocab_set | |
| # ========================== | |
| # Main Pipeline | |
| # ========================== | |
| def run_pipeline(user_sentence): | |
| print("INPUT:", user_sentence) | |
| # STEP 1: Text → Gloss | |
| raw_gloss = llm_text_to_gloss(user_sentence) | |
| print("RAW GLOSS:", raw_gloss) | |
| # STEP 2: Clean gloss | |
| cleaned = clean_gloss(raw_gloss) | |
| print("CLEANED:", cleaned) | |
| # STEP 3: Tokenize + Lemmatize | |
| tokens = cleaned.split() | |
| tokens = lemmatize_words(tokens) | |
| print("TOKENS:", tokens) | |
| # STEP 4: Map words to vocabulary | |
| vocab = get_vocab() | |
| mapped_sequence = [map_word(token, vocab) for token in tokens] | |
| print("MAPPED:", mapped_sequence) | |
| # STEP 5: Generate landmark frames | |
| frames = generate_frames(mapped_sequence) | |
| print("FRAMES COUNT:", len(frames)) | |
| # STEP 6: Render video | |
| video_path = render(frames) | |
| print("VIDEO PATH:", video_path) | |
| return video_path |