Je dictatie hoort nooit zomaar te verdwijnen
Je dicteert een lange gedachte, invoegen mislukt, tekst weg. Waarom dictatie-apps woorden verliezen en welke lokale tekstgeschiedenis Keebye bewaart.
Negentig seconden precies-zoals-ik-het-bedoelde — een volledige PR-beschrijving, een zorgvuldig antwoord aan een klant — en dan gaat er iets kleins mis op het moment van invoegen. Het doelvenster had geen focus. Het plakken pakte niet. De app hikte. En de tekst is gewoon weg. Nergens opgeslagen. Niet in een buffer. Weg. Elke dictatiepijplijn die het invoegen als de enige kopie van het transcript behandelt, heeft dit faalpatroon.
Wat volgt is een specifieke, buitenproportionele woede, en die is volgens mij terecht. Het gaat niet om de verloren seconden. Het gaat erom dat jij het werk deed — je vormde de gedachte, je zei hem goed, de machine transcribeerde hem zelfs correct — en dat de tool het resultaat vernietigde vanwege een afleverprobleem. De tweede take is nooit zo goed als de eerste. Wie ooit een alinea uit het hoofd opnieuw heeft gedicteerd weet dat je hem niet reproduceert; je produceert een vlakkere neef ervan.
Ik ben zelf op deze manier dictaties kwijtgeraakt, in andere tools, voordat Keebye bestond. Het is een van de kleine noodsituaties waar de app omheen is gebouwd.
Waarom verdwijnt gedicteerde tekst zomaar?
Dit is niet de bug van één leverancier. Het is een ontwerpbeslissing op categorieniveau, en het is de moeite waard te begrijpen waarom de categorie die nam.
Een dictatie-app is een pijp, geen editor. Spraak gaat er aan de ene kant in; tekst komt er aan de andere kant uit, in andermans venster — een terminal, een Slack-veld, een Google Doc. Er is geen eigen document, en dat is precies wat deze tools onzichtbaar en snel maakt. Maar het betekent dat het transcript vaak precies één moment bestaat: het invoegen. En het invoegen is de allerbroosste stap in de hele pijplijn. Het hangt af van welk venster focus heeft op de milliseconde van aflevering, van een klembord waar geen andere app tegenaan racet, van toegankelijkheidsrechten die in de stemming zijn, van de doelapplicatie die synthetische invoer überhaupt accepteert. Faalt daar iets van, dan heeft een pure pijp niets achter zich. Het water ligt op de vloer.
Er is ook een principiële reden dat tools terughoudend zijn met kopieën bewaren: een logboek van alles wat je hebt gedicteerd is gevoelig. Je dictaties zijn je berichten, je prompts, je halfgevormde beslissingen. Een leverancier die ze bewaart — zeker ergens in de buurt van een cloud — heeft een risico gecreëerd, en de makkelijke manier om dat risico te vermijden is niets bewaren. Gebruikers erven die voorzichtigheid als vluchtigheid: de veiligste dictatie is, vanuit het perspectief van de leverancier, degene die nooit heeft bestaan.
Ik begrijp de logica. Ik vind alleen dat ze voor de verkeerde partij optimaliseert. Het faalpatroon van lokale geschiedenis bewaren is een bestand op je eigen schijf. Het faalpatroon van niets bewaren is dat je werk verdampt omdat een venster de focus verloor.
Wat Keebye bewaart, en waar
Dus Keebye houdt een geschiedenis bij, standaard aan, en dit is precies wat dat betekent — niet meer, niet minder.
Staat de geschiedenis aan, dan wordt elke voltooide dictatie weggeschreven naar een lokale SQLite-database op je Mac (rusqlite, WAL-modus, voor wie om het leidingwerk geeft). Het bestand staat in de app-support-map — com.keebye.app/keebye.db — en het verlaat de machine nooit. Er is geen synchronisatie, geen upload, geen account waar het aan hangt. Het is een bestand, op jouw schijf, van jou.
Herstel is ontworpen rond de twee manieren waarop je echt tekst kwijtraakt. Het gangbare geval — het invoegen mislukte net, één seconde geleden — heeft het snelste pad: het menubalkmenu heeft een item Laatste dictatie kopiëren. Klik erop, je meest recente dictatie staat op het klembord, plak hem waar hij hoorde te landen, ga verder. Het zeldzamere geval — "ik heb dinsdag iets gedicteerd en ik heb het terug nodig" — loopt via Dictatiegeschiedenis…, een venster met de volledige lijst: doorzoekbaar, met verwijderen per item en een alles-wissen voor wanneer je met een schone lei wilt beginnen.
De bewaartermijn is 30 dagen, automatisch afgedwongen. Het opschonen draait wanneer de database opent en opnieuw na elke invoeging, dus het venster is echt 30 dagen, en niet "30 dagen, ongeveer, wanneer we eraan toekomen". En wil je het oude vluchtige gedrag — sommigen zouden dat moeten willen, en ik kom op wie — dan is geschiedenis een instelling (history_enabled), en zet je hem uit, dan wordt er helemaal niets weggeschreven.
Alleen tekst. Nooit audio.
Het deel waar ik het meest om geef is wat de geschiedenis niet is. Ze bevat alleen tekst. Keebyes geschiedenisschema heeft geen audiokolom — geen audiobewaarinstelling die standaard uit staat, maar simpelweg geen kolom. De opnames zelf worden nooit opgeslagen. Dat is structureel, by design: een transcript van "antwoord Andrei dat de migratie een week opschuift" is al gevoelig genoeg; het geluid van jouw stem die het zegt, met tijdstempel, is een andersoortig artefact, en ik wilde niet dat de app in staat zou zijn dat op te bouwen.
Nog één nuance die zwaarder weegt dan het aantal woorden doet vermoeden: dicteer je in een beveiligd veld — een invoerveld van het wachtwoordtype — dan legt de geschiedenis dat niet vast. De ene plek waar zelfs een tekstspoor verkeerd is, is de ene plek waar we er geen bewaren.
Dit is dezelfde houding als in de rest van de app — speech-to-text draait on-device, waarover we schreven in de context van dicteren in je eigen taal — maar bij geschiedenis wordt die houding getest, want geschiedenis is de enige plek waar Keebye je woorden überhaupt bewaart. Lokaal, alleen tekst, zichzelf verwijderend: dat voelde als de vorm die standaard-aan verdient.
De eerlijke grenzen
De eerlijkheidsparagraaf, zoals altijd.
Je kunt niet terugluisteren. Alleen tekst snijdt aan twee kanten. Was de transcriptie fout — het model verstond een naam verkeerd, verminkte een getal — dan bewaart de geschiedenis trouw de foute tekst, en de audio die de discussie zou kunnen beslechten is by design weg. Voor de meeste herstelgevallen maakt dat niet uit; de fout zat in het invoegen, niet in het transcript. Maar wilde je dictatiegeschiedenis als archief van spraakmemo's, dan is dit dat bewust niet.
Dertig dagen is dertig dagen. De geschiedenis is een vangnet, geen archief. Doet een dictatie er langer dan een maand toe, dan hoort ze thuis in het document waarin je haar dicteerde, niet in de database van de app. Het opschonen vraagt niets.
Alleen lokaal betekent alleen lokaal. Je geschiedenis reist niet met je mee tussen machines. De dictatie die je op de desktop deed is niet terug te halen vanaf de laptop. Ik presenteer dit als privacyfunctie, en dat is het ook — er synchroniseert niets omdat er niets wordt verstuurd — maar ik doe niet alsof het niet óók een beperking is. Het is allebei. Je hoort te weten welke van de twee het voor jou is voordat je erop leunt.
En het grensgeval: ben jij degene wiens dreigingsmodel zegt helemaal geen spoor, zet de geschiedenis dan uit. Het is één instelling, en de app respecteert die volledig. Standaard-aan is de juiste keuze voor de meeste gebruikers, die liever de alinea van afgelopen dinsdag terugkrijgen; het hoort geen valstrik te zijn voor de rest.
Werk hoort geen enkel faalpunt te hebben
De diepere reden dat deze functie bestaat: ik draai mijn dag als parallelle lanes — agents die in sommige vensters bouwen, mensen die in andere wachten — en stem is het kanaal dat ze allemaal voedt. Die workflow is de hele premisse van Claude Code aansturen met je stem. Een kanaal dat af en toe zijn eigen lading vernietigt is geen kanaal waarop je een werkdag bouwt. Developers verwachten herstelpaden — undo, logs, reflogs, prullenbak — maar veel dictatiestromen bieden geen equivalent wanneer een invoeging mislukt.
Weeg je tools in deze categorie af, dan zijn onze vergelijkingen eerlijk over waar anderen ook uitblinken: Keebye vs Superwhisper en Keebye vs Wispr Flow. En verdwijnende tekst heeft een broertje-klacht — dat het eerste woord van je dictatie wordt opgegeten voordat de microfoon wakker is — waarover we schreven in waarom dictatie-apps je eerste woord opeten.
Keebye is in early access voor macOS. Start hieronder je gratis proefperiode, dicteer een alinea, mis met opzet het doelvenster, en gebruik daarna Laatste dictatie kopiëren om de tekst terug te halen. Verkeerde focus kost nog steeds een herstelstap; het hoeft je de gedachte niet meer te kosten.
Maak de volgende lange dictatie herstelbaar
Start je gratis proefperiode en test Laatste dictatie kopiëren voordat je een lange PR-beschrijving aan je stem toevertrouwt.
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.
Lees verder
Waarom dictatie-apps je eerste woord opeten
Je drukt op de hotkey, praat, en het eerste woord valt weg. Waarom een koude start woorden afkapt en hoe een warme microfoon met 500 ms pre-roll helpt.
Prompts dicteren naar parallelle agents, lane voor lane
Twee of drie codeeragents tegelijk draaien maakt prompten het knelpunt. Een stemworkflow om parallelle lanes te voeden zonder je eigen lane te verlaten.
Claude Code met je stem sturen: bouwen in parallelle lanes
AI-codeeragents maakten typen het knelpunt. Een praktische workflow om prompts, reviews en bijsturingen te dicteren over parallelle agent-lanes op macOS.