linnet-tts (Python)
Python package for the LinnetTTS native runtime: lightweight on-device text-to-speech at 24 kHz, streaming,
fp16 weights, no PyTorch. The extension module is built from the Rust crate runtime/linnet-tts with
maturin (abi3, one wheel per platform for every CPython >= 3.9).
Install
pip install linnet-tts
Wheels on PyPI: manylinux 2.17 x86_64 and aarch64, macOS 11+ on Apple silicon; no Windows, Intel-macOS or source
distribution in 0.1.0 (build from the repository on other platforms, see "Build"). The model files are not in the
wheel: download the weights release https://github.com/VoxRT/LinnetTTS/releases/tag/weights-v1 (the fp16 weights,
tokenizer.model and a voice .npy). They are licensed under the Linnet Weights License
(https://github.com/VoxRT/LinnetTTS/blob/main/WEIGHTS_LICENSE.md), not Apache-2.0. Source, docs and the streaming
contract: https://github.com/VoxRT/LinnetTTS.
import linnet_tts, soundfile as sf
model = linnet_tts.Model("linnet-en-35m.fp16.safetensors", "tokenizer.model")
voice = model.load_voice("voice.npy") # [T, 48] float32 .npy
audio = model.synthesize("Hello there.", voice, temp=0.3, cfg=2.0, seed=0)
sf.write("hello.wav", audio, model.sample_rate) # float32, 24 kHz
session = model.session(voice, seed=0)
session.prime("Streaming gives the first 50 ms of audio after one step.")
for chunk in session: # 80 ms per LM step
play(chunk)
Voice.from_array(np.ndarray) wraps in-memory [T, 48] latents. The chunk sizes follow the streaming contract
(docs/streaming-contract.md in the repository): the first chunk is samples_per_step - output_delay samples, later ones
samples_per_step (1920), the last one output_delay (720) zeros, and the concatenation of all chunks is
sample-for-sample identical to synthesize with the same parameters and seed.
Build
cd bindings/python
maturin build --release # wheel in target/wheels/
maturin develop --release # or: install into the active venv
The release profile uses fat LTO and strips symbols; the wheel is ~0.4 MB. Runtime dependency: numpy.
Test
The tests need the model assets (gitignored). Point LINNET_ASSETS at a directory holding
linnet-en-35m.fp16.safetensors, tokenizer.model and voices/linnet-en-f1.npy (default: ../../local;
local/ = the unpacked weights release, see the root README at https://github.com/VoxRT/LinnetTTS):
uv venv /tmp/linnet-venv && . /tmp/linnet-venv/bin/activate
uv pip install target/wheels/linnet_tts-*.whl pytest
pytest tests
A plain python -m venv /tmp/linnet-venv followed by pip install target/wheels/linnet_tts-*.whl pytest works
just as well where uv is not installed.
Metadata
Release files for linnet-tts 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| linnet_tts-0.1.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ x86-64 | Details for linnet_tts-0.1.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
| linnet_tts-0.1.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.17+ ARM64 | Details for linnet_tts-0.1.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
| linnet_tts-0.1.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details for linnet_tts-0.1.0-cp39-abi3-macosx_11_0_arm64.whl |
Total release size: 1.2 MB
Release files / linnet_tts-0.1.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | linnet_tts-0.1.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 422.4 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fb34a40b903e9852b796afbabe3a98ed46ba3142d6c4d7e237093d7d4e145f22
|
|
BLAKE2b-256 checksum How to use checksums |
8841430efb84aee2497504bac949c0575899db5ea72225135653acdba2abdb36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logRelease files / linnet_tts-0.1.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | linnet_tts-0.1.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 397.6 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d335685996f02657458729241c0fb74853d7ceebb89ddecaa2cd3aae365f8662
|
|
BLAKE2b-256 checksum How to use checksums |
cb1898063a3c8954bbd0b1f3a613533a58f2eeca0cd3a45c5e885739028711e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logRelease files / linnet_tts-0.1.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | linnet_tts-0.1.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 374.5 kB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6a970371e0bfb45974078fa281f5159bb6d64e8646a8a6009935f7a1ba849dd4
|
|
BLAKE2b-256 checksum How to use checksums |
08b3de28925342a66b0c674ec0c3d8e83e0df548ada776babf794d4a291176f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logSecurity for linnet-tts 0.1.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.
Full provenance
All 3 files in this release have been uploaded with provenance metadata.
Attestation for linnet_tts-0.1.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.
Transparency logA 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.