STT / app_flask.py
Ansaribinhyder's picture
Updated to gradio
9e41949
###################This is the Existing CODE########################################
from flask import Flask, render_template, request, jsonify
import speech_recognition as sr
from googletrans import Translator
import requests
import os
# import pyttsx3
app = Flask(__name__)
# Initialize recognizer and translator
recognizer = sr.Recognizer()
translator = Translator()
# engine = pyttsx3.init()
# Language settings mapping
language_mapping = {
1: ('ta-IN', 'ta', 'en'), # Tamil
2: ('en-US', 'en', 'en'), # English
3: ('hi-IN', 'hi', 'en'), # Hindi
4: ('ms-MY', 'ms', 'en') # Malay
}
@app.route('/')
def index():
return render_template("index.html")
# def speak(text):
# engine.say(text)
# engine.runAndWait()
@app.route('/speech-to-text', methods=['POST'])
def speech_to_text():
"""Convert speech to text, translate, and query the /ask endpoint"""
language = int(request.form.get("language", 0))
if language not in language_mapping:
return jsonify({"error": "Invalid language selection"}), 400
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")
# Hugging Face API endpoint
url = "https://aitestingworkspace-aiagentchatup.hf.space/ask"
# Headers with authentication
headers = {
"Authorization": f"Bearer {API_KEY}"
}
response = requests.post(url=url,data={"question": translated.text},headers=headers)
# # Get response and speak it
# server_response = response.json().get('answer', 'No response received.')
# print(f"Server Response: {server_response}")
# speak(server_response)
return jsonify({
"recognized_text": text,
"translated_text": translated.text,
"server_response": response.json()['answer']
})
except sr.UnknownValueError:
return jsonify({"error": "Could not understand audio"}), 400
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)