Spaces:
Build error
Build error
import speech_recognition as sr | |
import pyttsx3 | |
from transformers import pipeline | |
import random | |
# Initialize the speech engine | |
engine = pyttsx3.init() | |
# Menu data from the second image (hardcoded for simplicity) | |
menu = { | |
"Appetizer": ["Veg Samosas", "Cut Mirchi", "Onion", "Spinach", "Mixed Vegetable"], | |
"Pakodas": ["Veg Pakoda", "Chicken Pakoda", "Fish Pakoda"], | |
"Manchurian": ["Vegetable", "Paneer", "Chicken", "Fish", "Jhinga"], | |
"Chilly": ["Gobi", "Paneer", "Chicken", "Fish", "Shrimp"], | |
"Chef's Special": ["Murgh (Chicken)", "Gosht (Goat)", "Jhinga (Shrimp)", "Fish Fry"], | |
"Vegetarian Entree": ["Dal Fry", "Dal Makhani", "Channa Masala", "Aloo Gobi Masala", "Saag Paneer"], | |
"Chettinad": ["Egg", "Murgh (Chicken)", "Gosht (Goat)", "Jhinga (Shrimp)", "Crab"], | |
"Butter Masala": ["Chicken", "Shrimp", "Gosht (Goat)"] | |
} | |
# Initialize the speech recognition | |
recognizer = sr.Recognizer() | |
# Function to speak a text using text-to-speech | |
def speak(text): | |
engine.say(text) | |
engine.runAndWait() | |
# Function to listen to user's voice | |
def listen(): | |
with sr.Microphone() as source: | |
print("Listening for your order...") | |
audio = recognizer.listen(source) | |
try: | |
# Using Google's speech recognition | |
return recognizer.recognize_google(audio) | |
except sr.UnknownValueError: | |
speak("Sorry, I could not understand that. Could you please repeat?") | |
return None | |
except sr.RequestError: | |
speak("Sorry, there was an issue with the service.") | |
return None | |
# Function to process the order | |
def process_order(order): | |
response = "You have ordered the following: " | |
order = order.lower() | |
# Check for matching menu items | |
ordered_items = [] | |
for category, items in menu.items(): | |
for item in items: | |
if item.lower() in order: | |
ordered_items.append(item) | |
if ordered_items: | |
response += ', '.join(ordered_items) + ". Is that correct?" | |
speak(response) | |
confirmation = listen() | |
if confirmation and "yes" in confirmation.lower(): | |
speak("Thank you for your order. It will be ready shortly!") | |
else: | |
speak("Please tell me again what you'd like to order.") | |
else: | |
speak("Sorry, I couldn't find any items matching your order. Can you try again?") | |
# Main function to start the assistant | |
def start_assistant(): | |
speak("Welcome to the Voice Food Ordering Assistant!") | |
speak("What would you like to order today?") | |
while True: | |
order = listen() | |
if order: | |
process_order(order) | |
else: | |
speak("Sorry, I didn't catch that.") | |
# Run the assistant | |
if __name__ == "__main__": | |
start_assistant() | |