Aida is a sophisticated AI assistant that combines voice interaction, text processing, and memory capabilities to provide a natural and context-aware conversational experience.
IMPORTANT: This project is in early development and is NOT production-ready!
- 🚧 Active Development: This project is under heavy development and changes frequently
- 🐛 Bugs Expected: You will encounter bugs, crashes, and incomplete features
- ⚗️ Experimental: Many features are experimental and may not work as expected
- 🔧 Breaking Changes: Updates may include breaking changes without notice
- ⚡ Unstable: Core functionality may be unstable or entirely non-functional
- Voice recognition may be unreliable
- Memory system is experimental and slow
- Limited error handling
- Incomplete documentation
Use at your own risk! This is currently a proof-of-concept and learning project.
- Voice and text interaction modes
- Wake word detection ("Jarvis")
- Real-time speech-to-text processing
- Natural text-to-speech responses
- Long-term memory and context awareness
- Web search capabilities
- Conversation history management
- Multi-user support
- Python 3.10+
- Docker (for Qdrant vector database)
- Required API keys:
- ElevenLabs (TTS)
- Deepgram (STT)
- Picovoice (Wake word)
- Anthropic Claude (LLM)
- Perplexity (Web search)
- OpenAI (Embeddings)
- Clone the repository:
git clone https://github.com/BurtTheCoder/aida.git
cd aida
- Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate # Unix/macOS
# or
.\venv\Scripts\activate # Windows
- Install required packages:
pip install -r requirements.txt
- Set up environment variables:
cp .env.example .env
# Edit .env with your API keys
- Start Qdrant database:
cd storage
docker-compose up -d
- Initialize memory system:
python setup_memory.py
Basic usage:
python main.py
Available command-line arguments:
--mode
: Choose between 'voice' or 'text' mode (default: voice)--debug
: Enable debug logging--no-tts
: Disable text-to-speech in text mode--user-id
: Specify user ID for memory persistence
Examples:
# Run in text mode
python main.py --mode text
# Run with debug logging
python main.py --debug
# Run for specific user
python main.py --user-id user123
aida/
├── config/ # Configuration files
├── core/ # Core functionality
├── modes/ # Interaction modes
├── services/ # Service implementations
├── storage/ # Database and persistence
├── tools/ # Agent Tools
├── utils/ # Helper utilities
└── main.py # Entry point
- Main assistant logic
- Tool management
- Input processing
- Long-term memory storage
- Context retrieval
- Memory management
- Wake word detection (services/wake_word.py)
- Speech-to-text (services/stt_service.py)
- Text-to-speech (services/tts_service.py)
- Web search (tools/web_search.py)
- Memory operations (tools/memory_tools.py)
- Create new service in
services/
- Add configuration in
config/
- Implement tool in
tools/
if needed - Update assistant to use new feature
Run tests:
python -m pytest tests/
Logs are handled by the custom logging system in utils/logging.py
. Enable debug logging with the --debug
flag.
- Fork the repository
- Create a feature branch
- Commit changes
- Submit pull request
- ElevenLabs for TTS
- Deepgram for STT
- Anthropic for Claude AI
- Picovoice for wake word detection
- Qdrant for vector storage