Voxclip is a command-line tool for voice capture and transcription on Linux and macOS. It runs locally with open-source speech models, and the default flow records audio, transcribes it, and copies the result to your clipboard in one command.
- Installation
- Prerequisites
- Quickstart
- Commands
- Flags
- Recording Backends
- Troubleshooting
- Advanced Runtime Details
- Examples
- Development
Voxclip is installed from release artifacts. There is intentionally no voxclip install command.
Default
curl -fsSL https://raw.githubusercontent.com/fmueller/voxclip/main/scripts/install-voxclip.sh | shPinned
curl -fsSL https://raw.githubusercontent.com/fmueller/voxclip/main/scripts/install-voxclip.sh | sh -s -- --version vX.Y.ZReview first
curl -fsSL https://raw.githubusercontent.com/fmueller/voxclip/main/scripts/install-voxclip.sh -o install-voxclip.sh
less install-voxclip.sh
sh install-voxclip.shThe installer:
- detects your OS/arch and downloads the matching release archive
- verifies archive integrity with
checksums.txt - installs
voxclipto~/.local/binand whisper runtime to~/.local/libexec/whisper/whisper-cli
Installer downloads come from GitHub Releases assets for the selected tag. The target machine does not build whisper.cpp; the release archive already contains a prebuilt whisper-cli binary.
- Download the matching archive for your OS/arch from GitHub Releases.
- Extract it and keep this layout intact:
voxclip
libexec/whisper/whisper-cli
- Put
voxclipon yourPATHand preserve its relative path tolibexec/whisper/whisper-cli.
Voxclip requires a recording backend to capture audio.
macOS:
ffmpeg(required) - install withbrew install ffmpeg
Linux (at least one):
pw-record(PipeWire) - preferred, usually pre-installed on modern distrosarecord(ALSA utils) - fallback (apt install alsa-utils/dnf install alsa-utils)ffmpeg- last resort fallback (apt install ffmpeg/dnf install ffmpeg)
voxclip --version
voxclip setup
voxclipvoxclip setupdownloads and verifies the selected model.voxclipruns the default flow: record -> transcribe -> copy.- Expected result: transcript prints in the terminal and is copied to your clipboard.
voxcliprun the default flow (record -> transcribe -> copy)voxclip recordrecord audio to WAVvoxclip transcribe <audio-file>transcribe existing audiovoxclip deviceslist recording devices and backend diagnosticsvoxclip setupdownload and verify model assets
For complete command and flag reference, run voxclip --help and voxclip <command> --help.
Flags are command-scoped. If you pass a flag to a command that does not support it, Voxclip returns an unknown-flag error.
--model <name|path>select a model name or local model path--model-dir <path>override model storage directory--language <auto|en|de|...>set transcription language--auto-downloadautomatically download a missing model--backend <auto|pw-record|arecord|ffmpeg>choose recording backend--input <selector>choose input device (for example:1on macOS, a PipeWire node ID forpw-record, orhw:1,0forarecord)--input-format <pulse|alsa>force ffmpeg input format on Linux--copy-emptycopy blank transcripts to clipboard--silence-gateenable near-silent WAV detection before transcription--silence-threshold-dbfs <value>set silence-gate threshold--duration <duration>set fixed recording duration, e.g.10s--immediatestart recording immediately--no-progressdisable spinner/progress indicators--verboseenable verbose logs--jsonoutput logs in JSON format
voxclip record --helpincludes recording-only flags such as--output.voxclip transcribe --helpincludes transcription/copy flags such as--copy.voxclip setup --helpincludes model setup flags only.voxclip devices --helphas no operational flags.
Linux backend order:
pw-recordarecordffmpeg
macOS backend:
ffmpeg(avfoundation)
Use voxclip devices for diagnostics and --backend to force a backend.
If recording starts from the wrong microphone, run voxclip devices, find the desired input identifier, and pass it with --input:
- macOS (ffmpeg/avfoundation):
--input ":1"or--input ":2"(device index) - Linux (pw-record):
--input "42"(PipeWire node ID frompw-cli ls Node) - Linux (arecord):
--input "hw:1,0"(ALSA PCM device fromarecord -L)
- No speech detected (
[BLANK_AUDIO]) -> check mute state, input device, and microphone gain. - Blank transcript not copied -> use
--copy-empty. - Wrong microphone selected -> run
voxclip devicesand set--input. - Near-silent WAV false positives -> debug with
--silence-gate=false, then tune--silence-threshold-dbfs. - Missing recording backend -> install one of
pw-record,arecord, orffmpeg. - Missing whisper runtime -> reinstall an official release so
libexec/whisper/whisper-cliis present.
Voxclip expects this bundled layout in release archives:
voxclip
libexec/whisper/whisper-cli
- Runtime lookup: Voxclip resolves
libexec/whisper/whisper-clirelative tovoxclip. - Model storage (Linux):
$XDG_DATA_HOME/voxclip/modelsor~/.local/share/voxclip/models - Model storage (macOS):
~/Library/Application Support/voxclip/models - Model storage override:
--model-dir - GPU offload depends on how bundled
whisper-cliis built per platform. - Portability-first bundles may run CPU-only on some systems.
- If you require GPU acceleration everywhere, ship whisper binaries compiled for your target backend and driver stack.
For voice-prompt workflows with terminal coding agents and voice notes, see examples/README.md.
For contributors working on Voxclip source and release tooling.
Both platforms:
- Go 1.26+
git
Building whisper-cli (optional, for local packaging):
cmake(brew install cmake/apt install cmake/dnf install cmake)
Optional convenience:
- go-task (
brew install go-task/dnf install go-task) forTaskfile.ymlwrappers - Ubuntu/Debian via apt requires adding Task's repo first:
curl -1sLf 'https://dl.cloudsmith.io/public/task/task/setup.deb.sh' | sudo -E bash
sudo apt install taskAfter cloning, stage a host-local whisper runtime once:
task whisper:buildWithout Task installed:
./scripts/build-whisper-cli.shGo toolchain is the source of truth; Taskfile provides convenience wrappers:
task tidy
task build
task test
task test:integration
task test:e2eThe e2e test requires a built whisper binary path via VOXCLIP_E2E_WHISPER_PATH.
Example:
task whisper:build
VOXCLIP_E2E_WHISPER_PATH="$(pwd)/packaging/whisper/linux_amd64/whisper-cli" task test:e2eAdjust the whisper path to your host target directory (for example darwin_arm64 on Apple Silicon).
You can optionally override the model cache location with VOXCLIP_E2E_MODEL_DIR.
For release process and packaging details, see RELEASING.md.
For user-facing release notes, see CHANGELOG.md.