Aller au contenu

Le Sentier — les vidéos

Le Sentier est une série de courtes vidéos, une par fonctionnalité, à mi-chemin entre la démonstration et la documentation. Chaque vidéo est une étape : un dossard au départ, des ravitos (les chapitres, cliquables sur le profil altimétrique du lecteur) et une arche d'arrivée qui renvoie vers la page de documentation correspondante.

On y suit Camille, une athlète fictive qui prépare le Trail des Crêtes (42 km, 2 100 m D+). Toutes les données montrées sont inventées.

Dans le lecteur

Narration en français ou en anglais (sélecteur de langue), sous-titres (bouton ou touche c), espace pour lecture/pause, flèches pour ±5 s. Le tableau de bord n'existe qu'en français : les versions anglaises gardent ses captures, légendées en anglais.

Ligne de départ

Étape 01 · 1 min 45

Ligne de départ

Du git clone au premier /today : installation, authentification Garmin, /coach-setup et /coach-doctor en moins de deux minutes.

Regarder · English (1 min 43) · La documentation

Le réveil du traileur

Étape 02 · 1 min 19

Le réveil du traileur

HRV, FC de repos et readiness lues ensemble chaque matin : le verdict, sa raison, et comment régler le bilan.

Regarder · English (1 min 18) · La documentation

Le plan qui sait dire non

Étape 03 · 1 min 46

Le plan qui sait dire non

Sept garde-fous calculés relisent la semaine avant son écriture et son envoi au calendrier Garmin : un second avis déterministe et testé.

Regarder · English (1 min 42) · La documentation

Parler à son coach

Étape 04 · 1 min 33

Parler à son coach

Le chat du tableau de bord : trace des outils, carte d'approbation, politique de permissions, budget et fournisseurs.

Regarder · English (1 min 37) · La documentation

Tour du propriétaire

Étape 05 · 1 min 29

Tour du propriétaire

Visite guidée du tableau de bord local, en lecture seule : une question par vue.

Regarder · English (1 min 26) · La documentation

La course, segment par segment

Étape 06 · 1 min 43

La course, segment par segment

Du GPX au plan de course : allures par segment, énergie, matériel obligatoire, montre, puis débrief plan contre réalisé.

Regarder · English (1 min 41) · La documentation

Disséquer une sortie

Étape 07 · 1 min 39

Disséquer une sortie

Une sortie trail passée au scalpel : FIT, zones, allure ajustée, dérive, montées, durabilité, HRR, énergie, comparaison.

Regarder · English (1 min 40) · La documentation

Ravito

Étape 08 · 1 min 43

Ravito

Une phrase libre devient des données : le modèle extrait, le script calcule, et ne devine jamais un produit.

Regarder · English (1 min 44) · La documentation

Usure

Étape 09 · 1 min 47

Usure

Du kilométrage à l'inspection photo : alerte de seuil, verdict en quatre couleurs, indices de foulée (jamais un diagnostic), foulée mesurée, kits et bilan de carrière.

Regarder · English (1 min 42) · La documentation

Le coach dans la poche

Étape 10 · 1 min 40

Le coach dans la poche

La machine coach, la synchronisation automatique (horaires ou veille), la notification push, Remote Control et les commandes courtes, le tableau de bord mobile, et ce qui n'est pas possible.

Regarder · English (1 min 37) · La documentation

Trois voix, une décision

Étape 11 · 1 min 46

Trois voix, une décision

La même décision dite par trois styles de coaching : le ton, la fermeté et la longueur se règlent, jamais le verdict.

Regarder · English (1 min 43) · La documentation

Vos données, votre sentier

Étape 12 · 1 min 42

Vos données, votre sentier

Vos données restent des fichiers Markdown chez vous : un bloc validé, un index jetable, un tableau de bord local, et ce qui quitte la machine.

Regarder · English (1 min 43) · La documentation

Comment c'est fait

Aucun fichier vidéo n'est stocké : chaque image est dessinée en JavaScript sur un canvas, à partir du seul temps écoulé. Une vidéo se lit, se met en pause et se parcourt comme une vraie, mais pèse quelques dizaines de kilo-octets (plus sa piste de voix).

Élément Où Rôle
Moteur docs/video/engine/ Lecteur, profil altimétrique, dossard, arche d'arrivée, outils de dessin
Script docs/video/<étape>/script.json Découpage en scènes et texte dit, en français et en anglais
Scènes docs/video/<étape>/scenes.js Le dessin de chaque scène, calé sur les répliques
Voix audio/<langue>.m4a, timing.js, subs.<langue>.vtt Générés par scripts/video_narration.py
Captures docs/video/shots/ Le vrai tableau de bord, servi sur l'espace de travail fictif de Camille

La voix est une synthèse vocale locale (Kokoro, hors ligne) : ff_siwis en français, bm_george en anglais. Les mots qu'elle prononce mal se corrigent dans docs/video/lexicon.json, sans toucher aux sous-titres.

D'autres moteurs se choisissent avec --engine (le choix est noté dans timing.js) :

Moteur Où Lexique IPA [[…]] Prérequis
kokoro (défaut) local, ONNX oui modèle dans ~/.cache/kokoro-onnx
azure Azure AI Speech, palier gratuit F0 oui (SSML <phoneme>) AZURE_SPEECH_KEY, AZURE_SPEECH_REGION
edge mêmes voix Microsoft, sans compte non réseau ; point d'accès non officiel, pour écouter seulement
kyutai local, MLX (Apple Silicon) non ~4 Go téléchargés au premier lancement
chatterbox local, PyTorch, voix clonable non ~3 Go téléchargés au premier lancement

Un moteur sans IPA lit le mot d'origine, sauf entrée dédiée sous "<langue>@<moteur>" dans le lexique (ex. "fr@kyutai": {"readiness": "rédinesse"}). Pour comparer avant de choisir, --sample écrit l'extrait d'une scène hors de la série :

uv run --with kokoro-onnx --with soundfile scripts/video_narration.py bilan-matinal \
    --sample triptych --engine kyutai --voice fr=unmute-prod-website/developpeuse-3.wav --out /tmp/voix
# 1. l'espace de travail fictif de Camille, puis les captures du tableau de bord
python3 scripts/video_demo_workspace.py /tmp/camille
uv run --with playwright scripts/video_capture.py

# 2. la voix, le minutage et les sous-titres (modèle Kokoro dans ~/.cache/kokoro-onnx)
uv run --with kokoro-onnx --with soundfile scripts/video_narration.py garde-fous

# 3. la galerie de cette page et les vignettes
uv run --with playwright scripts/video_gallery.py --posters

# 4. un MP4 (voix + sous-titres désactivables), ou toute la série
uv run --with playwright scripts/render_video.py --episode garde-fous --lang en
uv run --with playwright scripts/render_video.py --episode all --burn-subs

Le palier B des tests vérifie que le minutage, la galerie et les vignettes sont à jour (python3 scripts/video_narration.py --check, python3 scripts/video_gallery.py --check).