File size: 2,275 Bytes
9e41949
97e62fa
 
 
 
9e41949
97e62fa
 
 
9e41949
97e62fa
 
9e41949
 
 
 
97e62fa
9e41949
 
97e62fa
9e41949
 
 
 
 
 
 
 
 
 
 
97e62fa
 
9e41949
97e62fa
 
 
9e41949
 
97e62fa
9e41949
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
548bd0a
1208e67
9e41949
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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()