nagasurendra's picture
Update app.py
989231a verified
raw
history blame
3.47 kB
import gradio as gr
from gtts import gTTS
import tempfile
import os
import speech_recognition as sr
import threading
import time
# Store cart in a temporary storage
cart = []
# Define the menu items dynamically
menu_items = {
"Pizza": 10.99,
"Burger": 8.49,
"Pasta": 12.99,
"Salad": 7.99,
"Soda": 2.49
}
def generate_voice_response(text):
tts = gTTS(text)
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
temp_file.close()
tts.save(temp_file.name)
return temp_file.name
def process_audio(audio_path):
global cart
recognizer = sr.Recognizer()
response = ""
try:
with sr.AudioFile(audio_path) as source:
audio = recognizer.record(source)
input_text = recognizer.recognize_google(audio)
print("User said:", input_text)
if "menu" in input_text.lower():
response = "Here is our menu:\n"
for item, price in menu_items.items():
response += f"{item}: ${price:.2f}\n"
response += "\nWhat would you like to add to your cart?"
elif any(item.lower() in input_text.lower() for item in menu_items):
for item in menu_items:
if item.lower() in input_text.lower():
cart.append(item)
total = sum(menu_items[cart_item] for cart_item in cart)
response = f"{item} has been added to your cart. Your current cart includes:\n"
for cart_item in cart:
response += f"- {cart_item}: ${menu_items[cart_item]:.2f}\n"
response += f"\nTotal: ${total:.2f}. Would you like to add anything else?"
break
elif "final order" in input_text.lower() or "submit order" in input_text.lower():
if cart:
total = sum(menu_items[cart_item] for cart_item in cart)
response = "Your final order includes:\n"
for item in cart:
response += f"- {item}: ${menu_items[item]:.2f}\n"
response += f"\nTotal: ${total:.2f}. Thank you for ordering!"
cart = [] # Clear cart after finalizing order
else:
response = "Your cart is empty. Would you like to order something?"
elif "stop" in input_text.lower():
response = "Stopping voice assistant."
else:
response = "I didn’t quite catch that. Please tell me what you’d like to order."
except sr.UnknownValueError:
response = "Sorry, I didn’t catch that. Could you please repeat?"
except Exception as e:
response = f"An error occurred: {str(e)}"
audio_response_path = generate_voice_response(response)
return response, audio_response_path
def background_listen():
while True:
print("Listening...")
time.sleep(2)
# Gradio Interface
def run_assistant(audio):
transcription, audio_response_path = process_audio(audio)
os.system(f"start {audio_response_path}") # Automatically play the response audio
return transcription
with gr.Blocks() as demo:
gr.Markdown("# Voice-Activated Restaurant Assistant")
audio_input = gr.Audio(type="filepath", label="Speak Now")
output_text = gr.Textbox(label="Transcription")
demo.launch()