Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
V

voxtype

> 编程语言
Open source

Voice-to-text with push-to-talk for Wayland compositors

1.0K stars0 likes0 views
WebsiteGitHub

About

Voice-to-text with push-to-talk for Wayland compositors

Voxtype

voxtype.io

Voice-to-text for Linux. 9-11× realtime on your CPU. Local by default.

Hold a hotkey (default: ScrollLock) while speaking, release to transcribe and output the text at your cursor position. Voxtype runs Cohere Transcribe (#1 on the Open ASR Leaderboard) faster than realtime on a plain Zen 4 CPU. Parakeet, Whisper, and six more engines if you want them. No cloud, no subscription, no telemetry.

Features

Speed and engines

  • Cohere Transcribe at 9-11× realtime — on your CPU. Quantized to 1.5 GB (q4f16). Punctuation, capitalization, and inverse text normalization out of the box. Sits at #1 on the Open ASR Leaderboard. (New in 0.7.0)
  • Parakeet on AMD and NVIDIA GPUs. MIGraphX 7.2 for Radeon, separate CUDA 12 and CUDA 13 binaries for every NVIDIA driver generation, Vulkan for Whisper across vendors. (MIGraphX new in 0.7.0)
  • OpenVINO Whisper on Intel NPU, CPU, or GPU. Run Whisper models through OpenVINO IR with Intel NPU acceleration on Lunar Lake machines, plus CPU/GPU fallback on other Intel systems.
  • Text processing built in. Spoken punctuation ("comma" → ,), per-user replacement tables for common mistranscriptions, and an optional post-processing pipe through any LLM or shell script. Fix domain terms, drop filler words, polish grammar — all without leaving voxtype.
  • Dynamic per-engine model loading. Configure all 9 engines, pay memory only for the active one. Models load on first use and unload when idle.
  • Nine transcription engines. Whisper, Parakeet, Moonshine, SenseVoice, Paraformer, Dolphin, Omnilingual, Cohere, and OpenVINO Whisper. Switch with voxtype configure or one config line. CJK and 1600+ languages covered by the multilingual engines.
  • Meeting mode. Continuous transcription with chunked processing, speaker attribution, and export to Markdown, JSON, SRT, or VTT.

Native Linux integration

  • Hyprland, Niri, Sway, River, GNOME, KDE. Compositor keybindings everywhere, evdev fallback for X11, Wayland-first typing via wtype with full CJK support. Falls back through dotool → ydotool → clipboard if any layer is unavailable.
  • Pauses your music. Auto-pauses Spotify, Plasma media players, anything that speaks MPRIS the moment you start dictating. Resumes on release.
  • Floating waveform OSD. Matches your swayosd band by default — same vertical position as volume and brightness — so the level meter sits where you already look for system feedback.
  • Interactive TUI configure. voxtype configure (also surfaces in Walker / fuzzel / rofi) edits every option in ~/.config/voxtype/config.toml for you — no hand-editing TOML. Auto-downloads missing models, swaps GPU binaries via pkexec, restarts the daemon when needed.
  • Push-to-talk or toggle. Hold to record, or press once to start/stop. Optional audio cues when recording starts/stops.

Trust

  • Local by default. No cloud. No subscription. No telemetry. Optional remote Whisper servers when you want them. Your audio stays on your machine until you choose otherwise.
  • MIT licensed. AUR (voxtype, voxtype-bin, plus voxtype-bin-rc for testers who want pre-release builds — see docs/INSTALL.md), .deb, .rpm, Homebrew on macOS. Signed release binaries from a reproducible Docker pipeline.

Quick Start

Most users should install a pre-built package. The steps below are for building from source.

…

For the full per-distro dependency matrix (including GPU backends), see docs/INSTALL.md.

Compositor Keybindings

Voxtype works best with your compositor's native keybindings. Add these to your compositor config.

Not sure which compositor you have? Run echo $XDG_CURRENT_DESKTOP in a terminal. Common values: Hyprland, sway, river, KDE, GNOME.

Hyprland (~/.config/hypr/hyprland.conf):

bind = SUPER, V, exec, voxtype record start
bindr = SUPER, V, exec, voxtype record stop

Sway (~/.config/sway/config):

bindsym --no-repeat $mod+v exec voxtype record start
bindsym --release $mod+v exec voxtype record stop

River (~/.config/river/init):

bash
riverctl map normal Super V spawn 'voxtype record start'
riverctl map -release normal Super V spawn 'voxtype record stop'

KDE Plasma (KWin):

KDE does not support key-release events, so use toggle mode. Open System Settings > Shortcuts > Custom Shortcuts, create a new shortcut, and set the command to:

voxtype record toggle

Assign your preferred key combination (e.g., Meta+V). Since KDE handles the keybinding, the built-in hotkey should be disabled (see below).

Then disable the built-in hotkey in your config:

toml
# ~/.config/voxtype/config.toml
[hotkey]
enabled = false

X11 / Built-in hotkey fallback: If you're on X11 or prefer voxtype's built-in hotkey (ScrollLock by default), add yourself to the input group: sudo usermod -aG input $USER and log out/in. See the User Manual for details.

Omarchy / Multi-modifier keybindings: If using keybindings with multiple modifiers (e.g., SUPER+CTRL+X), releasing keys slowly can cause typed text to trigger window manager shortcuts instead of inserting text. See Modifier Key Interference in the troubleshooting guide for the solution using output hooks and Hyprland submaps.

Usage

  1. Run voxtype (it runs as a foreground daemon)
  2. Hold ScrollLock (or your configured hotkey)
  3. Speak
  4. Release the key
  5. Text appears at your cursor (or in clipboard if typing isn't available)

Press Ctrl+C to stop the daemon.

Toggle Mode

If you prefer to press once to start recording and again to stop (instead of holding):

bash
# Via command line
voxtype --toggle

# Or in config.toml
[hotkey]
key = "SCROLLLOCK"
mode = "toggle"

Meeting Mode

For longer recordings like meetings and interviews, meeting mode provides continuous transcription with automatic chunking, speaker attribution, and export.

bash
# Start a meeting
voxtype meeting start --title "Weekly standup"

# Check status
voxtype meeting status

# Stop and export
voxtype meeting stop
voxtype meeting export latest --format markdown --speakers --timestamps

Meetings are stored locally and can be exported to Markdown, plain text, JSON, SRT, or VTT. Use voxtype meeting list to see past meetings, and voxtype meeting summarize latest to generate an AI summary via Ollama.

Configuration

Config file location: ~/.config/voxtype/config.toml

See config/default.toml for the full annotated default configuration.

…

Audio Feedback

Enable audio feedback to hear a sound when recording starts and stops:

toml
[audio.feedback]
enabled = true
theme = "default"  # Built-in themes: default, subtle, mechanical
volume = 0.7       # 0.0 to 1.0

Built-in themes:

  • default - Clear, pleasant two-tone beeps
  • subtle - Quiet, unobtrusive clicks
  • mechanical - Typewriter/keyboard-like sounds

Custom themes: Point theme to a directory containing start.wav, stop.wav, and error.wav files.

Text Processing

Voxtype can post-process transcribed text with word replacements and spoken punctuation.

Word replacements fix commonly misheard words:

toml
[text]
replacements = { "vox type" = "voxtype", "oh marky" = "Omarchy" }

Spoken punctuation (opt-in) converts spoken words to symbols - useful for developers:

toml
[text]
spoken_punctuation = true

With this enabled, saying "function open paren close paren" outputs function(). Supports period, comma, brackets, braces, newlines, and many more. See CONFIGURATION.md for the full list.

Post-Processing Command (Advanced)

For advanced cleanup, you can pipe transcriptions through an external command like a local LLM for grammar correction, filler word removal, or text formatting:

toml
[output.post_process]
command = "ollama run llama3.2:1b 'Clean up this dictation. Fix grammar, remove filler words:'"
timeout_ms = 30000  # 30 second timeout for LLM

The command receives text on stdin and outputs cleaned text on stdout. On any failure (timeout, error), Voxtype gracefully falls back to the original transcription.

See CONFIGURATION.md for more examples including scripts for LM Studio, Ollama, and llama.cpp.

CLI Options

…

Whisper Models

Model Size English WER Speed
tiny.en 39 MB ~10% Fastest
base.en 142 MB ~8% Fast
small.en 466 MB ~6% Medium
medium.en 1.5 GB ~5% Slow
large-v3 3 GB ~4% Slowest
large-v3-turbo 1.6 GB ~4% Fast

For most uses, base.en provides a good balance of speed and accuracy. If you have a GPU, large-v3-turbo offers excellent accuracy with fast inference.

Multilingual Support

The .en models are English-only but faster and more accurate for English. For other languages, use large-v3 which supports 99 languages.

Use Case 1: Transcribe in the spoken language (speak French, output French)

toml
[whisper]
model = "large-v3"
language = "auto"     # Auto-detect and transcribe in that language
translate = false

Use Case 2: Translate to English (speak French, output English)

toml
[whisper]
model = "large-v3"
language = "auto"     # Auto-detect the spoken language
translate = true      # Translate output to English

Use Case 3: Force a specific language (always transcribe as Spanish)

toml
[whisper]
model = "large-v3"
language = "es"       # Force Spanish transcription
translate = false

With GPU acceleration, large-v3 achieves sub-second inference while supporting all languages.

Supported Engines

Voxtype ships separate binaries for Whisper and ONNX engines. Use voxtype setup onnx --enable to switch to the ONNX binary, or --disable to switch back.

Engine Languages Architecture Best For
Whisper (default) 99 languages Encoder-decoder (whisper.cpp) General use, multilingual
Parakeet English FastConformer TDT (ONNX) Fast English transcription
Moonshine English Encoder-decoder (ONNX) Edge devices, low memory
SenseVoice zh, en, ja, ko, yue CTC encoder (ONNX) Chinese, Japanese, Korean
Paraformer zh+en, zh+yue+en Non-autoregressive (ONNX) Chinese-English bilingual
Dolphin 40 languages + 22 Chinese dialects CTC E-Branchformer (ONNX) Eastern languages (no English)
Omnilingual 1600+ languages wav2vec2 CTC (ONNX) Low-resource and rare languages
Cohere Transcribe 14 languages Encoder-decoder (ONNX) Fast CPU dictation with punctuation
OpenVINO Whisper 99 languages Encoder-decoder (OpenVINO) Intel NPU (Lunar Lake), CPU/GPU fallback

To set the engine in your config:

toml
engine = "sensevoice"  # or: whisper, parakeet, moonshine, paraformer, dolphin, omnilingual, cohere, openvino

Or override on the command line:

bash
voxtype --engine sensevoice

GPU Acceleration

Voxtype supports optional GPU acceleration for significantly faster inference. With GPU acceleration, even the large-v3 model can achieve sub-second inference times.

Vulkan (AMD, NVIDIA, Intel)

Packages include a Vulkan binary. To enable GPU acceleration:

bash
# Install Vulkan runtime (if not already installed)
# Arch:
sudo pacman -S vulkan-icd-loader

# Ubuntu/Debian:
sudo apt install libvulkan1

# Fedora:
sudo dnf install vulkan-loader

# Enable GPU acceleration
sudo voxtype setup gpu --enable

# Check status
voxtype setup gpu

To switch back to CPU: sudo voxtype setup gpu --disable

Building from Sou

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rustaccessibilitydictationgnomehyprland

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言