Speak Summary
Transformez du texte écrit en audio que quelqu'un aura envie d'écouter.
Cette skill est volontairement une étape terminale dans une chaîne. Une autre skill (ou vous)
produit le texte ; celle-ci le rend écouté. Elle s'associe naturellement avec
roundup, daily-prep, meeting-minutes, ou tout travail de synthèse.
Tout fonctionne localement sur CPU. Aucun texte n'est envoyé à un service de synthèse vocale cloud, ce qui compte quand le contenu est confidentiel, et cela signifie que la skill fonctionne dans un agent cloud headless ou un conteneur CI tout aussi bien que sur un ordinateur portable.
Prerequisites
Le moteur de synthèse est Kyutai pocket-tts,
un petit modèle TTS neuronal conçu pour s'exécuter sur les CPUs.
Le script fourni l'installe automatiquement dans un virtualenv en cache à la première utilisation, donc généralement vous n'avez rien à faire. Pour l'installer explicitement :
pip install pocket-tts # any platform
brew install pocket-tts # macOS, if preferred
pocket-tts nécessite Python >=3.10 et <3.15. Le script cherche un
interpréteur compatible plutôt que de supposer que python3 en est un — utile à savoir si
vous êtes sur une très nouvelle version de Python, où l'installation échouerait autrement.
Vous avez aussi besoin d'un encodeur. ffmpeg est fortement préféré (brew install ffmpeg
ou apt-get install -y ffmpeg) ; sur macOS le script bascule sur le built-in
afconvert et émet .m4a au lieu de .mp3.
Le premier lancement télécharge le modèle (~1GB) depuis Hugging Face. Après cela il est complètement offline et synthétise environ 6x plus vite que le temps réel.
L'étape importante : réécrire pour l'oreille
Ne versez pas directement du texte écrit dans le synthétiseur. Une prose qui se lit bien à l'écran est fatigante à écouter. La réécrire d'abord est ce qui sépare un digest audio utile d'un qui ne se peut pas écouter.
Produisez un script parlé qui :
- Commence par une orientation. De quoi s'agit-il, ce que cela couvre, grosso modo combien de temps ça dure.
- Remplace les puces par de la prose de liaison. « D'abord… Le plus gros est… Enfin… » — un auditeur n'a pas de structure visuelle sur laquelle s'appuyer, alors portez-la dans le langage.
- Développe les abréviations à la première utilisation. « PR » devient « pull request », « CI » devient « intégration continue ». Les acronymes qui se lisent bien sont du bruit quand parlés.
- Énonce les dates et chiffres naturellement. « le vingt août », pas « 2026-08-20 ». « Environ trois mille », pas « 2 847 ».
- Ne prononcez jamais les URLs à haute voix. Dites « lié dans la version écrite » à la place.
- Utilise des phrases courtes. Divisez tout ce qui dépasse environ 25 mots.
- Signalise les transitions. « En passant au côté produit… », « Deux choses demandent votre attention… ».
- Finit par les actions. Récapitulez ce que l'auditeur devrait faire, car c'est ce qu'il doit retenir et il ne peut pas revenir en arrière.
- Supprime tout ce qui est purement visuel. Les tableaux, blocs de code et diagrammes doivent être résumés en une phrase ou omis, jamais lus à haute voix.
Écrivez ce script parlé dans son propre fichier .txt. Conservez la version écrite d'origine avec ses liens intacts — l'audio est un compagnon, pas un
remplacement. L'utilisateur voudra cliquer plus tard.
Synthétiser
./scripts/tts.sh <input.txt> <output.mp3> [voice.safetensors]
Le script enlève tout markdown résiduel, divise le texte sur les limites de phrases en chunks d'environ 600 caractères (la qualité se dégrade sur les longs entrées uniques), synthétise chaque chunk, et concatène le résultat dans un MP3 mono à 96kbps — assez petit pour synchroniser sur un téléphone, assez bon pour la parole.
Dérogations d'environnement :
| Variable | Purpose |
|---|---|
SPEAK_TTS_BIN |
Chemin vers un binaire pocket-tts spécifique ; ignore toute auto-détection. |
SPEAK_TTS_HOME |
Où créer/trouver le virtualenv en cache. Par défaut ~/.cache/speak-summary/venv. |
Voix
La voix anglaise par défaut est alba. Pour en utiliser une différente, pocket-tts
supporte le clonage vocal à partir d'un court échantillon audio propre :
pocket-tts export-voice --help
Passez le fichier .safetensors résultant comme troisième argument au script.
Ne clonez que une voix dont vous avez le droit d'utiliser. Ne clonez pas la voix d'une vraie personne — collègue, client, ou figure publique — sans son consentement explicite.
Output
- Par défaut vers
~/Music/Briefings/sauf si l'utilisateur dit autrement ; c'est facile de pointer un téléphone ou une app podcast dessus. - Nommez les fichiers
<subject>-<YYYY-MM-DD>.mp3. - Rapportez le chemin, la durée et la taille.
- Proposez de le jouer :
afplay <path>sur macOS,ffplay -nodisp -autoexit <path>ailleurs.
Conseils de longueur
Visez 4–6 minutes pour un digest de routine, ce qui est grosso modo 600–900 mots parlés à un rythme naturel. Si la source dépasserait environ 10 minutes, dites-le et proposez soit une édition plus serrée, soit une division en plusieurs fichiers — l'attention chute fortement au-delà pour l'audio informatif.
Chaîner avec d'autres skills
Le pattern naturel est rassembler → résumer → parler :
roundup→speak-summary— une version parlée du briefing de statut.daily-prep→speak-summary— l'agenda de demain, écouté ce soir.meeting-minutes→speak-summary— rattraper une réunion que vous avez manquée.
Quand invoquée dans le cadre d'une chaîne, ne re-résumez pas. La skill upstream est responsable de ce qu'il faut dire ; cette skill est responsable de comment ça sonne. Prenez sa sortie, réécrivez-la pour l'oreille, et synthétisez.
Pour un fonctionnement sans surveillance (un briefing en attente avant le petit-déjeuner), planifiez la skill upstream avec un workflow et faites-la terminer en appelant celle-ci.
Troubleshooting
L'audio s'arrête au milieu d'une phrase. Un chunk a dépassé la longueur confortable du modèle. Raccourcissez les phrases dans le script parlé.
Mots mal prononcés. Épellez-les phonétiquement dans l'entrée — « Kubernetes » comme « koo-ber-net-eez ». C'est une partie normale de la préparation d'un script parlé.
Le premier lancement est lent. C'est le téléchargement ponctuel du modèle. Les lancements ultérieurs commencent en environ une seconde.
pocket-tts non trouvé après installation. Le virtualenv peut être stale, ou votre
python3 peut être en dehors de la plage supportée 3.10–3.14. Supprimez
~/.cache/speak-summary/venv et relancez, ou pointez SPEAK_TTS_BIN sur un binaire connu.