File size: 2,016 Bytes
b782a3b
2930d07
 
b782a3b
77c2b9f
b782a3b
77c2b9f
2930d07
 
b782a3b
 
77c2b9f
b782a3b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77c2b9f
 
 
b782a3b
 
 
77c2b9f
 
b782a3b
 
 
 
77c2b9f
 
b782a3b
77c2b9f
b782a3b
 
 
 
 
 
 
 
 
77c2b9f
b782a3b
 
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
import speech_recognition as sr
from gtts import gTTS
import os
import time

# Function to speak using Google Text-to-Speech
def speak(text):
    tts = gTTS(text=text, lang='en')
    tts.save("output.mp3")
    os.system("start output.mp3")  # For Windows
    # os.system("mpg321 output.mp3")  # Uncomment for Linux

# Function to listen and recognize speech using Google Speech Recognition
def listen():
    recognizer = sr.Recognizer()

    with sr.Microphone() as source:
        print("Listening for your order...")
        audio = recognizer.listen(source)
    
    try:
        # Using Google Speech Recognition to convert speech to text
        order = recognizer.recognize_google(audio)
        print(f"Recognized Order: {order}")
        return order
    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

# Sample menu data
menu = ["Veg Samosas", "Chicken Pakoda", "Fish Fry", "Dal Fry", "Paneer Butter Masala"]

# Function to process the order
def process_order(order):
    response = "You have ordered the following items: "
    order = order.lower()

    ordered_items = []
    for item in menu:
        if item.lower() in order:
            ordered_items.append(item)

    if ordered_items:
        response += ", ".join(ordered_items) + ". Is that correct?"
        speak(response)
        time.sleep(2)
        return response
    else:
        speak("Sorry, I couldn't find any items matching your order. Can you try again?")
        return "Sorry, I couldn't find any items matching your order."

# Main function
def start_assistant():
    speak("Welcome to the Voice Food Ordering Assistant!")
    time.sleep(1)
    speak("Please tell me what you would like to order.")
    while True:
        order = listen()
        if order:
            process_order(order)

if __name__ == "__main__":
    start_assistant()