Sig det, jeg sagde: diktering uden AI-omskrivningen
AI-diktering omskriver dine ord — forbehold forsvinder, meningen vender. Hvorfor LLM-polering parafraserer dig, og hvorfor Keebye forbliver bogstavelig.
Der findes en klage over AI-forbedret diktering, som lyder paradoksal, indtil man har levet med den: transskriptionen var fin — det var det, der skete efter transskriptionen, der ødelagde den. Du sagde én ting, og værktøjet leverede en poleret, selvsikker, en anelse anden ting. Et forbehold stilfærdigt droppet. En reservation fjernet. En sætning omstruktureret til noget, du aldrig ville sige. Og i mønstrets værste udgave — den, der får folk til at droppe et værktøj på stedet — vender meningen. »Ikke deploye, før testene består« kommer ud i den anden ende som en instruktion om at deploye, minus det ikke.
Til afslappet diktering er det en irritation. Til den måde, jeg faktisk bruger diktering på — at fodre Claude Code med prompts, workflowet fra Sådan styrer du Claude Code med stemmen — er det gift. En kodeagent tager dine ord som en specifikation. Den ved ikke, at dit dikteringsværktøj parafraserede dig. Blev det forbehold, der gjorde instruktionen sikker, glattet væk mellem din mund og terminalen, udfører agenten gladelig den glattede udgave. Præcision er hele pointen med en prompt, og et lag med AI-omskrivning er en maskine, der fjerner præcision, mens den får resultatet til at se mere bevidst ud.
Hvorfor omskriver AI-dikteringsværktøjer det, du sagde?
Svaret på kategoriniveau er ikke, at nogen satte sig for at forvrænge tale. Det er, at »ryd op i den her transskription« er en oprigtigt tiltalende funktion, og den oplagte måde at bygge den er at køre den rå transskription gennem en sprogmodel.
Rå tale er rodet — fyldord, falske starter, gentagne ord, manglende tegnsætning. En LLM, der bliver bedt om at rydde op i det, producerer smukt output. Problemet er, at en sprogmodel ikke redigerer, sådan som en menneskelig korrekturlæser, der fjerner »um«, redigerer. Den genskaber. Outputtet er en ny tekst, som modellen anser for en god udgave af dit input, og »god« er dér, din intention siver ud. Modeller trænet mod hjælpsomhed og flydende sprog har holdninger: reservationer ligner støj, forbehold ligner rod, en kejtet, men præcis formulering ligner noget, der bør forbedres. Det meste af tiden er omskrivningen harmløs. Men den er probabilistisk, og du kan ikke se på outputtet, hvilke sætninger der blev transskriberet, og hvilke der blev komponeret. Poleringen er ensartet; troskaben er ikke.
Det er det dybe problem med pipelines til LLM-polering: de fejler lydløst og selvsikkert. En talegenkender, der hører dig forkert, producerer som regel noget synligt forkert. Et omskrivningslag, der forråder dig, producerer noget synligt rigtigt — grammatisk, plausibelt, iført din stemme — og det er præcis derfor, det omvendte »deploy« bliver sendt i stedet for fanget.
Bogstavelig som standard
Keebyes holdning er enkel: det, tale-til-tekst-modellen hørte, er det, der lander ved din cursor. Som standard sidder der ingen sprogmodel mellem transskriptionen og din terminal og komponerer en bedre udgave af dig — standardtrinnet til polering er en kort liste af deterministiske regler, og det er det.
Det er et bevidst væddemål, og det kommer fra vibecoding-brugssituationen. Når din diktering er styringskanalen for kodeagenter, er værktøjets job transport, ikke forfatterskab. Du er forfatteren; agenten er publikum; dikteringslaget bør ingen holdninger have. Det workflow — at sige hele prompts i stedet for at skrive dem — er lagt frem i stemmediktering til AI-prompts.
Der findes en LLM-polering i Keebye — jeg kommer til den — men du slår den selv til, den kører fuldstændig på din maskine, og den arbejder under en sikring, der er designet til at afvise almindelige former for afdrift, løbsk udvidelse og gentagelse. Fejler outputtet det tjek, falder Keebye tilbage på regler. Standarden forbliver regler.
Så hvad gør oprydningen egentlig?
Bogstavelig behøver ikke betyde rå. Keebye leveres med en valgfri oprydning — forbedring, slået til som standard og mulig at overstyre per app — men den er regelbaseret, ikke en model, og hele listen over, hvad den gør, fylder ét afsnit:
Den fjerner fritstående fyldord (um, uh, erm, you know). Den slår umiddelbare ordgentagelser sammen — »the the« bliver til »the«. Den slår mellemrum sammen. Den sætter stort begyndelsesbogstav og tilføjer et punktum til sidst, hvis du ikke selv sluttede med et. Det er hele listen. Reglerne er deterministiske og snævert afgrænsede; de ombytter ikke bevidst ledsætninger, fjerner ikke negationer og erstatter ikke ord med synonymer.
Før oprydningen kører, anvendes dine ordbogserstatninger — brugerdefinerede udskiftninger for den jargon og de egennavne, talemodeller mishandler, så »pnpm« og dine modulnavne ankommer stavet, som din kodebase staver dem.
Og er selv den regelbaserede oprydning mere indblanding, end du vil have, så slå forbedring fra, og Keebye indsætter talemodellens rå transskription: fyldord, gentagelser og det hele. I nogle sammenhænge — når du citerer nogen, eller dikterer i et felt, hvor det afsluttende punktum ødelægger noget — er den rå transskription det bedre valg, og overstyringen per app lader dig vælge den.
Poleringen, du selv slår til, og troskabssikringen omkring den
Nu til den LLM, jeg lovede at komme til. Til dem, der gerne vil have klogere oprydning, tilbyder Keebye en valgfri poleringstilstand (polish_mode sat til local_llm): en lille Qwen3-model, der kører on-device via llama.cpp, Metal-accelereret, uden at noget bliver sendt nogen steder. Dens instruktioner er den snævre udgave af polering — ret tegnsætning og store bogstaver, fjern fyldord, behold brugerens præcise ord, sprog og mening, bevar kode og filnavne ordret. Genereringen er deterministisk (greedy sampling, samme input → samme output) og har et loft; går modellen i stå ud over en frist på to sekunder, bliver dens output opgivet.
Men instruktioner er håb, og denne artikel findes, fordi håb ikke er garantier. Derfor passerer hvert LLM-poleret resultat gennem en troskabssikring, før det må røre din cursor. Outputtet skal bevare mindst 50 % af den oprindelige transskriptions tokens. Det må ikke svulme op — alt ud over cirka det dobbelte af den oprindelige længde (plus fire tokens) fejler. Løbsk gentagelse bliver opdaget. Fejler det polerede resultat et af de tjek, kasserer Keebye det og falder i stedet tilbage på den regelbaserede oprydning.
Den sikring fanger alvorligt tokentab, løbsk udvidelse og gentagelse, før modellens output kan erstatte den regelryddede transskription. Den er en heuristik, ikke et semantisk bevis: en kort omskrivning eller en ændret negation kunne stadig passere dens tærskler. Har et forbehold ikke råd til at skride, så hold AI-polering slået fra, og gennemgå den indsatte tekst, før du sender den.
De ærlige grænser
Bogstavelig betyder bogstavelig. Vrøvler du løs, lander dit vrøvl — selv den polering, du slår til, er instrueret og sikret mod oprydning, ikke komposition, så Keebye laver ikke en slingrende tanke om til en skarp instruktion. Disciplinen i at sige, hvad du mener, bliver hos dig.
Den regelbaserede oprydning er bevidst dum. Den fjerner »um«; den retter ikke din grammatik, omstrukturerer ikke en løbsk sætning og bemærker ikke, at du modsagde dig selv. Noget klogere ville genindføre præcis de skøn, dette design findes for at undgå.
Og troskab beskytter mod omskrivning, ikke mod fejlgenkendelse. Hører talemodellen »cache« som »cash«, bliver den fejl trofast bevaret — sikringen aner ikke, hvad du mente at sige, kun hvad der blev transskriberet. Bogstavelig diktering flytter tillidsgrænsen til STT-modellen; den fjerner den ikke. (Beslægtet: er dit problem, at modellen transskriberer på et helt forkert sprog, er det en anden fejl med en anden løsning — lås dit dikteringssprog fast.)
Til sidst indramningen af kategorien: AI-polering er ikke et svindelnummer, og masser af brugere foretrækker oprigtigt output, der læses glattere, end de taler. Er det dig, læner andre værktøjer sig godt ind i det, og vores sammenligninger siger det ærligt — Keebye vs. Wispr Flow og Keebye vs. Superwhisper har begge et reelt afsnit om, »hvornår det andet værktøj passer bedre«.
Transport, ikke forfatterskab
Den aftale, Keebye tilbyder, er snæver med vilje: du taler, og en let ryddet transskription lander, hvor din cursor er. Når de ord er prompts til en agent, der vil handle bogstaveligt på dem, er snæver en funktion. Det dyreste, et dikteringsværktøj kan gøre ved en udvikler, er ikke en tastefejl. Det er en flydende sætning, du aldrig sagde.
Keebye er i early access til macOS. Start din gratis prøveperiode nedenfor, dikter »Ikke deploye, før testene består«, og tjek, om præcis det forbehold overlever oprydningen. Den test er hele produktet.
Test den instruktion, der ikke har råd til at skride
Start din gratis prøveperiode, og dikter en prompt med et kritisk forbehold — især et »ikke« — og se så, hvad der ankommer.
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.
Læs videre
Diktér prompts til parallelle agenter, bane for bane
Kører du to-tre kodeagenter på én gang, bliver det at prompte flaskehalsen. Et stemmeworkflow til at fodre parallelle baner uden at forlade den, du er i.
Styr Claude Code med stemmen: byg i parallelle lanes
AI-kodeagenter gjorde tastaturet til flaskehalsen. Et praktisk workflow til at diktere prompts, reviews og kursændringer i parallelle agent-lanes på macOS.
Diktering, der overlever terminalen
Diktatindsættelse fejler lydløst i terminaler, SSH, tmux og ikke-QWERTY-layouts. Hvorfor udklipsholderen svigter, og hvad skrivetilstanden gør.