Whisper - 135 lignes et rien de plus
Dictée vocale en français, 100% locale. Deux fichiers, un raccourci clavier, zéro cloud. Parfois le meilleur outil est celui qu on écrit en une après-midi.
Le besoin
Dicter du texte en français sans que mes mots traversent un océan pour atterrir sur un serveur américain. Un raccourci clavier pour démarrer l’enregistrement, un autre pour l’arrêter. Le texte transcrit sort sur stdout. C’est tout.
Deux fichiers, c’est tout
dictate.py orchestre l’enregistrement via SoX et délègue la transcription à faster-whisper - modèle small, quantifié en INT8, inférence CPU. dictate.sh est un wrapper de sept lignes qui active le virtualenv. On lie ça à un raccourci clavier système et c’est terminé.
Pas de serveur, pas de daemon, pas d’interface graphique. Le PID de l’enregistrement vit dans /tmp. Le toggle start/stop permet de tout piloter depuis un seul raccourci. Des notifications desktop (notify-send) signalent chaque étape.
128 lignes de Python. 7 lignes de shell. 135 au total.
Pourquoi pas de git
Ce projet n’a pas de dépôt git. Pas de CI, pas de pipeline, pas de tags de version. Et c’est un choix assumé.
Un outil de 135 lignes qui fait exactement une chose n’a pas besoin d’infrastructure. Il n’y a pas de collaboration, pas de branches, pas de releases. Le code tient dans un seul écran. Si je casse quelque chose, je le vois immédiatement. Si je veux revenir en arrière, le fichier est assez court pour que ma mémoire suffise.
Toute la machinerie qu’on met autour du code - versioning, tests automatisés, déploiement continu - a un coût cognitif. Pour un projet de cette taille, ce coût dépasse le bénéfice.
Philosophie Unix
Un programme qui fait une seule chose et la fait bien. Le modèle et la langue sont configurables par variables d’environnement. Le VAD filter de faster-whisper gère les silences automatiquement. L’outil s’intègre dans n’importe quel workflow via un pipe standard.
C’est le genre de programme qu’on écrit en une après-midi et qu’on utilise tous les jours pendant des années. Pas besoin d’architecture. Pas besoin de framework. Juste du code qui résout un problème précis.