Repository navigation
Portfolio vocal : v0 RAG, voix clonée, vrai corpus, sécurité et CI - #1
Merged
Merged
Conversation
CLAUDE.md consigne la topologie imposee, les modeles mesures et la dette assumee. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Contexte de build errone, variables absentes, fichiers illisibles en diff git. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Fil d'Ariane dans le texte embede, purge des points periemes, garde-fou A REMPLIR. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Refus hors perimetre, delimiteur anti-injection, endpoint def et non async def. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Export statique lisible backend eteint, parseur SSE maison, banniere de demonstration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Le test de pertinence verifie le chunk portant la reponse, pas le nom de fichier. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Plus aucune execution au niveau module. Jamais execute : dependances ROCm absentes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Rate-limit par visiteur sur Cf-Connecting-Ip, API native jointe par host.docker.internal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
…ming - Endpoint WebSocket /voice : STT Kyutai trame par trame, RAG, qwen3:8b en streaming, synthese phrase par phrase. - TTS Pocket dans un service separe (.venv-tts, 127.0.0.1:8001) : 27,95x temps reel sous torch ROCm contre 0,70x sous torch CPU. - num_ctx 8192 sur /chat et /voice : a 32768 le LLM debordait de la VRAM a cote du STT (10,5 t/s au lieu de 54,8). - think=False et consigne orale sur /voice (9,2 s de silence evitees). - Garde-fous : une session a la fois, question plafonnee a 30 s, socket muet coupe apres 10 s, trames hors format ignorees, etat STT reinitialise entre deux visiteurs. - Front : Chat.tsx remplace par VoiceChat.tsx (parler / ecouter). Mesure publique : premier son 2,3 a 2,6 s apres la fin de la question. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
- Onde reactive au signal reel : micro pendant l'ecoute (outremer), voix de l'assistant pendant la reponse (ambre), respiration en reflexion. - Etats explicites (connexion, ecoute, reflexion, reponse), bouton Arreter, raccourci Espace, main rendue a la fin de la voix et non du texte. - Historique des echanges, exemples de questions, 3 sources les mieux classees, messages d'erreur qui disent quoi faire. - Typographie Bricolage Grotesque / Source Serif 4, mode sombre, contrastes verifies, mouvement reduit respecte. - trailingSlash: /parcours repondait 403 en production (dossier sans index). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
TTS_VOIX accepte une voix du catalogue ou un etat .safetensors exporte. Defaut inchange (estelle). Le dossier des echantillons vocaux est ignore. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
- Corpus redige depuis le CV Canva et les README GitHub, sans coordonnees personnelles ; valide par l'interesse. - Front servi par defaut sur le vrai corpus : le bandeau demo disparait. - Prompt : interdiction d'attribuer souhaits, recherche d'emploi ou disponibilite absents des extraits (qwen3 inventait un poste recherche). - Test de pertinence recale sur le vrai corpus. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
CI : tests backend (sans pile GPU), tests + typecheck + build du front, build Docker de rag, gitleaks sur l'historique, pip-audit, npm audit. Actions epinglees par SHA, Dependabot hebdomadaire. Durcissement (audit security-auditor) : - API et Qdrant lies a 127.0.0.1 : exposes au LAN, ils contournaient le rate-limit et permettaient de vider ou empoisonner l'index. Traefik joint toujours l'API via host.docker.internal (verifie). - /voice refuse les Origin etrangeres (CORS ne couvre pas les WebSockets). - /docs, /redoc et /openapi.json fermes. - CSP et Permissions-Policy (verifiees dans Chromium, zero violation). - Dependances vulnerables mises a jour (h2, hpack, idna, urllib3, aiohttp, pillow, requests). - torch et le STT importes paresseusement : API testable sans GPU. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Chatterbox et perth imposaient setuptools<81 (vulnerable). Desinstalles de .venv-rocm avec leurs dependances orphelines et peft ; STT, TTS et tests reverifies, pip-audit sans vulnerabilite sur les deux venvs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
- Titre et description avec nom et poste, titre dedie a /parcours/. - sitemap.xml et robots.txt generes au build, URL canoniques. - Open Graph (image 1200x630) et donnees structurees schema.org Person, reliees a LinkedIn et GitHub (sameAs). - En-tete commun avec le nom, LinkedIn et GitHub ; resume lisible sur l'accueil pour les moteurs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
Onde du visiteur (outremer) et de l'assistant (ambre) sur fond clair : SVG, favicon.ico 16/32/48 et icone Apple 180. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
- AudioContext crees et reveilles dans le geste, avant l'attente du micro : apres un await, Safari iOS les laisse suspendus (muets). - Frequence materielle au lieu de 24 kHz imposes ; micro reechantillonne en JavaScript (Reechantillonneur, teste), lecture en buffers 24 kHz. - Session audio iOS en lecture avant la reponse (API Audio Session) : evite l'ecouteur d'appel et la coupure par le mode silencieux. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résumé
Portfolio vocal en production sur https://mathiscapart.xyz : le visiteur pose sa question à voix haute, l'assistant répond avec la voix clonée de Mathis, uniquement à partir de son parcours.
qwen3:8b→ Pocket TTS (voix clonée), via WebSocket/voice. Premier son ~2,3 s après la fin de la question (mesuré en public)./voice,/docsfermé, CSP et Permissions-Policy, dépendances vulnérables mises à jour, Chatterbox inutilisé retiré.Vérifications
docker compose build rag).Reste ouvert
0.0.0.0(réglage machine Windows, décision en attente).🤖 Generated with Claude Code
https://claude.ai/code/session_01VmvgEmDbLpTURKTGz4QiDZ