bruno 1f653dedcd chore: nettoyage repo JARVIS v3 + docs à jour
- Suppression 37 fichiers scratch/debug (Pipecat exploration : _debug*, check_*, test_*, ws_test*, bot.py, start.sh, run_bot*, run_direct.py)
- Garde uniquement l'essentiel : bot_direct.py, launcher.py, README.md, .gitignore
- .gitignore renforcé (patterns scratch/debug)
- README réécrit selon l'état réel (Phase 1 terminée, Phase 2 audio partielle TTS/STT)
- Roadmap 6 phases documentée
2026-08-26 09:59:28 -04:00

JARVIS v3 — Assistant Vocal Intelligent

Assistant vocal local connecté à l'agent Hermes (DeepSeek v4). Contexte multi-tours, interface navigateur, synthèse vocale (TTS), liaison vocale (STT navigateur).

Était le projet jarvis-pipecat (historique nommé d'après Pipecat, non utilisé actuellement).

🏗️ Architecture

┌──────────────┐   WebSocket    ┌──────────────┐   HTTP REST    ┌──────────────┐
│  Navigateur  │ ◄────────────► │  bot_direct  │ ◄─────────────► │ Hermes API   │
│  (HTML/JS)   │  ws://:7081/ws │  .py :7081   │  :8642 /v1/chat │ A.L.E.X.A.   │
│  🎤 STT 🔊   │                │   TTS edge   │   /completions  │ (DeepSeek v4)│
└──────────────┘                │  (serveur)   │                 └──────────────┘
                                └──────┬───────┘
                                       ▼ Infisical (clé) / fallback .env
  • STT : Web Speech API navigateur (Chrome) — nécessite HTTPS ou flag (voir Bloqueurs).
  • TTS : edge-tts côté serveur (voix fr-FR-DeniseNeural), MP3 → base64 → <audio>.
  • LLM : API Hermes (Hermes Agent / DeepSeek v4), temperature 0.8, max 300 tokens, 20 messages de contexte.

📦 Fichiers

Fichier Rôle
bot_direct.py Serveur WebSocket + interface HTML embarquée (entrée principale)
launcher.py Récupère la clé Hermes (Infisical → fallback .env) puis lance bot_direct.py
README.md Ce document

🚀 Démarrage

Service systemd (recommandé)

# Activer + démarrer
systemctl --user enable --now jarvis-v3

# Statut / logs
systemctl --user status jarvis-v3
journalctl --user -u jarvis-v3 -f

# Redémarrer après modification de code
rm -rf ~/workspace/jarvis-pipecat/__pycache__/
systemctl --user restart jarvis-v3

# Arrêter
systemctl --user stop jarvis-v3

Manuel (debug)

cd ~/workspace/jarvis-pipecat
source venv/bin/activate
python3 launcher.py

🌐 Accès

⚙️ Configuration

Variable Valeur Description
JARVIS_PORT 7081 Port d'écoute
HERMES_API_KEY — Clé API Hermes (via Infisical ou .env)
HERMES_URL http://localhost:8642/v1/chat/completions Endpoint Hermes

La clé est récupérée par launcher.py : Infisical (/hermes-claw/API_SERVER_KEY) puis fallback ~/workspace/.env (HERMES_ALEXA_KEY).

📊 Roadmap

Phase Contenu Statut
Phase 1 Chat texte WebSocket → Hermes (contexte 20 msgs, reconnexion auto, timeout) ✅ Terminé
Phase 2 Audio — TTS edge-tts + STT navigateur 🟡 Partiel (TTS ✅ / STT ⚠️)
Phase 3 Stabilité & qualité vocale — STT local, TTS naturel, streaming 🔜
Phase 4 Orchestration Pipecat — flux STT→LLM→TTS, barge-in, WebRTC 🔜
Phase 5 Fonctionnalités — wake word, tool calling, mémoire Honcho 📋
Phase 6 Production — HTTPS/WSS, auth, multi-user, Docker, monitoring 📋

Détail complet : Obsidian 3.5_PROJETS/JARVIS/JARVIS.md (roadmap + statut).

⚠️ Bloqueurs connus

  1. STT network error — la Web Speech API est bloquée par Chrome en HTTP. → Solution rapide : flag chrome://flags/#unsafely-treat-insecure-origin-as-secure + http://openclaw1.dev.home:7081. → Solution durable (Phase 3) : Whisper local (faster-whisper / whisper.cpp) — STT côté serveur, plus HTTPS requis.
  2. TTS non streamé — attend la fin de la réponse LLM (~7 s ajoutées). Cible Phase 3 : < 5 s.
  3. HTTP non chiffré — pas encore de HTTPS/WSS (Phase 6).
  4. Toujours en écoute impossible — il faut déclencher le micro ; wake word prévu Phase 5.

🛠️ Dépendances

websockets==16.0
httpx
edge-tts

→ installées dans venv/.

📝 Notes techniques (pitfalls)

  • websockets 16.0 : respond() ne prend que (status, text). Pour headers custom, retourner un objet Response du module websockets.http11 (Response, Headers).
  • Cache navigateur : bot_direct.py renvoie Cache-Control: no-store sur les pages HTML.
  • Cache Python : après modification de bot_direct.py, supprimer __pycache__/ avant le redémarrage.
  • Pipecat abandonné pour le moment : API 1.4.0 massivement refactorée (LLMMessagesFrame supprimée, LLMContext n'est plus un processeur). À réévaluer en Phase 4.
  • Ne pas committer les fichiers scratch/debug : .gitignore couvre _check*, _debug*, test_*.py, check_*.py, *_out.txt, etc.

📄 Licence

Projet personnel — Bruno Charest, 2026.

S
Description
JARVIS v3 — Assistant vocal WebSocket + Hermes A.L.E.X.A.
Readme
93 KiB
Languages
Python 100%