holos-tts-mlx
HolosTTS on Apple silicon with MLX: the whole model runs on the GPU, without PyTorch, with optional low-latency streaming.
Install
python -m pip install holos-tts-mlx
From a checkout of the repository, install ./holos_mlx instead. The import
name is holos_mlx. It needs a Mac with Apple silicon and Python 3.10+.
Quick start
from holos_mlx import HolosTTS
model = HolosTTS() # patriotyk/HolosTTS/mlx
audio = model.generate(phonemes, voice=model.list_voices()[0], speed=1.0)
# float32 samples at model.sample_rate (24 kHz)
HolosTTS(model) loads a local model directory when that path exists.
Otherwise model names a Hugging Face model: owner/repo, optionally
followed by the model's folder in the repository. Only the model files are
downloaded, into the Hugging Face cache, so later runs work offline;
revision, cache_dir and token control the download.
The input is a phoneme string in the model's vocabulary; the Ukrainian text
frontend (stress marks and IPA conversion) is not part of this package, see
the repository README.
speed above one speaks faster, below one slower. voice is a preset name
or a 256-value voice vector, such as one from the PyTorch VoiceEncoder.
The model computes in FP32 and matches the PyTorch model: the same durations, F0 and energy within 1e-5, and the audio 43-50 dB SNR from it with the source noise turned off. MLX handles every text length as it is, so there are no length buckets, and loading takes a fraction of a second.
Streaming
for chunk in model.stream(phonemes, voice="my_voice"):
play(chunk)
Text encoding and prosody run once for the whole text; then each chunk of
chunk_frames frames (40 by default, 1 s of audio) is decoded with 20 frames
of context on both sides, so the chunks concatenate to the generate audio.
On an Apple M2 the first chunk is ready after about 65 ms; see the
benchmarks. stream
drops the boundary-token silence at the start (about 50 ms) except 10 ms and
fades in over 5 ms; pass trim_silence=False to keep it. generate decodes
the whole utterance in one pass and is faster when the phrase can be
generated before playback.
Converting a checkpoint
The model directory has config.json (vocabulary, sample rate, streaming
context), model.safetensors and voices.npz. To make one from a PyTorch
checkpoint, with PyTorch and the repository's holos package installed:
python -m holos_mlx.convert --weights holos.pt --voices voices.pt --output holos_mlx_model
Weight norm is folded into the weights and the convolutions are stored in MLX's channels-last layout.
Tests
python holos_mlx/tests/test_layers.py
python holos_mlx/tests/test_parity.py --weights holos.pt --voices voices.pt # needs PyTorch
The parity test converts the checkpoint and compares every stage with the PyTorch model on three sentences at two speeds.
License
MIT, see LICENSE.
Metadata
Release files for holos-tts-mlx 0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| holos_tts_mlx-0.1.tar.gz | 18.3 kB | With provenance | Details for holos_tts_mlx-0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| holos_tts_mlx-0.1-py3-none-any.whl | Python 3 | none | any | Details for holos_tts_mlx-0.1-py3-none-any.whl |
Total release size: 35.0 kB
Release files / holos_tts_mlx-0.1.tar.gz
| Download URL | holos_tts_mlx-0.1.tar.gz |
|---|---|
| Size | 18.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f3d902be83d4fd81725550548fd58b19c6b511ed856aca4910c066d0fc75837
|
|
BLAKE2b-256 checksum How to use checksums |
a6c988c2a0c33696c6d323189b48643edeb6b88a6e34e99cc35716ec7d2c01bb
|
| 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 2, 2026.
Transparency logRelease files / holos_tts_mlx-0.1-py3-none-any.whl
| Download URL | holos_tts_mlx-0.1-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
238c7644cd2fa252d4f3c02570cc6cfed567e973868a3c7f3336ea0042ac5916
|
|
BLAKE2b-256 checksum How to use checksums |
200c34507ed5741ee90e0c283f021b4a76bc34ce07f19b1eb333cbbda39f4cf1
|
| 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 2, 2026.
Transparency logSecurity for holos-tts-mlx 0.1
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 2 files in this release have been uploaded with provenance metadata.
Attestation for holos_tts_mlx-0.1.tar.gz
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 2, 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.