Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
from gtts import gTTS | |
import tempfile | |
from langdetect import detect | |
# Load tokenizer and model | |
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium") | |
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium") | |
def respond(user_input): | |
if not user_input: | |
return "Please enter a question.", None | |
# Detect language | |
try: | |
detected_lang = detect(user_input) | |
except: | |
detected_lang = "en" | |
# Generate AI response | |
prompt = f"[INST] {user_input} [/INST]" | |
inputs = tokenizer(prompt, return_tensors="pt") | |
outputs = model.generate(**inputs, max_new_tokens=256, pad_token_id=tokenizer.eos_token_id) | |
response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# Convert to speech | |
try: | |
tts = gTTS(text=response, lang='hi' if detected_lang == 'hi' else 'en') | |
with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as fp: | |
tts.save(fp.name) | |
audio_path = fp.name | |
except Exception as e: | |
audio_path = None | |
return response, audio_path | |
# UI | |
iface = gr.Interface( | |
fn=respond, | |
inputs=gr.Textbox(lines=2, placeholder="Ask anything...", label="user_input"), | |
outputs=[ | |
gr.Textbox(label="TeachMe Says"), | |
gr.Audio(label="Voice", type="filepath", autoplay=True) | |
], | |
title="TeachMe - Your Smart Tutor", | |
description="Light AI bot with Hindi + English voice support." | |
) | |
iface.launch() | |