Di lo que dije: dictado sin la reescritura de la IA

El dictado con IA reescribe tus palabras: pierde matices e invierte sentidos. Por qué el pulido con LLM te parafrasea y Keebye se mantiene literal.

Teodor Deleanu10 de julio de 20268 min de lectura

Hay una queja sobre el dictado mejorado con IA que suena paradójica hasta que la has vivido: la transcripción estaba bien — lo que la arruinó fue lo que pasó después de la transcripción. Dijiste una cosa y la herramienta entregó una cosa pulida, segura de sí misma y ligeramente distinta. Un matiz eliminado en silencio. Una cautela borrada. Una frase reestructurada en algo que tú nunca dirías. Y en la peor versión del patrón — la que hace que la gente abandone una herramienta en el acto — el significado se invierte. «No despliegues hasta que pasen los tests» sale por el otro lado como una instrucción sobre desplegar, menos el no.

Para un dictado casual esto es una molestia. Para la forma en que yo uso realmente el dictado — dando prompts a Claude Code, el flujo de trabajo de dirigir Claude Code con tu voz — es veneno. Un agente de programación toma tus palabras como una especificación. No sabe que tu herramienta de dictado te ha parafraseado. Si el matiz que hacía segura la instrucción se suavizó entre tu boca y la terminal, el agente ejecutará alegremente la versión suavizada. La precisión es todo el sentido de un prompt, y una capa de reescritura con IA es una máquina para eliminar precisión haciendo que el resultado parezca más deliberado.

¿Por qué las herramientas de dictado con IA reescriben lo que dijiste?

La respuesta a nivel de categoría no es que nadie se propusiera distorsionar el habla. Es que «limpia esta transcripción» es una función genuinamente atractiva, y la forma obvia de construirla es pasar la transcripción en bruto por un modelo de lenguaje.

El habla en bruto es desordenada: muletillas, arranques en falso, palabras repetidas, puntuación ausente. Un LLM al que le pides que ordene eso produce una salida preciosa. El problema es que un modelo de lenguaje no edita, en el sentido en que edita un corrector humano que quita un «eh». Regenera. La salida es un texto nuevo que el modelo considera una buena versión de tu entrada, y «buena» es por donde se escapa tu intención. Los modelos entrenados hacia la utilidad y la fluidez tienen opiniones: las cautelas parecen ruido, los matices parecen estorbo, una formulación incómoda pero precisa parece algo que mejorar. La mayoría de las veces la reescritura es inofensiva. Pero es probabilística, y no puedes saber por la salida qué frases se transcribieron y cuáles se compusieron. El pulido es uniforme; la fidelidad no.

Ese es el problema profundo de los pipelines de pulido con LLM: fallan en silencio y con confianza. Un reconocedor de voz que te oye mal suele producir algo visiblemente erróneo. Una capa de reescritura que te traiciona produce algo visiblemente correcto — gramatical, plausible, vestido con tu voz —, que es exactamente por lo que el «no despliegues» invertido se envía en vez de detectarse.

Literal por defecto

La postura de Keebye es sencilla: lo que oyó el modelo de voz a texto es lo que aterriza en tu cursor. Por defecto, ningún modelo de lenguaje se sienta entre la transcripción y tu terminal componiendo una versión mejor de ti — la fase de pulido por defecto es una lista corta de reglas deterministas, y ya está.

Es una apuesta deliberada, y viene del caso de uso del vibe coding. Cuando tu dictado es el canal de control de agentes de programación, el trabajo de la herramienta es transporte, no autoría. Tú eres quien escribe; el agente es la audiencia; la capa de dictado no debería tener opiniones. Ese flujo de trabajo — decir prompts enteros en vez de teclearlos — está expuesto en dictado por voz para prompts de IA.

hay un pulido con LLM en Keebye — llegaré a él —, pero es opcional, se ejecuta enteramente en tu máquina y opera bajo una salvaguarda diseñada para rechazar formas comunes de desviación, expansión descontrolada y repetición. Si la salida no supera esa comprobación, Keebye recurre a las reglas. Lo predeterminado siguen siendo las reglas.

Entonces, ¿qué hace realmente la limpieza?

Literal no tiene por qué significar en bruto. Keebye incluye un pase de limpieza opcional — la mejora, activada por defecto y anulable por app —, pero está basado en reglas, no en un modelo, y la lista completa de lo que hace cabe en un párrafo:

Elimina muletillas sueltas (eh, mmm, este, o sea). Colapsa repeticiones inmediatas de palabras — «el el» se convierte en «el». Colapsa espacios en blanco. Pone en mayúscula la primera letra y añade un punto final si no terminaste con uno. Esa es toda la lista. Las reglas son deterministas y de alcance estrecho; no reordenan cláusulas deliberadamente, ni eliminan negaciones, ni sustituyen sinónimos.

