Digues el que he dit: dictat sense la reescriptura de la IA
El dictat amb IA reescriu el que dius: perd matisos i capgira sentits. Per què el poliment amb LLM et parafraseja i Keebye es manté literal.
Hi ha una queixa sobre el dictat millorat amb IA que sona paradoxal fins que l'has viscuda: la transcripció era correcta; el que la va arruïnar va ser el que va passar després de la transcripció. Tu vas dir una cosa i l'eina va lliurar una cosa polida, segura de si mateixa i lleugerament diferent. Un matís caigut discretament. Una reserva eliminada. Una frase reestructurada en una cosa que tu no diries mai. I en la pitjor versió del patró —la que fa que la gent abandoni una eina en aquell mateix moment— el sentit gira. «No despleguis fins que passin els tests» surt per l'altre costat com una instrucció sobre desplegar, menys el no.
Per a un dictat ocasional, això és una molèstia. Per a la manera com jo faig servir el dictat de debò —alimentant prompts al Claude Code, el flux de treball de Com dirigir el Claude Code amb la veu—, és verí. Un agent de programació pren les teves paraules com una especificació. No sap que la teva eina de dictat t'ha parafrasejat. Si el matís que feia segura la instrucció s'ha allisat entre la teva boca i el terminal, l'agent executarà alegrement la versió allisada. La precisió és tot el sentit d'un prompt, i una capa de reescriptura amb IA és una màquina per eliminar precisió tot fent que el resultat sembli més deliberat.
Per què les eines de dictat amb IA reescriuen el que has dit?
La resposta al nivell de la categoria no és que ningú es proposés distorsionar la parla. És que «neteja aquesta transcripció» és una funció genuïnament atractiva, i la manera òbvia de construir-la és passar la transcripció en brut per un model de llenguatge.
La parla en brut és desordenada: falques, arrencades falses, paraules repetides, puntuació que falta. Un LLM a qui demanes que ho endreci produeix una sortida preciosa. El problema és que un model de llenguatge no edita com edita un corrector humà que treu un «um». Regenera. La sortida és un text nou que el model considera una bona versió de la teva entrada, i «bona» és per on s'escapa la teva intenció. Els models entrenats cap a la utilitat i la fluïdesa tenen opinions: les reserves semblen soroll, els matisos semblen desordre, una formulació incòmoda però precisa sembla una cosa a millorar. La major part del temps la reescriptura és inofensiva. Però és probabilística, i des de la sortida no pots saber quines frases s'han transcrit i quines s'han compost. El poliment és uniforme; la fidelitat, no.
Aquest és el problema profund de les canonades de poliment amb LLM: fallen en silenci i amb aplom. Un reconeixedor de veu que et sent malament sol produir una cosa visiblement errònia. Una capa de reescriptura que et traeix produeix una cosa visiblement correcta —gramatical, plausible, amb la teva veu posada—, que és exactament per què el «no despleguis» invertit s'envia en comptes de detectar-se.
Literal per defecte
La posició del Keebye és senzilla: el que ha sentit el model de veu a text és el que cau al teu cursor. Per defecte, no hi ha cap model de llenguatge entre la transcripció i el teu terminal component una versió millor de tu; l'etapa de poliment per defecte és una llista curta de regles deterministes, i prou.
És una aposta deliberada, i ve del cas d'ús del vibecoding. Quan el teu dictat és el canal de control d'agents de programació, la feina de l'eina és el transport, no l'autoria. Tu ets qui escriu; l'agent és el públic; la capa de dictat no hauria de tenir opinions. Aquell flux de treball —dir prompts sencers en comptes d'escriure'ls— està exposat a dictat per veu per a prompts d'IA.
Sí que hi ha un poliment amb LLM al Keebye —ja hi arribo—, però és opcional, s'executa completament a la teva màquina i funciona sota una guarda dissenyada per rebutjar formes habituals de desviació, expansió descontrolada i repetició. Si la sortida no supera aquesta comprovació, el Keebye torna a les regles. El valor per defecte continuen sent les regles.
Aleshores, què fa exactament la neteja?
Literal no ha de voler dir en brut. El Keebye inclou una passada de neteja opcional —millora, activada per defecte i substituïble app per app—, però és basada en regles, no un model, i la llista completa del que fa cap en un paràgraf:
Elimina falques que van soles (um, uh, erm, you know). Redueix les repeticions immediates de paraules: «the the» passa a ser «the». Redueix els espais en blanc. Posa en majúscula la primera lletra i afegeix un punt final si tu no n'has posat cap. Aquesta és tota la llista. Les regles són deterministes i d'abast estret; no reordenen clàusules deliberadament, ni eliminen negacions, ni substitueixen sinònims.
Abans que s'executi la neteja, s'apliquen les substitucions del teu diccionari: reemplaçaments definits per tu per a l'argot i els noms propis que els models de veu destrossen, de manera que «pnpm» i els noms dels teus mòduls arriben escrits tal com els escriu el teu codi.
I si fins i tot la passada basada en regles és més intervenció de la que vols, desactiva la millora i el Keebye insereix la transcripció en brut del model de veu: falques, repeticions i tot. Per a alguns contextos —citar algú, dictar en un camp on el punt final espatlla coses—, la transcripció en brut és la millor tria, i la substitució per app et deixa triar-la.
El poliment opcional, i el control de fidelitat que l'envolta
Ara, l'LLM que he promès. Per a qui sí que vol una neteja més llesta, el Keebye ofereix un mode de poliment opcional (polish_mode amb el valor local_llm): un model Qwen3 petit executant-se on-device amb llama.cpp, accelerat amb Metal, sense enviar res enlloc. Les seves instruccions són la versió estreta del poliment: arregla la puntuació i les majúscules, treu les falques, mantén les paraules exactes, la llengua i el sentit de l'usuari, i preserva el codi i els noms de fitxer literalment. La generació és determinista (mostreig voraç, mateixa entrada → mateixa sortida) i té un límit; si el model s'encalla més enllà d'un termini de dos segons, se n'abandona la sortida.
Però les instruccions són esperances, i aquest article existeix perquè les esperances no són garanties. Per això, tot resultat polit per l'LLM passa per un control de fidelitat abans de poder tocar el teu cursor. La sortida ha de conservar com a mínim el 50 % dels tokens de la transcripció original. No pot inflar-se: qualsevol cosa que passi aproximadament del doble de la llargada original (més quatre tokens) no passa el control. La repetició descontrolada es detecta. Si el resultat polit falla una d'aquestes comprovacions, el Keebye el descarta i recorre a la neteja basada en regles.
Aquesta guarda atrapa pèrdues greus de tokens, expansions descontrolades i repeticions abans que la sortida del model pugui substituir la transcripció netejada per regles. És una heurística, no una prova semàntica: una reescriptura curta o una negació canviada podrien passar els seus llindars igualment. Si un matís no es pot permetre desviar-se, mantén el poliment amb IA desactivat i revisa el text inserit abans d'enviar-lo.
Els límits sincers
Literal vol dir literal. Si divagues, la teva divagació cau tal qual: fins i tot el poliment opcional està instruït i vigilat cap a la neteja, no cap a la composició, o sigui que el Keebye no convertirà un pensament serpentejant en una instrucció nítida. La disciplina de dir el que vols dir continua sent teva.
La neteja basada en regles és intencionadament ximple. Treu els «um»; no t'arreglarà la gramàtica, ni reestructurarà una frase interminable, ni s'adonarà que t'has contradit. Qualsevol cosa més llesta reintroduiria els judicis de valor que aquest disseny existeix per evitar.
I la fidelitat protegeix contra la reescriptura, no contra el mal reconeixement. Si el model de veu sent «cache» com a «cash», aquell error es preserva fidelment: la guarda no té ni idea de què volies dir, només del que s'ha transcrit. El dictat literal desplaça el límit de confiança cap al model de veu a text; no l'elimina. (Relacionat: si el teu problema és que el model transcriu directament en la llengua equivocada, això és una altra fallada amb una altra solució: Fixa la llengua del teu dictat.)
Finalment, l'enquadrament de categoria: el poliment amb IA no és cap estafa, i molta gent prefereix genuïnament una sortida que es llegeixi més fluida del que parlen. Si aquest és el teu cas, altres eines s'hi aboquen bé, i les nostres comparacions ho diuen amb sinceritat: Keebye vs Wispr Flow i Keebye vs Superwhisper inclouen totes dues una secció real de «quan l'altra eina encaixa millor».
Transport, no autoria
El tracte que ofereix el Keebye és estret a posta: tu parles i una transcripció lleugerament netejada cau on és el teu cursor. Quan aquelles paraules són prompts per a un agent que hi actuarà literalment, ser estret és una virtut. La cosa més cara que una eina de dictat pot fer a un desenvolupador no és una errada d'escriptura. És una frase fluida que no has dit mai.
El Keebye és en accés anticipat per a macOS. Comença la prova gratuïta aquí sota, dicta «No despleguis fins que passin els tests» i comprova si aquella restricció exacta sobreviu a la neteja. Aquesta prova és tot el producte.
Prova la instrucció que no es pot permetre desviar-se
Comença la prova gratuïta i dicta un prompt amb un matís crític —sobretot un «no»— i després mira què arriba.
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.
Continua llegint
Dictar prompts a agents paral·lels, carril a carril
Portar dos o tres agents de programació alhora converteix el prompt en el coll d’ampolla. Un flux de veu per alimentar carrils paral·lels sense sortir del que.
Claude Code amb la veu: construir en carrils paral·lels
Amb agents de codi IA, teclejar és el coll d’ampolla. Un flux pràctic per dictar prompts, revisions i canvis de rumb en carrils paral·lels a macOS.
Dictat que sobreviu al terminal
Dictat que no s’enganxa, sense avís, en terminals, SSH, tmux i teclats no QWERTY. Per què falla el porta-retalls i què fa el mode de tecleig.