vinoWhisper

Live · on your NPU · offline

Live captioning for Linux

Live captions for anything playing on your Linux laptop, or for your own voice, as it happens. Hold a key and talk to type into any window. It runs on your Intel NPU, so nothing goes to the cloud and there is no account. It works in English, French, German and Spanish, and can translate the other three into English.

$ curl -fsSL https://github.com/karanshukla/vinoWhisper/releases/latest/download/install.sh | bash

Free and open source. Read install.sh (opens in a new tab) first if you like, or use pip install vinowhisper && vinowhisper-setup. Made for Linux laptops with an Intel NPU, Fedora Atomic and openSUSE Aeon included.

Overview

What you get

Captions on anything

Videos, calls, streams, one app or your microphone. Words show up about 1.5 seconds behind the audio, at best.

Voice typing

Hold Meta+H, talk, let go. The text is typed into whichever window has focus, offline, with the same model as the captions. See how it works.

Four languages

English, French, German and Spanish, plus translation of the three into English.

Private

Your audio never leaves the machine, and neither do your words: dictation cleanup and summaries run on your NPU too. No cloud, no API key, no account, no telemetry.

Easy on the laptop

The NPU does the work, so your CPU and GPU stay free and the fans stay quiet. The server quits itself after five idle minutes.

A transcript you keep

In the terminal, captions stay in your scrollback. Save them, and each session gets a summary written on the NPU. See saved sessions.

Why the NPU

Your laptop has an NPU. Put it to work.

Recent Intel laptop chips include an NPU, a small chip built for AI work, and on Linux almost nothing uses it. Live captioning suits it: the work never stops, but each piece is small. vinoWhisper puts the NPU to use, so captioning costs you no CPU, no GPU, no fan and no network.

Measured on one Wildcat Lake laptop, 2026-09-12.

0.70s
to caption 12 seconds of speech on the NPU
~1.5s
behind the audio, at best
0.2s
until the first word appears
0
cost when idle: the server quits itself

Languages

English, French, German and Spanish

Pick the language you are listening to and the captions come out in it, or let vinoWhisper detect it. A French documentary can also be captioned straight into English.

  • Offline, like everything else. Translation goes into English.
  • Switch from the tray menu, or set it up with the commands here.
  • New. Add a language with one setup command; it downloads about 1GB, once.
$ vinowhisper-setup --language fr
$ vinowhisper-setup --language auto
$ vinowhisper-setup --language auto --task translate

Terminal

Keep the transcript

In the terminal, a word is printed once and never rewritten, so the transcript lives in your scrollback. Quit and it is still there, and search and selection work as usual. Words still being double-checked wait on a grey hearing… line underneath. --plain and --json are there for pipes.

Voice typing

Voice typing: hold a key, talk, let go

Dictate into any window, from a chat box to a terminal, with the same offline model that does the captions. No separate app, no cloud.

  • Hold to talk. Hold Meta+H, speak, and release. The text is typed where your cursor is.
  • Or go hands-free. Tap once to start and tap again to finish. It also finishes by itself after a couple of seconds of quiet.
  • See it working. A small pill at the bottom of the screen shows your level and the words as they are recognised, then Transcribing on NPU… for the last stretch.
  • Long is fine. One dictation can run up to five minutes.
  • Nothing gets lost. If typing is refused, the text stays on your clipboard. The last five dictations wait in the tray under Recent dictations. After it pastes, the clipboard is cleared, and Klipper is told not to keep it.
  • Um, uh, scratch that. Optional cleanup drops fillers, stammers and what you take back (“three, no wait, four”) before the text is typed. A small model does it on your NPU, and it only ever deletes words, never adds or rewords one.

Overlay

A caption box, and a tray icon to run it

vinowhisper-tray floats the captions above every window, fullscreen video included. The box is click-through, so it never blocks the player’s controls underneath.

  • Meta+Alt+C shows or hides the captions, from anywhere. Clicking the tray icon does the same.
  • The tray menu keeps what you reach for mid-video: Show captions, Listen to (system audio or the microphone), Recent dictations, Settings…, Start at login and Quit.
  • Hidden means stopped. Nothing listens while the captions are hidden, they hide themselves after a quiet spell, and the tray icon tucks itself away after 30 idle minutes.

Sessions

Saved sessions, summarised on your NPU

