File size: 2,811 Bytes
77c2b9f
2930d07
 
77c2b9f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2930d07
77c2b9f
2930d07
 
 
77c2b9f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1912209
77c2b9f
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
67
68
69
70
71
72
73
74
75
76
77
78
79
import speech_recognition as sr
from gtts import gTTS
import os
from transformers import pipeline

# 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 Google Text-to-Speech (gTTS)
def speak(text):
    tts = gTTS(text=text, lang='en')
    tts.save("output.mp3")
    os.system("mpg321 output.mp3")  # For environments that support audio playback

# 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()