# 🗣️ Darija Speech Recognition MVP
A **Minimum Viable Product (MVP)** for speech recognition in **Moroccan Darija** (Moroccan Arabic dialect). This is a proof-of-concept project that recognizes three basic voice commands using a small, self-collected dataset.
## 🎯 Project Overview
MVP Scope: This project currently recognizes 3 basic Darija commands:
🚪 "حل الباب" (ḥall bab) - Open the door
💡 "شعل الضوء" (šaʿʿal ḍ-ḍaw) - Turn on the light
📺 "تفي الضو" (tfayeḍ t-talfaza) - Turn on the TV
**Current Status:** This is an early-stage experiment with a limited dataset collected manually. The goal is to demonstrate the feasibility of Darija speech recognition and serve as a foundation for future expansion.
### What's included:
- 🤖 Basic neural network model for 3-command recognition
- 🎤 Simple CLI tool to test voice commands
- 📊 Small training dataset (self-collected)
- 📓 Jupyter notebook showing the training process
- 🔧 Basic prediction and testing scripts
### Limitations:
- **Limited vocabulary:** Only 3 commands currently supported
- **Small dataset:** Training data is limited and self-collected
- **Prototype quality:** This is an MVP/proof-of-concept, not production-ready
- **Accuracy:** Recognition accuracy may vary due to dataset size
---
## 🧠 Model Architecture & Technology Stack
### Deep Learning Models Used
#### 1. **Primary Model: Multi-Layer LSTM Network**
```
Input: MFCC Features (40 features × 100 time steps)
↓
LSTM Layer 1: 128 units (return_sequences=True)
↓
Dropout: 0.3
↓
LSTM Layer 2: 64 units (return_sequences=True)
↓
Dropout: 0.3
↓
LSTM Layer 3: 32 units
↓
Dropout: 0.3
↓
Dense Layer 1: 64 units (ReLU activation)
↓
Dropout: 0.5
↓
Dense Layer 2: 32 units (ReLU activation)
↓
Output Layer: N classes (Softmax activation)
```
**Why LSTM?**
- **Sequential Processing**: Speech is inherently sequential data
- **Long-term Dependencies**: Can remember patterns across time
- **Variable Length Handling**: Adapts to different speech durations
- **T …