son las 16:07 y 28°C
TLATOL _
BAJO MI CONTEXTO · MI EXPERIENCIA · SIN CORTES · SIN PELOS · EN EL TECLADO ~/tanker · desde 1999
~/p/f8-dictado-voz-local-arch-1-concepto · PUB 2026-04-28 (hace 17 horas) ~ 3 min de lectura

F8 y a chambear: la idea -- dictado por voz local sin pagar nada

> 39 dictados acumulados, cero APIs, cero subscripciones, cero envío de voz a la nube. Whisper local con la GPU, F8 para grabar, F8 para parar y pegar donde sea. Parte 1: la idea, el problema y el stack.

39 dictados acumulados desde que armé esto. Cero APIs, cero subscripciones, cero envío de mi voz a la nube. Whisper corriendo local con la GPU, F8 para grabar, F8 para parar y pegar donde sea.

El pex

Escribir en consola todo el día cansa. Y los dictado-services en la nube tienen tres problemas que para mí pesan:

  1. Privacidad. Mandar mi voz a un servidor ajeno todos los días no me late. Aunque la "anonimicen", ahí queda.

  2. Spanglish. Siri, Google, Whisper API: todos batallan cuando cambias de idioma a media frase. "Voy a hacer un commit de la feature" se vuelve "Voy a hacer un comprometo de la característica" o cosas peores.

  3. Latencia + dependencia de red. Si se cae el WiFi, no hay dictado. Y siempre hay un round-trip de 500ms-2s mínimo.

Solución: armarlo local, en mi GPU, sin APIs.

Solución en una frase

F8 graba. F8 para. El texto se pega solo en la ventana activa. 100% local.

Sin abrir terminal, sin copiar a mano, sin elegir ventana. Si estoy escribiendo en Konsole, se pega ahí. Si estoy en Teams, se pega ahí. Si estoy en Kate, se pega ahí.

Stack

Todo viene de pacman o AUR, sin venvs de Python, sin Docker, sin scripts de instalación raros.

Paquete

Pa qué

whisper.cpp

Motor de speech-to-text en C++. Corre en GPU vía Vulkan

whisper.cpp-model-large-v3-turbo

Modelo de Whisper (~1.5GB), multilingüe, maneja Spanglish

ydotool

Simula teclado en Wayland (necesario pa' auto-pegar)

kdotool-bin

Detecta la ventana activa en KDE Wayland

wl-clipboard

Acceso al portapapeles en Wayland (wl-copy)

pipewire

Servidor de audio (pw-record para capturar)

libnotify

Notificaciones de escritorio (notify-send)

Esto obtienes al final

Un solo script de Bash de 49 líneas. Aprietas F8. Hablas. Aprietas F8 otra vez. El texto aparece pegado donde estabas escribiendo. Funciona en cualquier ventana del sistema, en spanglish o en español puro o en inglés, sin que tu voz salga a internet.

Total de dependencias externas: cero. Todo lo que toca es local: el binario de whisper.cpp, el modelo en disco, tu GPU, y el daemon de ydotool corriendo en background.

En la siguiente parte

La carne técnica: por qué whisper.cpp y no openai-whisper de Python, por qué el modelo grande y no uno chico, el truco de Ctrl+V vs Ctrl+Shift+V que hace que esto funcione donde sea, y el experimento que descarté con Ollama.

Próxima entrega: F8 y a chambear: la parte técnica.