Turn on Save transcripts and every caption session is kept when it ends. A while later the NPU writes it a summary: a title, a short overview and key points that each link back to the moment in the transcript. It waits for quiet, so captions and dictation never queue behind it.

  • A window of their own. vinowhisper-gui --sessions lists every session by date, length and title. Read the summary or the transcript, or Summarise again.
  • Bring a recording. Import audio or video…, or vinowhisper-transcribe lecture.mp4, turns a voice memo, a downloaded lecture or a call recording into a session without playing it. It gets a summary like any other.
  • Take it anywhere. Export… to Markdown for notes apps like Obsidian, plain text, or an .odt for LibreOffice, Word and Google Docs. Open in… hands it to your word processor or text editor, and Copy takes what is on screen.
  • Listen or search. With vinoSpeak (opens in a new tab) installed, Read aloud plays the summary or transcript. vinoSearch (opens in a new tab) can find a session by what was said in it.
  • Honest about what wrote it. Every summary is marked as machine-written, and names or numbers the transcript doesn’t contain are dropped. The transcript stays the record.

Settings

A settings window for everything else

vinowhisper-gui opens from Settings… in the tray menu, or as vinoWhisper Settings in your app menu. Each change applies as you make it, with no restart.

  • Shortcuts. The keys your desktop has bound for captions and dictation, and a button that opens your desktop’s own shortcut settings to change them.
  • Captions. Position (top or bottom), text size, what to listen to, how long to wait in silence before hiding, whether to save transcripts, and when the tray icon tucks away.
  • Speech. The language, or detect automatically, and whether to translate into English. Switching reloads the model, and is refused while you are mid-dictation so nothing is lost.
  • Cleanup. Turn on dictation cleanup, pick when it runs, and download, verify or delete its model.
  • Sessions. Summarise saved sessions automatically, and open the sessions window.
  • About. Check for updates, then Update: it installs the new release and restarts the server, and the model stays. vinowhisper-upgrade does the same from a terminal.

It follows your desktop’s light or dark theme and text size, works with screen readers, and folds its sidebar into tabs when the window is narrow. It shares its look with the other vinoPilot apps.

Under the hood: the parts that aren’t Whisper

Words are never rewritten

A word is committed once two overlapping windows agree on it (LocalAgreement-2). After that it stays put.

Scale to zero

A systemd socket unit owns a private Unix socket with nothing running. The server holds the 10–30s NPU load and exits after five idle minutes.

Verified downloads

The installer checks the wheel against the release’s SHA256SUMS. The model export is hashed against pinned digests before anything loads it, and the overlay and settings window against sha256s in the wheel.

Always clear where it runs

The device in use shows in the journal, in /health, in the doctor and on the status bar, which turns red if it is not the NPU.

Errors that say what to run

Nearly every error prints the fix in your distro’s own package names, read from /etc/os-release.

Replayable sessions

--record a session, then re-run the stitcher offline or sweep window sizes with vinowhisper-replay.

Hardware

Supported devices

vinoWhisper needs an Intel NPU. Nearly every Intel Core Ultra laptop chip since 2023 has one, and Intel’s open-source Linux driver supports all five generations below. I have so far run it only on a Wildcat Lake laptop, so for the others this is “should work”, not “tested”. Reports are welcome.

Example laptops are a starting point, not a certified list. Check the exact chip before you buy. AMD and Qualcomm laptops are not supported.
Intel chipNPUExample laptops
Core Ultra Series 3
Panther Lake: Ultra X9 388H, X7 358H, 5 325
Up to 50 TOPSFramework Laptop 13 Pro, System76 Lemur Pro, Lenovo ThinkPad X1 Carbon Gen 14, Dell XPS 14 and XPS 16, ASUS Zenbook Duo, Samsung Galaxy Book6 Pro, MSI Prestige 14 Flip
Core Series 3
Wildcat Lake: Core 7 350, Core 5 320
9 to 17 TOPSDell XPS 13, Lenovo IdeaPad Slim 3, HP OmniBook 3, ASUS Vivobook 15
Core Ultra 200V
Lunar Lake: Ultra 9 288V, 7 258V, 7 256V
Up to 48 TOPSDell XPS 13 (9350), ASUS Zenbook S 14, Lenovo ThinkPad X1 Carbon Gen 13
Core Ultra 200H
Arrow Lake-H: Ultra 9 285H, 7 255H
13 TOPSMost 2025 performance and gaming ultrabooks
Core Ultra Series 1
Meteor Lake: Ultra 7 155H, Ultra 5 125H
11 TOPSFramework Laptop 13 (Core Ultra Series 1), most 2024 ultrabooks

An Intel GPU also works as a fallback, but the NPU is what keeps the CPU, fans and battery out of it. Want your laptop on this list? Tell me how it went (opens in a new tab).

Get it

Install

The installer checks the latest release’s wheel against its SHA256SUMS, installs it with uv (opens in a new tab) (no git clone, no build) and hands over to vinowhisper-setup, which picks your capture tool, NPU driver and model export and generates systemd units against paths that exist. It prints each command before running it. --dry-run prints the plan and changes nothing. Add | bash -s -- --gui for the overlay, tray and settings window.

