import gradio as gr import torch from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import os checkpoint_path = "Prince012/anuvaadak-en_hi" device = "cuda" if torch.cuda.is_available() else "cpu" tokenizer = None model = None def load_model(): global tokenizer, model try: tokenizer = AutoTokenizer.from_pretrained(checkpoint_path) model = AutoModelForSeq2SeqLM.from_pretrained(checkpoint_path, torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32) model.to(device) model.eval() print(f"Model loaded successfully on {device}!") except Exception as e: print(f"Error loading model: {e}") def generate_translation(text): if not isinstance(text, str) or text.strip() == "": return "" try: inputs = tokenizer(text, return_tensors="pt", max_length=128, truncation=True) inputs = {k: v.to(device) for k, v in inputs.items()} with torch.no_grad(): outputs = model.generate(**inputs, max_length=128) outputs = outputs.cpu() return tokenizer.decode(outputs[0], skip_special_tokens=True) except Exception as e: print(f"Error during translation: {e}") return f"Translation error: {str(e)}" def translate_text(english_text): if not english_text: return "" hindi_translation = generate_translation(english_text) return hindi_translation # Character count functions def count_chars(text): return f"{len(text)} characters" def clear_inputs(): return ["", ""] # Load model at startup if torch.cuda.is_available(): torch.cuda.empty_cache() load_model() # Custom CSS to make the UI look like your original design css = """ body { font-family: Arial, sans-serif; } .container { max-width: 800px; margin: 0 auto; } h1 { color: #4169E1; text-align: center; font-size: 32px; margin-bottom: 5px; } h2 { color: #666; text-align: center; font-size: 18px; font-weight: normal; margin-top: 0; margin-bottom: 30px; } .textbox-label { font-weight: bold; margin-bottom: 5px; } .gradio-container { background-color: white; } .gr-button-primary { background-color: #4169E1 !important; } footer { text-align: center; margin-top: 20px; color: #888; font-size: 12px; } """ with gr.Blocks(css=css) as demo: gr.HTML("""