Assistant vocal intelligent 100% offline pour la domotique résidentielle avec reconnaissance faciale et traitement du langage naturel local.
Assistant vocal + visuel qui reconnaît les occupants, comprend le contexte, commande la domotique et répond en temps réel.
Aucune donnée biométrique, texte ou audio ne quitte le logement : LLM, Vision et TTS sont auto-hébergés.
Tous les scripts sont Python 3.11 ; chaque fonction est un micro-service ou un thread indépendant, remplaçable facilement.
┌───────────┐ MJPEG/USB ┌────────────────────┐ │ Webcam │───────────►│ Reconnaissance │ └───────────┘ │ faciale (OpenCV) │ │ reco.py │ └─────────┬───────────┘ │ JSON (maj à chaud) ▼ personnes_detectees.json │ ▼ ┌──────────────┐ REST ┌────────────────────┐ │ Interface │◄──────│ Orchestrateur │ │ utilisateur │ │ chat_loop.py │ │ (CLI / STT) │──────►│ (prompts LLM) │ └──────────────┘ └─────────┬──────────┘ │ streaming tokens ▼ LM Studio (Gemma-2-2b-IT) │ ▼ file_vocale (Queue) │ /tts JSON ▼ Micro-service Flask TTS
Fichier: reconnaissance.py
Rôle: Détection et identification des visages via webcam
Points clés: 30 FPS sur CPU ; stocke les visages inconnus
Fichier: lfw_encodings.pickle
Rôle: Stockage des empreintes faciales
Points clés: 13k visages LFW ; 150 Mo RAM
Fichier: chat_loop.py
Rôle: Gestion du flux conversationnel
Points clés: Prompt engineering dynamique avec Gemma-2-2b-IT
Fichier: profils/*.json
Rôle: Personnalisation des interactions
Points clés: Métadonnées linguistiques et stylistiques
Fichier: test_tts.py
Rôle: Conversion texte-parole
Points clés: Latence 200-300 ms ; Flask + edge-tts
Fichier: apprentissage_auto.py
Rôle: Ajout de nouveaux visages
Points clés: Déclenché après saisie manuelle
reconnaissance.py capture une frame, détecte les bounding boxes puis calcule l'encodage (HOG ou CNN).
Latence: 25-35 ms
face_recognition.compare_faces → nom ou "Inconnu". Mise à jour du JSON de présence.
Latence: 1-2 ms
chat_loop.py lit la présence, charge les profils et construit le prompt contextuel.
Latence: 2 ms
Streaming REST ; chaque token est filtré et imprimé ; détection de ponctuation pour découpage.
Latence: 25 ms/token
File file_vocale → POST /tts ; edge-tts génère l'audio, converti et joué.
Latence: 200-400 ms
pip install opencv-python face_recognition dlib requests edge-tts pydub simpleaudio inputimeout emoji keyboard flask
# Pré-encodage (~30 min sur RPi 5) python encode_lfw.py # Lancement des services Terminal A: python reconnaissance.py Terminal B: python test_tts.py Terminal C: python chat_loop.py
Le projet combine Vision temps réel (OpenCV+dlib), LLM local (Gemma-2-2b-IT), TTS neuronal et un orchestrateur Python qui relie le tout via des queues thread-safe. Le code reste lisible, chaque composant peut être remplacé, et aucune donnée sensible ne sort de la maison : vous pouvez donc lire, tester, modifier, déployer en quelques heures.