AutoDine is an innovative AI-powered restaurant ordering system that combines voice recognition, natural language processing, and real-time inventory management to create a seamless dining experience. The system features "Eldia," an intelligent voice assistant that can process customer orders, check ingredient availability, and manage the entire ordering workflow through natural conversation.
- Voice-Controlled Ordering: Real-time speech-to-text and text-to-speech capabilities
- AI Assistant (Eldia): Intelligent conversation handling with OpenAI integration
- Real-time Inventory Management: Dynamic ingredient tracking and feasibility checking
- Interactive Dashboard: Live order updates and system status monitoring
- Menu Customization: Support for ingredient modifications and special requests
- Multi-Modal Interface: Web dashboard and voice interaction capabilities
The project consists of several interconnected components:
-
Django Backend (
smart_food_frenzy/)- RESTful API endpoints for order processing
- Database models for menu items, ingredients, and orders
- Real-time inventory management
- Server-Sent Events (SSE) for live updates
-
Voice Assistant System (
llm.py,playground/eldia.py)- OpenAI GPT integration for natural language processing
- Real-time speech recognition and synthesis
- Function calling for order validation and placement
-
Frontend Interface (
smart_food_frenzy/static/)- Interactive menu display
- Real-time order dashboard
- Responsive web design
- Django 5.1.7 - Web framework
- SQLite - Database
- OpenAI API - Natural language processing
- RealtimeSTT - Speech-to-text conversion
- RealtimeTTS - Text-to-speech synthesis
- HTML5/CSS3 - User interface
- JavaScript - Real-time updates and interactivity
- Server-Sent Events - Live data streaming
- OpenAI GPT - Conversation handling
- Coqui TTS - Text-to-speech engine
- Faster Whisper - Speech recognition
- Python 3.8+
- OpenAI API key
- Audio input/output devices
- Windows 10/11 (for some voice features)
git clone https://github.com/arielfayol37/AutoDine
cd AutoDinepip install -r requirements.txtCreate an api_keys.json file in the root directory:
{
"openai_key": "your-openai-api-key-here"
}cd smart_food_frenzy
python manage.py migrate
python manage.py createsuperuser- Start Django Server
cd smart_food_frenzy
python manage.py runserver- Launch Voice Assistant
python llm.py- Access Web Interface
- Open
http://localhost:8000in your browser - Navigate to the dashboard for real-time order monitoring
- Open
- Activate Eldia: The voice assistant will greet you and ask for your order
- Place Order: Speak naturally about what you'd like to order
- Customize: Request modifications like "extra cheese" or "no onions"
- Confirmation: Eldia will confirm your order and check ingredient availability
- Completion: Once confirmed, your order is placed and processed
- Real-time Order Updates: Live streaming of order status
- Inventory Monitoring: Current ingredient levels
- Menu Display: Interactive menu with customization options
- Order History: Track completed orders
AutoDine/
βββ smart_food_frenzy/ # Django backend
β βββ restaurant/ # Main app
β β βββ models.py # Database models
β β βββ views.py # API endpoints
β β βββ templates/ # HTML templates
β β βββ static/ # CSS, JS, images
β βββ manage.py
β βββ settings.py
βββ playground/ # Development and testing
β βββ eldia.py # Voice assistant implementation
β βββ test_*.py # Various test files
βββ llm.py # Main LLM integration
βββ utils.py # Utility functions
βββ prompts.json # AI system prompts
βββ requirements.txt # Python dependencies
βββ README.md # This file
POST /check_feasible_items/- Check ingredient availabilityPOST /order_items/- Place new ordersGET /sse/- Server-sent events for real-time updatesGET /menu/- Display menu itemsGET /ingredients_list- Show current inventory
GET /llm_thinking/<str:set_thinking>- Control thinking indicatorGET /llm_recording/<str:set_recording>- Control recording indicator
- MenuItem: Available food items with descriptions and prices
- Ingredient: Individual ingredients with stock levels and costs
- Order: Customer orders with timestamps and completion status
- OrderItem: Individual items in orders with modifications
- Inventory: Real-time ingredient tracking
- Add the item to the database through Django admin
- Update the system prompts in
prompts.json - Add corresponding images to
static/images/
- Edit
prompts.jsonfor conversation behavior - Modify
llm.pyfor function calling logic - Update
playground/eldia.pyfor additional features
cd playground
python test_sr.py # Speech recognition testing
python test_stt.py # Speech-to-text testing
python test_request.py # API request testing- Access
http://localhost:8000/menu/for menu display - Use
http://localhost:8000/ingredients_listfor inventory view