Antes de que se ejecute la limpieza se aplican tus sustituciones de diccionario — reemplazos definidos por ti para la jerga y los nombres propios que los modelos de voz destrozan, de modo que «pnpm» y los nombres de tus módulos lleguen escritos como los escribe tu código.

Y si incluso el pase basado en reglas es más intervención de la que quieres, desactiva la mejora y Keebye inserta la transcripción en bruto del modelo de voz: muletillas, repeticiones y todo. Para algunos contextos — citar a alguien, dictar en un campo donde el punto final rompe cosas — la transcripción en bruto es la mejor opción, y la anulación por app te deja elegirla.

El pulido opcional, y la salvaguarda de fidelidad que lo rodea

Ahora, el LLM que prometí. Para quienes sí quieren una limpieza más inteligente, Keebye ofrece un modo de pulido opcional (polish_mode puesto en local_llm): un modelo Qwen3 pequeño ejecutándose on-device vía llama.cpp, acelerado por Metal, sin enviar nada a ninguna parte. Sus instrucciones son la versión estrecha del pulido: arreglar puntuación y mayúsculas, quitar muletillas, mantener las palabras exactas, el idioma y el significado del usuario, preservar código y nombres de archivo literalmente. La generación es determinista (muestreo greedy, misma entrada → misma salida) y está acotada; si el modelo se atasca más allá de un plazo de dos segundos, se descarta su salida.

Pero las instrucciones son esperanzas, y este artículo existe porque las esperanzas no son garantías. Así que todo resultado pulido con LLM pasa por una salvaguarda de fidelidad antes de poder tocar tu cursor. La salida debe conservar al menos el 50 % de los tokens de la transcripción original. No debe hincharse — cualquier cosa más allá de aproximadamente el doble de la longitud original (más cuatro tokens) falla. La repetición descontrolada se detecta. Si el resultado pulido no supera una de esas comprobaciones, Keebye lo descarta y recurre a la limpieza basada en reglas.

Esa salvaguarda atrapa pérdidas graves de tokens, expansión descontrolada y repetición antes de que la salida del modelo pueda sustituir a la transcripción limpiada por reglas. Es una heurística, no una prueba semántica: una reescritura corta o una negación cambiada aún podrían pasar sus umbrales. Si un matiz no se puede permitir desviarse, mantén el pulido con IA desactivado y revisa el texto insertado antes de enviarlo.

Los límites honestos

Literal significa literal. Si divagas, tu divagación aterriza — incluso el pulido opcional está instruido y protegido hacia la limpieza, no hacia la composición, así que Keebye no convertirá un pensamiento serpenteante en una instrucción nítida. La disciplina de decir lo que quieres decir sigue siendo cosa tuya.

La limpieza basada en reglas es intencionadamente tonta. Quita el «eh»; no va a arreglar tu gramática, ni a reestructurar una frase interminable, ni a notar que te has contradicho. Cualquier cosa más lista reintroduciría los juicios de valor que este diseño existe para evitar.

Y la fidelidad protege contra la reescritura, no contra el reconocimiento erróneo. Si el modelo de voz oye «caché» como «cache», ese error se preserva fielmente — la salvaguarda no tiene ni idea de qué querías decir, solo de qué se transcribió. El dictado literal mueve la frontera de confianza al modelo de voz a texto; no la elimina. (Relacionado: si tu problema es que el modelo transcribe directamente en el idioma equivocado, ese es otro fallo con otro arreglo — fija tu idioma de dictado.)

Por último, el encuadre de categoría: el pulido con IA no es una estafa, y a mucha gente le gusta genuinamente una salida que se lea más suave de lo que habla. Si esa persona eres tú, otras herramientas se apoyan bien en eso, y nuestras comparaciones lo dicen con honestidad — Keebye vs Wispr Flow y Keebye vs Superwhisper incluyen ambas una sección real de «cuándo encaja mejor la otra herramienta».

Transporte, no autoría

El trato que ofrece Keebye es estrecho a propósito: tú hablas y una transcripción ligeramente limpiada aterriza donde está tu cursor. Cuando esas palabras son prompts para un agente que actuará sobre ellas literalmente, estrecho es una virtud. Lo más caro que una herramienta de dictado puede hacerle a un desarrollador no es una errata. Es una frase fluida que nunca dijiste.

Keebye está en acceso anticipado para macOS. Empieza tu prueba gratuita abajo, dicta «No despliegues hasta que pasen los tests» y comprueba si esa restricción exacta sobrevive a la limpieza. Esa prueba es todo el producto.

Prueba la instrucción que no se puede permitir desviarse

Empieza tu prueba gratuita y dicta un prompt con un matiz crítico — sobre todo un «no» — y luego inspecciona lo que llega.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Sigue leyendo