Spaces:
Runtime error
Runtime error
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() |