import gradio as gr import speech_recognition as sr from googletrans import Translator import requests import os # Initialize recognizer and translator recognizer = sr.Recognizer() translator = Translator() # Language settings mapping language_mapping = { "Tamil": ('ta-IN', 'ta', 'en'), "English": ('en-US', 'en', 'en'), "Hindi": ('hi-IN', 'hi', 'en'), "Malay": ('ms-MY', 'ms', 'en') } def speech_to_text(language): """Convert speech to text, translate, and query the /ask endpoint""" if language not in language_mapping: return "Invalid language selection", "", "" recognition_lang, src_lang, dest_lang = language_mapping[language] with sr.Microphone() as source: print(f"Listening for {recognition_lang}...") recognizer.adjust_for_ambient_noise(source) audio = recognizer.listen(source) try: text = recognizer.recognize_google(audio, language=recognition_lang) print(f"Recognized: {text}") # Translate text translated = translator.translate(text, src=src_lang, dest=dest_lang) print(f"Translated: {translated.text}") # Send to /ask API API_KEY = os.getenv("RAG_API_KEY") url = "https://aitestingworkspace-aiagentchatup.hf.space/ask" headers = {"Authorization": f"Bearer {API_KEY}"} response = requests.post(url=url, data={"question": translated.text}, headers=headers) return text, translated.text, response.json().get("answer", "No response received.") except sr.UnknownValueError: return "Could not understand audio", "", "" except Exception as e: return str(e), "", "" # Gradio Interface demo = gr.Interface( fn=speech_to_text, inputs=gr.Dropdown(choices=list(language_mapping.keys()), label="Select Language"), outputs=[ gr.Textbox(label="Recognized Text"), gr.Textbox(label="Translated Text"), gr.Textbox(label="Server Response") ], title="Speech to Text & Translation", description="Speak in the selected language, and the system will transcribe, translate, and fetch a response.", ) demo.launch()