To upgrade, use Check for updates on the settings window’s About page, or run vinowhisper-upgrade. The exported model stays.

Fedora Atomic and openSUSE Aeon. Silverblue, Kinoite, Bazzite, Aurora, Bluefin and Aeon work too: everything installs into your home directory, and the few host packages (usually just the NPU driver) come as an rpm-ostree or transactional-update line, then a reboot. The NPU compiler needs no layering. Run it on the host, not in a toolbox.

Accelerator
An Intel NPU for the best results; an Intel GPU also works. Intel NPUs for now.
Python
3.11 to 3.13.
Audio
PipeWire (pw-record) or PulseAudio (parec), picked automatically.
Overlay
wlr-layer-shell: KDE Plasma 6, Sway, Hyprland, niri, COSMIC. On GNOME, use the terminal.
Disk
About 1.5GB for the model export, about 1GB more if you add French, German or Spanish, and 1.7GB for the optional cleanup and summary model.
$ vinowhisper-caption                  # caption system audio
$ vinowhisper-caption --source mic     # caption yourself
$ vinowhisper-caption --list-targets   # one app instead of the whole sink
$ vinowhisper-setup --gui              # the overlay and voice typing
$ vinowhisper-setup --language fr      # French, German, Spanish or auto
$ vinowhisper-gui --sessions           # saved sessions and summaries
$ vinowhisper-transcribe lecture.mp4    # a file into a saved session
$ vinowhisper-session export BUNDLE --format odt
$ vinowhisper-upgrade                  # the newest release, in place
$ vinowhisper-doctor                   # devices, model, digests, audio
$ vinowhisper-replay ~/sess --sweep 8,12,20
Setup and vinowhisper-doctor print install commands in your distro’s own package names.
FamilyIncludesPackage names
FedoraRHEL, CentOS, Alma, Rocky, NobaraBuilt and run here
Fedora AtomicSilverblue, Kinoite, Bazzite, Aurora, Bluefin: rpm-ostree linesSupported
DebianUbuntu, Pop!_OS, Mint, elementary, RaspbianFrom the package index
ArchCachyOS, EndeavourOS, Manjaro, GarudaFrom the package index
openSUSETumbleweed, Leap, SLES; Aeon and MicroOS through transactional-updateFrom the package index
Gentoo, Void, AlpineDerivatives matched through ID_LIKEFrom the package index
NixOShardware.cpu.intel.npu.enable on 25.11 and laterConfig snippets

Limits

Good to know

Questions

Linux live captioning: questions

Does Linux have built-in live captioning?

Not in the way Android, Windows and macOS do. Linux has no system-wide live captions feature. vinoWhisper adds one: it captions anything playing on your laptop, or your microphone, in a terminal or in a floating overlay, entirely offline.

How do I get live captions on Linux?

Run the one-line installer from vinowhisper.com, then run vinowhisper-caption for captions in the terminal, or vinowhisper-setup --gui for the floating caption overlay with a tray icon, voice typing and a settings window.

Does Linux live captioning work offline?

Yes. vinoWhisper runs a Whisper speech model on your own Intel NPU. Your audio never leaves the machine, and there is no cloud, API key or account.

Which computers does vinoWhisper support?

Linux laptops with an Intel NPU: Core Ultra Series 1 (Meteor Lake), Core Ultra 200V (Lunar Lake), Core Ultra 200H (Arrow Lake), Core Ultra Series 3 (Panther Lake) and Core Series 3 (Wildcat Lake), such as the Framework Laptop 13 Pro. The full list is on the page.

Which languages does it caption?

English, French, German and Spanish, and it can translate French, German and Spanish speech into English.

Does it work on Bazzite, Silverblue or other immutable distros?

Yes. On Fedora Atomic (Silverblue, Kinoite, Bazzite, Aurora, Bluefin) and openSUSE Aeon, vinoWhisper installs into your home directory. Setup prints the rpm-ostree or transactional-update line for the few host packages it needs, usually just the NPU driver, and asks you to reboot.

Can it transcribe a recording I already have?

Yes. vinowhisper-transcribe, or Import audio or video… in the sessions window, turns an audio or video file into a saved session without playing it, on your own machine. It needs ffmpeg or GStreamer to read the file, and the session gets a summary like any other.

Can it summarise what was said?

Yes. With Save transcripts on, each caption session is kept and summarised on your NPU by a small local model, with key points that link back to the transcript. Sessions export to Markdown, plain text or .odt, and vinoSpeak can read them aloud.

Help out

Run it on hardware I haven’t

If your laptop is not a Wildcat Lake, I want the report, working or not. An issue with vinowhisper-doctor --json pasted in is worth more than any benchmark I can run here.

Open an issue (opens in a new tab)