Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ptts for Python

Python bindings for the Phonon Rust runtime.

To try a q8 checkpoint with uv, run:

uvx ptts --model /path/to/model --lang en --quant q8 "Hello world" -o out.wav

uvx handles the isolated Python environment and package dependencies. Until the stable release, use uvx --prerelease allow ptts to run the preview. Model files are supplied separately; --model accepts a local checkpoint directory or a Hugging Face repo as hf://owner/name.

To use the Python API in your own environment, install the package:

pip install ptts

The wheel contains no model weights. Without a model argument, TTS downloads the default model on first use and caches it:

import ptts

tts = ptts.TTS(lang="en")
print(tts.voices)
tts.save("out.wav", "Hello world")

For a source install, use uv add /path/to/xn-ptts/ptts-pyo3 or pip install /path/to/xn-ptts/ptts-pyo3. Source builds need Rust installed; supported CPython wheels do not. See the development guide for repository build commands.

model, the first argument, names a local directory, a config.json, or a Hugging Face repo as "hf://owner/name" or "hf://owner/name@revision". Left out, it is ptts.DEFAULT_MODEL. Local paths download nothing. Rust examples, Python, and both servers use the shared checkpoint resolver. Every checkpoint supplies its own config.json and tokenizer.json. q8 prefers model.q8.gguf; other formats prefer model.safetensors. Voices come from voices/ or embeddings/, plus default-voice.safetensors as default. Hub downloads use the revision after @ for all files. config= and revision= still work but are deprecated.

lang is required: en, fr, de, es or pt picks how numbers, symbols and abbreviations are spelled out; none uses the text as written.

Speech and voices

Reuse tts across requests. Use synth for an array, save for a WAV, or stream for chunks as they are decoded:

voice = tts.voices[0]
pcm = tts.synth("Hello", voice=voice)  # 1-D float32 NumPy array
seconds = tts.save("out.wav", "Hello", voice=voice)
with tts.stream("A longer sentence.", voice=voice) as audio:
    for chunk in audio:
        print(chunk.shape)  # process each PCM chunk as it arrives

tts.sample_rate is the PCM sample rate; save writes a mono 16-bit WAV and returns its duration. Leaving the with block stops a stream early and waits for its workers to finish. Streaming keeps bounded audio and latent buffers: leaving a stream unread pauses generation once they fill, and consuming chunks lets it resume.

tts.voices lists the voices that were found, and tts.languages the languages the checkpoint's config says it was trained for. When no voice is given, the checkpoint's configured default is used, then default if present, then the first by name. Pass voice="name" to any speech method to select one.

Command line

The package also provides the ptts command:

python -m ptts --lang en "Hello world" -o out.wav

--model loads another model, as TTS's first argument does. --voice selects a loaded voice, and --list-voices prints the available names. Run with --help for the remaining options. The package ships type stubs and py.typed.

Wheels

Released wheels are cp39-abi3, so one per platform covers every CPython from 3.9 on, and a new CPython release needs no new wheel. Free-threaded CPython and PyPy cannot load an abi3 extension, so those two install from the sdist and compile the Rust runtime, which needs a Rust toolchain and takes a few minutes.

License

MIT or Apache-2.0, at your option. The model weights are not part of the package and come with their own license.

Metadata

Release files for ptts 0.4.0rc2

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

Source distribution (sdist)

Source distribution for ptts 0.4.0rc2
File Size Uploaded Provenance Actions
ptts-0.4.0rc2.tar.gz 275.2 kB Without provenance Details for ptts-0.4.0rc2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for ptts 0.4.0rc2
File Actions
ptts-0.4.0rc2-cp39-abi3-win_arm64.whl CPython 3.9 abi3 Windows ARM64 Details for ptts-0.4.0rc2-cp39-abi3-win_arm64.whl
ptts-0.4.0rc2-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details for ptts-0.4.0rc2-cp39-abi3-win_amd64.whl
ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details for ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_x86_64.whl
ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_aarch64.whl CPython 3.9 abi3 Linux musl 1.2+ ARM64 Details for ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_aarch64.whl
ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details for ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details for ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ptts-0.4.0rc2-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details for ptts-0.4.0rc2-cp39-abi3-macosx_11_0_arm64.whl
ptts-0.4.0rc2-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details for ptts-0.4.0rc2-cp39-abi3-macosx_10_12_x86_64.whl

Total release size: 55.6 MB

Release files / ptts-0.4.0rc2.tar.gz

Download URL ptts-0.4.0rc2.tar.gz
Size 275.2 kB
Tags Source
SHA-256 checksum
How to use checksums
64ebd9ba2b0f98a1748daaf826575115ffb55f69cd72fd95faa55a1c2dc3966b
BLAKE2b-256 checksum
How to use checksums
a2aec1367681378f2ba2d41b277e6c17570ef39cbe6c588d75ecbd332bc83e5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-win_arm64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-win_arm64.whl
Size 6.5 MB
Tags CPython 3.9 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
645c0b60528c2d6e5715c74f2d4e30faa9215389b862f36d285958a28d7e9459
BLAKE2b-256 checksum
How to use checksums
3c5102743d662e091440055e479d67939420388f4fea196dbfc7506641860a73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-win_amd64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-win_amd64.whl
Size 6.8 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
f9b220838f0e44db129e81390fc5f0bd9a2b92b9bfe01c58dfe14bf0429b6a14
BLAKE2b-256 checksum
How to use checksums
e852e60da4585c002e761e23dcabc85e8ff6a5a22d403df8dcd162ea81571f5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_x86_64.whl
Size 7.4 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
a4c22177d6a4d9960107dbafd17562cda1346031e00b89df599357c22b390980
BLAKE2b-256 checksum
How to use checksums
bc621696712cb5c303d07c00dd8a4246635a29e3872a8c1c81c1c3805dbb308c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_aarch64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-musllinux_1_2_aarch64.whl
Size 6.9 MB
Tags CPython 3.9 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
d53aa8b0885a17afecb0a972eb75e06b00953590b0da76d932cda399837bc3f2
BLAKE2b-256 checksum
How to use checksums
6d13a114d6fb5043c4cadc73b67fc7c3ffe9f070f6d2d86f26c04091b27d66aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 7.4 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
bdb15c7ae7e9fc05b42981993bac1886e7d909f950d6e74be67906334f20a999
BLAKE2b-256 checksum
How to use checksums
8e5b61795e226b23fe8365c09b970b51022dcc5c5ea3f62514591a8c6fec6456
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.7 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
38cfe15aff3f4cd29a6270bbd854155f726762f7cacc8b6ff04e0bda0b5370e0
BLAKE2b-256 checksum
How to use checksums
aa9748ca0eabb4b58c0cc26d6b1744115c0d438045ef3e2d1ed2d3fb299a841c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-macosx_11_0_arm64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-macosx_11_0_arm64.whl
Size 6.8 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ab0ef44cd733d55e816e769214f831bed21ffba8d140a12e1bf8649e056eef45
BLAKE2b-256 checksum
How to use checksums
a9bdc73edfe7e9b363974e58494d5756d97e149833c0aa360aaa87cffc75b4b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ptts-0.4.0rc2-cp39-abi3-macosx_10_12_x86_64.whl

Download URL ptts-0.4.0rc2-cp39-abi3-macosx_10_12_x86_64.whl
Size 6.8 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
18dc2f0554b031756a04398e7c2821e1e6495acf65787507e9bc10c44155bffc
BLAKE2b-256 checksum
How to use checksums
ec703bf7562268f98c342a66c3fc07149f1cebdf53077d60a305ddcd3c45d0c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Security for ptts 0.4.0rc2

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