SayItErmano – local-first voice dictation for Linux SayItErmano v0.4.0, an unofficial community port of FluidVoice for Linux, is now available as a local-first voice dictation app that transcribes speech on-device and optionally polishes text via OpenAI-compatible endpoints. The GTK 4 app, installable via a one-shot script or .deb package, supports global hotkey recording, faster-whisper transcription on CUDA or CPU, and text insertion into any focused application. Dictation app for Linux — press a key, speak, and polished text lands in any app. 100% local speech-to-text · optional AI polish · native GTK 4 app Note This is an unofficial, community port of FluidVoice https://github.com/altic-dev/FluidVoice — the free, open-source, on-device dictation app for macOS — to Linux. It is not built by the FluidVoice authors: the macOS app is Swift/Xcode, this is a Python implementation of the same behavior and, where licensed to do so GPLv3 , the same prompts, rules and sounds. See docs/BEHAVIOR-SPEC.md /acailic/SayItErmano/blob/linux/docs/BEHAVIOR-SPEC.md for what was ported, with file:line evidence from the upstream sources. Naming: the project, repo, package, command and env-var overrides SAYITERMANO CONFIG , SAYITERMANO SOCKET , SAYITERMANO API KEY , … are SayItErmano sayit-ermano . Only the Python module keeps the upstream fluidvoice naming on purpose — internals credit the port's origin. Installing sayit-ermano replaces the pre-rename fluidvoice-linux package and takes over its config, history and models. v0.4.0 https://github.com/acailic/SayItErmano/releases/tag/v0.4.0 — the SayItErmano identity: repo, .deb package, command, launcher and tray entry all carry the new name, plus an original app icon gold tile, speech bubble + waveform — no FluidVoice artwork anywhere . One-shot installer now defaults to a user-space install with no sudo. 1. Global hotkey default: Right Ctrl, toggle mode starts recording — 16 kHz mono via PipeWire. 2. Local transcription — faster-whisper on CUDA GPU when available, CPU int8 otherwise whisper.cpp, torch, and NVIDIA Parakeet TDT via ONNX Runtime backends also supported . 3. Post-processing chain — filler-word removal → custom dictionary → spoken punctuation commands literal comma , literal new line , example literal dot com , … — the full FluidVoice rule table. 4. Optional AI polish — the verbatim FluidVoice dictation prompt sent to any OpenAI-compatible endpoint OpenAI, Groq, Ollama, LM Studio, llama.cpp server . Turns "um lets meet on tuesday around 3 no wait 4 p.m." into "Let's meet on Tuesday at 4 p.m." 5. Text insertion — xdotool type keystrokes clipboard-free , or clipboard paste with automatic restore for long texts. Paste is verified by observing the target read the selection before your clipboard is restored, dictation text flashes are hidden from clipboard managers CopyQ live-verified , and terminal apps get ctrl+shift+v . Plus history, start/stop sounds the original GPLv3 FluidVoice SFX , and desktop notifications. hotkey ─▶ pw-record 16k mono ─▶ faster-whisper CUDA/int8 ─▶ fillers/dictionary/ spoken-punctuation │ typed into focused app ◀─ xdotool type / paste+restore ◀─ optional AI polish OpenAI-compatible / Ollama One download + one command, then SayItErmano appears in your app launcher, autostarts at login, and needs no terminal. The default install is user-space and needs no sudo at all ~/.local/… + a systemd user unit that shadows any system unit ; it only asks for sudo if a required system package GTK/pygobject, xdotool, … is missing: curl -fsSL https://raw.githubusercontent.com/acailic/SayItErmano/linux/scripts/install-one-shot.sh | bash Prefer the classic system-wide .deb root-owned, /opt runtime ? curl -fsSL https://raw.githubusercontent.com/acailic/SayItErmano/linux/scripts/install-one-shot.sh | bash -s -- --system curl -LO https://github.com/acailic/SayItErmano/releases/download/v0.4.0/sayit-ermano 0.4.0-2 amd64.deb sudo apt install ./sayit-ermano 0.4.0-2 amd64.deb Grab a specific version from the releases page https://github.com/acailic/SayItErmano/releases , or build it yourself: git clone … -b linux && ./packaging/build-deb.sh . What you get after install log out/in once : - App launcher entry "SayItErmano" opens the native app with its own icon - Daemon autostarts at login XDG autostart; a systemd user unit is also provided: systemctl --user enable --now sayit-ermano - sayit-ermano available everywhere in PATH doctor , toggle , settings , history , … - Removes cleanly with sudo apt remove sayit-ermano — upgrading from the pre-rename fluidvoice-linux package replaces it automatically; your config, history and downloaded models are kept git clone https://github.com/acailic/SayItErmano.git -b linux cd SayItErmano ./scripts/install.sh apt deps + venv reuses your CUDA torch if present run it foreground; systemd unit in systemd/ .venv/bin/sayit-ermano daemon Press Right Ctrl , speak, press Right Ctrl again. Done. Useful commands: sayit-ermano app native GTK app: History, Settings, onboarding sayit-ermano doctor environment check sayit-ermano toggle CLI trigger bind to a DE shortcut on Wayland sayit-ermano cancel abort a recording sayit-ermano language cycle the dictation language language cycle sayit-ermano transcribe x.opus --json one-shot file transcription sayit-ermano history -n 10 sayit-ermano config init write ~/.config/sayit-ermano/config.toml sayit-ermano update check for a newer release + print the upgrade command Works on any Linux with Python 3.11+ — a pipx install lands under ~/.local/pipx or ~/.local/share/pipx and never touches the system Python: pipx install sayit-ermano from PyPI publishing is manual — if the latest release isn't on PyPI yet, use: pipx install git+https://github.com/acailic/SayItErmano.git@linux Upgrades are one command sayit-ermano update detects the pipx install and prints exactly this : pipx upgrade sayit-ermano You can also install a locally built wheel e.g. after git clone + uv build --wheel : pipx install ./dist/sayit ermano-