Lettera Ink

Local voice-to-text for Linux desktops (Ubuntu/KDE/GNOME) – speak, stop, and let your text appear

Ubuntu

KDE / GNOME

Whisper

whisper.cpp

faster-whisper

GPLv3

Lettera Ink lets you speak and have text typed into the window you’re using. It records from your microphone, runs a local Whisper engine (Snap whisper-gael, whisper.cpp, or faster-whisper via whisper-ctranslate2), and types the transcription in the focused application.

Source code & full technical docs (README): https://gitlab.com/gd-pub/lettera-ink

The name “Lettera Ink” is a small homage to the classic Olivetti Lettera machines – portable, practical, meant to write anywhere. This is the voice-driven version, living quietly in ~/lettera-ink.

Voice to text on your desktop: how it works

The core idea is very simple: record → transcribe → type → log. Lettera Ink keeps everything under ~/lettera-ink so engines can see the audio without sandbox issues, and so you can inspect, debug, or remove things whenever you like.

Engines are defined by simple YAML files under ~/lettera-ink/implementations/. This page is the overview and the “why” / “what it feels like”; the README in the repository is the detailed technical reference (all commands, engine internals, placeholders, model directories).

Install Lettera Ink

Stable release (main branch):

bash <(curl -fsSL https://gitlab.com/gd-pub/lettera-ink/-/raw/main/installer.sh)

This installer will (high level):

Curious about development builds or release candidates? The README on GitLab explains how to install from the staging branch.

Use it: start and stop dictation

Lettera Ink is built around a very simple, two-step workflow:

1. Start recording

lettera start it base

This starts recording in Italian using the base model. If you omit arguments, it uses the defaults stored in ~/lettera-ink/config.yaml for the currently selected engine.

Examples: lettera start en base, lettera start it small, or simply lettera start to reuse your defaults.

2. Stop and transcribe

lettera stop

This stops the recorder, runs your selected engine, and types the result into the current window. If the focused window looks like a terminal, newlines are turned into spaces to avoid accidentally running commands.

You can force the “no real newlines” behavior anywhere by running: LETTERA_NO_NEWLINES=1 lettera stop. The README explains the safety heuristics in more detail.

Other commands include: lettera status, lettera clean, lettera config, lettera log, lettera help – see the README for the full CLI reference.

Configure language, model, timeout

Change defaults with an interactive command:

lettera config

It shows available implementations, checks their requirements, and asks for your language/model/timeout. Values are stored per engine under ~/lettera-ink/config.yaml.

If an engine uses local model files, Lettera Ink can also download them for you. If a download fails (network hiccup, server side issue), you can retry or choose a different model without redoing the entire configuration.

The installer runs lettera config --installer once, so after the first install you can usually just:

lettera start
# speak…
lettera stop

Keyboard shortcuts for KDE / GNOME

The installer creates helper scripts in ~/lettera-ink/shortcuts/:

Bind them in KDE (System Settings → Shortcuts → Add Application) or in GNOME (Settings → Keyboard → Custom Shortcuts) to get global “start talking / stop talking” keys.

The README goes into more detail for KDE, GNOME and other desktop environments, with step-by-step instructions and screenshots.

Privacy and local processing

Lettera Ink runs on your machine. Audio is recorded locally (PipeWire/ALSA) into ~/lettera-ink/tmp/ and passed to a local engine (Snap whisper-gael, whisper.cpp, or faster-whisper).

The project itself does not send your audio or text to cloud services. Logs are stored in ~/lettera-ink/lettera.log so you can inspect, rotate, or delete them as you like.

If you want to audit exactly which commands are run and where files live, the README documents the shell scripts and directory layout in detail.

Why “Lettera”? A short note

Olivetti’s “Lettera” typewriters were small, portable, and built so people could write almost anywhere. Lettera Ink keeps that spirit, but replaces the mechanical keys with your voice, and the paper with whatever window you have open.

It also stays small and lives in your home directory, so you can read, edit, and update it easily – in the same spirit as lifting the cover of a typewriter and replacing the ribbon yourself.

License and project link

Lettera Ink is Free Software, released under the GNU GPLv3. You can run it, study it, share it, and modify it. If you distribute modified versions, you keep the same license.

Project repository (with README, installer, and latest changes):
https://gitlab.com/gd-pub/lettera-ink

This page is the high-level overview and quickstart. For exact CLI reference, engine internals, YAML examples and dev workflow, please read the README in the repository.