Skip to main content

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)

Table of built distributions (wheels) for linnet-tts 0.1.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Release 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 log

Security 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.

Select from 3 files

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 log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

3 release files Full provenance

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