S.H.I.F.T. — MKII

Version évoluée de MKI, première version à intégrer une interface web

← Retour au projet global

Historique des versions

Logo

Version 2

Changements :
Hébergement de Single Page Application (SPA) : Le script fait office de serveur web de production. Il sert directement ton interface utilisateur (fichiers HTML/JS/CSS statiques situés dans le dossier /static) et gère le routage React.

API HTTP REST Classique :

POST /api/text : Permet d'envoyer une requête textuelle brute et de recevoir une réponse texte au format JSON standard.

POST /api/audio : Reçoit un fichier audio WAV (16kHz mono) enregistré par le navigateur, effectue la transcription STT en tâche de fond, interroge le LLM et renvoie le texte.

WebSocket Streaming Bidirectionnel Temps Réel : Via l'endpoint /ws/stream, le client (navigateur) envoie du texte et le serveur utilise le mode stream=True du LLM.

Forçage du Flush Réseau : Pour éviter que les paquets de texte ne restent bloqués dans le tampon réseau, le script utilise asyncio.sleep(0.001) après chaque token généré pour forcer une distribution instantanée au navigateur (effet d'écriture fluide à l'écran).

Support CORS : Intègre le middleware CORS pour autoriser des requêtes provenant d'autres domaines ou d'environnements de développement locaux (ex: un serveur de dev Vite/React sur le port 5173).

Logo

Version 1

Changements :
Architecture propre et modulaire : Toute la logique complexe de bas niveau des modèles (Silero, Whisper, Piper) est masquée derrière des classes dédiées, rendant le script principal très lisible.

VAD Simplifiée par RMS : Abandon de la dépendance lourde à PyTorch (Silero VAD) pour le script principal. La détection de la parole se fait par un calcul d'énergie quadratique moyenne (RMS) par rapport à un seuil fixe (THRESHOLD = 600).

Phase d'échauffement (Warm-up) : Au démarrage, le script injecte un faux prompt invisible dans le LLM pour forcer le chargement en cache de ses circuits. Cela évite le temps de latence (lag) lors de ta toute première vraie question.

Mécanisme Anti-Auto-Écoute : Applique un sleep(1.0) et vide entièrement la file d'attente audio immédiatement après que SHIFT a fini de parler. Cela évite que le micro ne capte le retour de sa propre voix via tes haut-parleurs.

Contrôle strict de la personnalité : Le prompt système force le modèle à s'interdire le Markdown (pas de gras, pas de listes), à utiliser un ton purement oral, direct, concis (2-3 phrases max) et à s'adresser à toi par "Monsieur" et "Vous".