Votre dictée ne devrait jamais disparaître
Vous dictez une longue pensée, l’insertion échoue, le texte disparaît. Pourquoi les apps perdent vos mots et l’historique local en texte seul de Keebye.
Quatre-vingt-dix secondes de exactement-comme-je-le-pensais — une description de PR complète, une réponse soigneuse à un client — et puis un petit truc déraille au moment de l’insertion. La fenêtre cible n’avait pas le focus. Le collage n’a pas pris. L’app a eu un hoquet. Et le texte a simplement disparu. Pas sauvegardé quelque part. Pas dans un tampon. Disparu. Tout pipeline de dictée qui traite l’insertion comme l’unique copie de la transcription a ce mode de défaillance.
Ce qui suit est une colère spécifique et disproportionnée, et je la trouve justifiée. Les secondes perdues ne sont pas le sujet. Le sujet, c’est que vous avez fait le travail — vous avez composé la pensée, vous l’avez bien dite, la machine l’a même transcrite correctement — et que l’outil a détruit le résultat à cause d’un problème de livraison. La deuxième prise n’est jamais aussi bonne que la première. Quiconque a redicté un paragraphe de mémoire sait qu’on ne le reproduit pas ; on en produit un cousin plus plat.
J’ai perdu des dictées de cette façon, moi aussi, dans d’autres outils, avant que Keebye n’existe. C’est l’une des petites urgences autour desquelles l’app a été construite.
Pourquoi le texte dicté disparaît-il purement et simplement ?
Ce n’est pas le bug d’un fournisseur. C’est une décision de conception au niveau de la catégorie, et il vaut la peine de comprendre pourquoi la catégorie l’a prise.
Une app de dictée est un tuyau, pas un éditeur. La parole entre par un bout ; le texte sort par l’autre, dans la fenêtre de quelqu’un d’autre — un terminal, une zone Slack, un Google Doc. Il n’y a pas de document à elle, ce qui est exactement ce qui rend ces outils invisibles et rapides. Mais cela veut dire que la transcription n’existe souvent que pour un instant précis : l’insertion. Et l’insertion est l’étape la plus fragile de tout le pipeline. Elle dépend de la fenêtre qui a le focus à la milliseconde de la livraison, du presse-papiers qui n’est pas pris de vitesse par une autre app, des autorisations d’accessibilité qui veulent bien coopérer, de l’application cible qui accepte la saisie synthétique tout court. Quand l’un de ces éléments échoue, un tuyau pur n’a rien derrière lui. L’eau est par terre.
Il y a aussi une raison de principe à la timidité des outils sur la conservation de copies : un journal de tout ce que vous avez dicté est sensible. Vos dictées sont vos messages, vos prompts, vos décisions à moitié formées. Un fournisseur qui les stocke — surtout à proximité d’un cloud — a créé une responsabilité, et la façon facile d’éviter cette responsabilité est de ne rien garder. Les utilisateurs héritent de cette prudence sous forme d’éphémérité : la dictée la plus sûre, du point de vue du fournisseur, est celle qui n’a jamais existé.
Je comprends la logique. Je pense simplement qu’elle optimise pour la mauvaise partie. Le mode de défaillance d’un historique local, c’est un fichier sur votre propre disque. Le mode de défaillance de ne rien garder, c’est votre travail qui s’évapore parce qu’une fenêtre a perdu le focus.
Ce que Keebye conserve, et où
Keebye conserve donc un historique, activé par défaut, et voici précisément ce que cela veut dire — ni plus, ni moins.
Avec l’historique activé, chaque dictée terminée est écrite dans une base SQLite locale sur votre Mac (rusqlite, mode WAL, pour ceux que la tuyauterie intéresse). Le fichier vit dans le répertoire de support de l’app — com.keebye.app/keebye.db — et il ne quitte jamais la machine. Il n’y a pas de synchronisation, pas d’envoi, aucun compte auquel il serait rattaché. C’est un fichier, sur votre disque, qui vous appartient.
La récupération est conçue autour des deux façons dont vous perdez réellement du texte. Le cas courant — l’insertion vient d’échouer, il y a une seconde — a le chemin le plus rapide : le menu de la barre des menus contient un élément Copier la dernière dictée. Cliquez dessus, votre dictée la plus récente est dans le presse-papiers, collez-la là où elle devait aller, passez à la suite. Le cas plus rare — « j’ai dicté quelque chose mardi et il me le faut » — passe par Historique de dictée…, une fenêtre avec la liste complète : recherchable, avec suppression par entrée et un tout-effacer pour quand vous voulez faire table rase.
La rétention est de 30 jours, appliquée automatiquement. L’élagage tourne à l’ouverture de la base et de nouveau après chaque insertion, si bien que la fenêtre fait réellement 30 jours, pas « 30 jours, à peu près, quand on y pensera ». Et si vous voulez l’ancien comportement éphémère — certaines personnes le devraient, j’y viens —, l’historique est un réglage (history_enabled), et le désactiver signifie que rien n’est écrit du tout.
Texte seul. Jamais d’audio.
La partie qui me tient le plus à cœur, c’est ce que l’historique n’est pas. Il est en texte seul. Le schéma d’historique de Keebye n’a pas de colonne audio — pas un réglage de rétention audio désactivé par défaut : pas de colonne. Les enregistrements eux-mêmes ne sont jamais stockés. C’est structurel, par conception : une transcription de « réponds à Andrei que la migration glisse d’une semaine » est déjà assez sensible ; le son de votre voix la prononçant, horodaté, est un artefact d’un autre ordre, et je ne voulais pas que l’app soit capable de l’accumuler.
Une nuance de plus, qui compte davantage que son nombre de mots : si vous dictez dans un champ sécurisé — une saisie de type mot de passe —, l’historique ne l’enregistre pas. Le seul endroit où même une trace textuelle serait déplacée est le seul endroit où nous n’en gardons aucune.
C’est la même posture que dans le reste de l’app — la reconnaissance vocale s’exécute sur l’appareil, ce dont nous avons parlé dans le contexte de dicter dans votre propre langue —, mais l’historique est l’endroit où la posture est mise à l’épreuve, parce que l’historique est le seul endroit où Keebye conserve vos mots. Local, texte seul, auto-effaçant : cela m’a semblé être la forme qui mérite d’être activée par défaut.
Les limites honnêtes
Section honnêteté, comme toujours.
Vous ne pouvez pas réécouter. Le texte seul coupe dans les deux sens. Si la transcription était fausse — le modèle a mal entendu un nom, massacré un nombre —, l’historique préserve fidèlement le texte faux, et l’audio qui pourrait trancher le litige a disparu, par conception. Pour la plupart des cas de récupération, cela n’a pas d’importance ; la panne était l’insertion, pas la transcription. Mais si vous vouliez de l’historique de dictée une archive de mémos vocaux, ce n’en est pas une, volontairement.
Trente jours, c’est trente jours. L’historique est un filet de sécurité, pas une archive. Si une dictée compte au-delà d’un mois, sa place est dans le document dans lequel vous l’avez dictée, pas dans la base de l’app. L’élagage ne demande pas la permission.
Local uniquement veut dire local uniquement. Votre historique ne vous suit pas d’une machine à l’autre. La dictée faite sur le poste fixe n’est pas récupérable depuis le portable. Je présente cela comme une fonctionnalité de confidentialité, et ç’en est une — rien ne se synchronise parce que rien n’est transmis —, mais je ne vais pas prétendre que ce n’est pas aussi une limitation. C’est les deux. Vous devriez savoir laquelle c’est pour vous avant de compter dessus.
Et le cas limite : si vous êtes la personne dont le modèle de menace dit aucune trace, jamais, désactivez l’historique. C’est un seul réglage, et l’app le respecte entièrement. Activé par défaut est le bon choix pour la plupart des utilisateurs, qui préféreraient récupérer le paragraphe de mardi dernier ; cela ne devrait pas être un piège pour les autres.
Le travail ne devrait pas avoir de point de défaillance unique
La raison profonde de l’existence de cette fonctionnalité : je mène ma journée en voies parallèles — des agents qui construisent dans certaines fenêtres, des humains qui attendent dans d’autres — et la voix est le canal qui les alimente toutes. Ce workflow est toute la prémisse de piloter Claude Code à la voix. Un canal qui détruit parfois sa propre charge utile n’est pas un canal sur lequel on bâtit une journée de travail. Les développeurs attendent des chemins de récupération — annuler, journaux, reflogs, corbeille — et pourtant beaucoup de flux de dictée n’exposent aucun équivalent quand une insertion échoue.
Si vous comparez des outils de cette catégorie, nos comparaisons sont honnêtes sur les points où les autres brillent aussi : Keebye vs Superwhisper et Keebye vs Wispr Flow. Et le texte qui disparaît a une plainte sœur — le premier mot de votre dictée avalé avant le réveil du micro — que nous avons documentée dans pourquoi les apps de dictée avalent votre premier mot.
Keebye est en accès anticipé pour macOS. Lancez votre essai gratuit ci-dessous, dictez un paragraphe, ratez délibérément la fenêtre cible, puis utilisez « Copier la dernière dictée » pour récupérer le texte. Un mauvais focus coûte encore une étape de récupération ; il n’a plus à coûter la pensée.
Rendez la prochaine longue dictée récupérable
Lancez votre essai gratuit et testez « Copier la dernière dictée » avant de confier une longue description de PR à la voix.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Continuez à lire
Pourquoi les apps de dictée avalent votre premier mot
Vous lancez la dictée, parlez et perdez le premier mot. Pourquoi le démarrage à froid coupe et comment aident un micro chaud et 500 ms de pré-enregistrement.
Dicter des prompts aux agents parallèles, voie par voie
Deux ou trois agents de code à la fois font du prompt le goulot d’étranglement. Un workflow vocal pour alimenter les voies parallèles sans quitter la vôtre.
Claude Code à la voix : construire en voies parallèles
Avec les agents de code IA, la frappe devient un frein. Un workflow pour dicter prompts, revues et réorientations en voies parallèles sur macOS.