Skip to main content

The vinoSpeak mark: a white speaker with two green sound waves on the dark vino tile

vinoSpeak

PyPI Python License CI Ruff

Local text-to-speech on the Intel NPU, using Kokoro-82M INT8 through OpenVINO GenAI. Type a sentence or point it at a file and it reads it aloud. Nothing leaves your machine after the one-time ~160 MB model download, and OpenVINO's own telemetry is blocked.

  • Speaks text, files and stdin. Markdown is cleaned up for listening, and PDFs, Word and slides work through vinoSearch's extracted text.
  • Reads vinoWhisper sessions: the summary, or the transcript.
  • Starts talking in about 1.5 s on the NPU, however long the text: the first sentence plays while the rest is synthesized.
  • 41 Kokoro voices in US/UK English, Spanish, French, Hindi, Italian and Brazilian Portuguese, at 0.5x to 2x speed.
  • Plays or saves: your speakers via PipeWire/PulseAudio/ALSA, or a WAV.
  • NPU, GPU or CPU. CPU works with no driver at all.
  • A window (proof of concept) to find a file with vinoSearch and listen to it, and a Python API.

The vinoSpeak window. Typing "how often is the lens cleaned" finds lighthouse-log.pdf through vinoSearch; Read aloud starts speaking it and the status bar says so. Then a vinoWhisper session, Harbour safety meeting, is picked and its summary is read aloud.

Install

Python 3.11 to 3.14. With uv:

uv tool install --python 3.14 vinospeak
vinospeak "Hello."

--python 3.14 because OpenVINO 2026.4.1 has no 3.15 wheels yet. OpenVINO is pinned to the same release as vinoPop and vinoWhisper, so programs sharing one NPU never run mismatched runtimes.

From source, for the exact versions in uv.lock, hashes included. --locked fails if the lock is out of date:

git clone https://github.com/karanshukla/vinoSpeak && cd vinoSpeak
uv sync --locked
uv run vinospeak "Hello."

To put that checkout's vinospeak on your PATH with the lock's versions as constraints (uv tool install doesn't read uv.lock by itself):

uv export --locked --no-dev --no-emit-project --no-hashes -o constraints.txt
uv tool install --constraints constraints.txt .

The window isn't on PyPI, so it's always built from a checkout, with Rust. This puts it in your app menu, using the vinospeak on your PATH or in ~/.local/bin:

gui/install.sh                                             # --uninstall removes it
VINOSPEAK=.venv/bin/vinospeak gui/install.sh               # or the checkout's vinospeak

Finding files in it needs vinoSearch running. See gui/README.md.

Fedora Atomic / openSUSE Aeon: nothing to layer for vinoSpeak itself. uv brings its own Python and the wheels carry espeak-ng and libsndfile. Only the NPU driver (for --device NPU) and an audio player, if you lack one, are system packages.

No player? Install pw-play or paplay, or use --output:

Distro pw-play paplay
Fedora pipewire-utils pulseaudio-utils
Ubuntu / Debian pipewire-bin pulseaudio-utils
Arch pipewire libpulse
openSUSE pipewire-tools pulseaudio-utils

Use

vinospeak "Hello from vinoSpeak."                  # play it
vinospeak "Hello." --output hello.wav              # save a WAV
vinospeak --file notes.md                          # read a file aloud
vinospeak --file notes.md --print-text             # see what it would say, no model load
some-command | vinospeak --file -                  # plain text from stdin
vinospeak --file 2026-10-27-140512.vwsession       # a vinoWhisper summary
vinospeak --file 2026-10-27-140512.vwsession --part transcript
vinospeak "Hola." --voice ef_dora --language es --speed 1.2 --device CPU
Option What it does
--voice, --language, --speed Kokoro voice (default af_heart), language, 0.5 to 2.0
--device NPU (default), GPU or CPU
--audio-device A sink from pactl list short sinks, or an ALSA device
--kind Read --file as plain, markdown or document (one paragraph or cell a line, as vinoSearch extracts)
--model-dir Use your own model directory, unchecked

In markdown, headings, list items and table rows become sentences, links keep their text, URLs are said as their host and code blocks are skipped. Abbreviations like e.g. and Dr. don't end a sentence. vinospeak --help lists everything.

The model is fetched from Hugging Face at one pinned commit and every file is checked against its sha256 (see SECURITY.md). It lives in ~/.cache/vinospeak/, along with OpenVINO's compiled-model cache so later runs skip the NPU compile.

Check this machine

vinospeak-doctor          # --json for a bug report

Shows the OpenVINO packages and devices, the audio player it picked, and whether the cached model still matches its pins. With ovfetch on your PATH it also checks your OpenVINO version against your NPU driver. If your distro's driver has no NPU compiler (Fedora's intel-npu-driver 1.32.0), ovfetch npu install fetches Intel's into your home directory and vinoSpeak loads it from there.

Python

from vino_speak import Synthesizer

synth = Synthesizer("NPU")  # compiles once; reuse it
audio = synth.synthesize("Hello.")  # audio.samples (float32), audio.sample_rate
speech = synth.speak("A long passage.")  # plays in the background
speech.stop()  # or speech.wait()

Development

See CONTRIBUTING.md. uv run poe check runs everything CI does; none of it needs OpenVINO or an NPU.

Metadata

Release files for vinospeak 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vinospeak 0.4.0
File Size Uploaded Provenance Actions
vinospeak-0.4.0.tar.gz 54.3 kB Without provenance Details for vinospeak-0.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for vinospeak 0.4.0
File Interpreter ABI Platform Actions
vinospeak-0.4.0-py3-none-any.whl Python 3 none any Details for vinospeak-0.4.0-py3-none-any.whl

Total release size: 88.8 kB

Release files / vinospeak-0.4.0.tar.gz

Download URL vinospeak-0.4.0.tar.gz
Size 54.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5b57403fa04900d2a9915216f41c2d9afec83168e7de343acf2c018627e7592a
BLAKE2b-256 checksum
How to use checksums
2f62e0845ca6af2beea09d780ef227f39dba21872c1f00e3ddf5b2f56ac0e46b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / vinospeak-0.4.0-py3-none-any.whl

Download URL vinospeak-0.4.0-py3-none-any.whl
Size 34.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e0e1a843d1e957ced635632e5be33fe05c3f3ca1f3b5a52777203589d1f2af10
BLAKE2b-256 checksum
How to use checksums
75b66060ce1257c7a6ecbdb3f1db79abb6b9894a96b6f53312afe6bd73d9699e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for vinospeak 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page