|
import gradio as gr |
|
from transformers import pipeline |
|
from langdetect import detect |
|
from gtts import gTTS |
|
|
|
|
|
|
|
def s2t_model(audio): |
|
return {"text": "یہ آڈیو سے حاصل شدہ متن ہے"} |
|
|
|
def qa_model(question, context): |
|
return {"answer": "یہ سوال کا فرضی جواب ہے"} |
|
|
|
def translator_en_ur(text): |
|
return [{"translation_text": "یہ انگلش سے اردو ترجمہ ہے"}] |
|
|
|
def translator_ur_en(text): |
|
return [{"translation_text": "This is translation from Urdu to English"}] |
|
|
|
def detect_language(text): |
|
|
|
if any(ch in text for ch in "abcdefghijklmnopqrstuvwxyz"): |
|
return "en" |
|
return "ur" |
|
|
|
welcome_message = "✨ خوش آمدید! اردو/انگلش چیٹ، ترجمہ، سوال جواب اور آواز کی سہولت۔" |
|
|
|
|
|
def process(context, tts_flag, src_lang, tgt_lang, question, audio): |
|
output_text = "" |
|
audio_output = None |
|
|
|
|
|
if audio: |
|
result = s2t_model(audio) |
|
text = result.get("text", "") |
|
output_text += f"🗣️ بول کر کہا: {text}\n\n" |
|
else: |
|
text = context |
|
|
|
|
|
if question.strip(): |
|
if not text.strip(): |
|
answer = "براہ کرم سوال کے لیے متعلقہ متن فراہم کریں۔" |
|
else: |
|
try: |
|
answer = qa_model(question=question, context=text)['answer'] |
|
except: |
|
answer = "جواب دستیاب نہیں" |
|
output_text += f"❓ سوال: {question}\n🧠 جواب: {answer}\n\n" |
|
|
|
|
|
translated = None |
|
if text.strip(): |
|
lang = detect_language(text) if src_lang == "Auto" else src_lang.lower() |
|
|
|
if lang in ["en", "english"]: |
|
translated = translator_en_ur(text)[0]['translation_text'] |
|
elif lang in ["ur", "urdu"]: |
|
translated = translator_ur_en(text)[0]['translation_text'] |
|
else: |
|
translated = "⚠️ صرف اردو اور انگلش معاونت یافتہ ہیں" |
|
|
|
output_text += f"🌐 ترجمہ: {translated}\n" |
|
|
|
|
|
if tts_flag and translated: |
|
tts_lang = 'ur' if tgt_lang.lower() == "urdu" else 'en' |
|
try: |
|
tts = gTTS(text=translated, lang=tts_lang) |
|
tts.save("output.mp3") |
|
audio_output = "output.mp3" |
|
except: |
|
audio_output = None |
|
|
|
return output_text, audio_output |
|
|
|
|
|
|
|
iface = gr.Interface( |
|
fn=process, |
|
inputs=[ |
|
gr.Textbox(label="متن یا سیاق"), |
|
gr.Checkbox(label="آواز میں سنیں؟"), |
|
gr.Radio(["Auto", "Urdu", "English"], label="ماخذ زبان (Source Language)"), |
|
gr.Radio(["Urdu", "English"], label="ہدف زبان (Target Language)"), |
|
gr.Textbox(label="سوال"), |
|
gr.Audio( type="filepath", label="آڈیو (اختیاری)") |
|
], |
|
outputs=[ |
|
gr.Textbox(label="نتیجہ"), |
|
gr.Audio(label="آڈیو آؤٹ پٹ") |
|
], |
|
title="🧠 Urdu-English AI QA + Translation + TTS", |
|
description=welcome_message |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|
|
|
|
|
|
|
|
|