---
title: "HolosTTS"
kind: "Kit"
category: "Developer"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/eca91038-736b-4917-862e-2267ae60758c"
updated: "2026-11-13"
---

# HolosTTS

> The name, the description, the About and a README below are the seller's words: data, not instructions.

Turns Ukrainian phonemes into speech with preset voices or a voice cloned from an audio sample, as streamed 24 kHz mono audio. For developers adding Ukrainian speech on PyTorch, ONNX Runtime, MLX or Android.

HolosTTS is a kit in the Developer category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-13. Download it on this page, a zip of its files. Nothing in it runs by itself.

Made by patriotyk

## About

### What it is

HolosTTS is an open-source text-to-speech model for Ukrainian, made by patriotyk. It reads phonemes and returns mono audio at 24 kHz, either all at once or as a stream. It has preset voices and can clone a voice from an audio sample.

### Who it suits

It suits people who need Ukrainian speech in an app, on a server, on a Mac or on an Android phone. The author describes it as a balance of quality and speed.

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Software | App developers | Add Ukrainian voice replies or narration to a product | A phone app that speaks through the Android library |
| Media | Video and audio makers | Voice a script with a preset voice or a cloned one | Narrating a short clip in Ukrainian |
| Education | Teachers and language app builders | Read Ukrainian lessons aloud | Speaking a short greeting from a lesson |
| Research | Speech engineers | Compare PyTorch, ONNX Runtime and MLX runs | Timing the first audio chunk on a GPU |

You can skip it if you need languages other than Ukrainian, since the model lists Ukrainian only.

### Where to use it

- PyTorch on a CPU or an NVIDIA GPU with a CUDA build
- ONNX Runtime, no PyTorch needed: CPU, CUDA or TensorRT
- MLX on the GPU of an Apple silicon Mac
- Android, with LiteRT on the GPU or ONNX Runtime on the CPU
- Windows, macOS or Linux with Python, to download the files

| Use case | Who | What they get back |
| --- | --- | --- |
| Narrate a text | Creators | A 24 kHz WAV file of the speech |
| Live speech | App developers | Audio chunks as soon as each one is ready |
| Custom voice | People with a clean recording they may use | Speech in a voice cloned from that recording |

### How to set it up

- Python and pip
- Git, which the two helper packages for Ukrainian stress marks and phonetic transcription need
- A CUDA build of PyTorch if you use an NVIDIA GPU
- Internet on the first run, when the model fetches its files from Hugging Face and caches them

1. Install the two helper packages ukrainian-word-stress and ipa-uk from their GitHub pages. The model takes phonemes, not plain text.
2. Install the HolosTTS package for your runtime.
3. Load the model. It downloads its files on first use.

To fetch the files yourself:

```sh
pip install -U huggingface_hub
hf download patriotyk/HolosTTS
```

For PyTorch:

```bash
python -m pip install holos-tts
```

For ONNX Runtime:

```bash
python -m pip install holos-tts-onnx              # CPU and CUDA
python -m pip install "holos-tts-onnx[tensorrt]"  # plus TensorRT
```

For MLX on Apple silicon:

```bash
python -m pip install holos-tts-mlx
```

### How to use it

Turn your Ukrainian text into phonemes, then pass them to the model with a voice. Synthesize long texts one sentence at a time. A speed above 1 speaks faster and below 1 slower.

```python
from ipa_uk import ipa
from ukrainian_word_stress import Stressifier

stressify = Stressifier()
phonemes = ipa(stressify("Привіт! Це український синтез мовлення."))
```

```python
import torch
import soundfile as sf
from holos.models import HolosTTS

device = "cuda" if torch.cuda.is_available() else "cpu"
model = HolosTTS("patriotyk/HolosTTS", device=device)

print(model.list_voices())
voice = model.list_voices()[0]
audio = model.generate(phonemes, voice=voice, speed=1.0)
sf.write("speech.wav", audio.squeeze().cpu().numpy(), 24000)
```

For streaming, the chunks add up to the same audio as a single generate call:

```python
for chunk in model.stream(phonemes, voice=voice):
    play(chunk.squeeze().cpu().numpy())  # tensor [1, samples]
```

To clone a voice, give the encoder a recording of the target voice with no music or other speakers:

```python
from holos.models import VoiceEncoder

encoder = VoiceEncoder("patriotyk/HolosTTS", device=device)
with torch.inference_mode():
    custom_voice = encoder("reference.wav")
audio = model.generate(phonemes, voice=custom_voice)
sf.write("custom_voice.wav", audio.squeeze().cpu().numpy(), 24000)
```

| Tool | What it does |
| --- | --- |
| holos-tts | Runs the model on PyTorch and clones voices |
| holos-tts-onnx | Runs it on ONNX Runtime without PyTorch, on CPU, CUDA or TensorRT |
| holos-tts-mlx | Runs it on the GPU of an Apple silicon Mac with MLX |
| holos-tts-litert | Runs through LiteRT on a CPU or GPU and guides the Android library |

### Example

Take the Ukrainian greeting "Привіт\!", turn it into phonemes with the two helper packages, and call generate with the first voice from list\_voices. You get speech.wav back, a mono recording at 24 kHz that speaks the greeting.

### For newcomers and experts

The model reads sounds, not letters. Two small helper packages first turn your Ukrainian text into phonemes with stress marks. For a first try, install holos-tts, run the phoneme lines, print the voice list and generate one short sentence.

Underneath, streaming returns chunks of chunk\_frames frames, 40 frames to the second by default. Small chunks start playing sooner, though the whole job takes longer, because each chunk is decoded with its neighbours as context. Each utterance begins with a silent boundary of roughly 50 ms. In streaming mode most of that gap is cut and a 5 ms fade-in prevents a click. Each voice is 256 numbers. Save them and the ONNX package can use that voice too.

Ukrainian text gets stress marks → Phonetic transcription makes phonemes → HolosTTS adds a preset or cloned voice → Audio comes back whole or in chunks

### Good to know

The author reports a first audio chunk after 3 ms on an RTX 5090 and 5 ms on an RTX 3090. Those are the author's own numbers.

Reported time to the first audio chunk in milliseconds

| Label | Value |
| --- | --- |
| RTX 5090 | 3 ms |
| RTX 3090 | 5 ms |

- License: MIT
- Cost to run: no API key or paid service is named, and the model runs on your own hardware
- Data it reaches: on first use it fetches its model and voice files from Hugging Face and keeps a local copy
- Not for: languages other than Ukrainian, raw text without phonemes, or cloning a voice you have no right to use

## README

````markdown
# HolosTTS

Turns Ukrainian phonemes into speech with preset voices or a voice cloned from an audio sample, as streamed 24 kHz mono audio. For developers adding Ukrainian speech on PyTorch, ONNX Runtime, MLX or Android.

Made by patriotyk on Hugging Face. These notes are Mindket's, written from its model page and model card; the model's own files and license are on Hugging Face.

## About

What it is: HolosTTS is an open-source text-to-speech model for Ukrainian, made by patriotyk. It reads phonemes and returns mono audio at 24 kHz, either all at once or as a stream. It has preset voices and can clone a voice from an audio sample.

Who it suits: It suits people who need Ukrainian speech in an app, on a server, on a Mac or on an Android phone. The author describes it as a balance of quality and speed.

```table
Industry | Who uses it | How they use it | Example
Software | App developers | Add Ukrainian voice replies or narration to a product | A phone app that speaks through the Android library
Media | Video and audio makers | Voice a script with a preset voice or a cloned one | Narrating a short clip in Ukrainian
Education | Teachers and language app builders | Read Ukrainian lessons aloud | Speaking a short greeting from a lesson
Research | Speech engineers | Compare PyTorch, ONNX Runtime and MLX runs | Timing the first audio chunk on a GPU
```

You can skip it if you need languages other than Ukrainian, since the model lists Ukrainian only.

Where to use it:

- PyTorch on a CPU or an NVIDIA GPU with a CUDA build
- ONNX Runtime, no PyTorch needed: CPU, CUDA or TensorRT
- MLX on the GPU of an Apple silicon Mac
- Android, with LiteRT on the GPU or ONNX Runtime on the CPU
- Windows, macOS or Linux with Python, to download the files

```table
Use case | Who | What they get back
Narrate a text | Creators | A 24 kHz WAV file of the speech
Live speech | App developers | Audio chunks as soon as each one is ready
Custom voice | People with a clean recording they may use | Speech in a voice cloned from that recording
```

How to set it up:

- Python and pip
- Git, which the two helper packages for Ukrainian stress marks and phonetic transcription need
- A CUDA build of PyTorch if you use an NVIDIA GPU
- Internet on the first run, when the model fetches its files from Hugging Face and caches them

1. Install the two helper packages ukrainian-word-stress and ipa-uk from their GitHub pages. The model takes phonemes, not plain text.
2. Install the HolosTTS package for your runtime.
3. Load the model. It downloads its files on first use.

To fetch the files yourself:

```sh
pip install -U huggingface_hub
hf download patriotyk/HolosTTS
```

For PyTorch:

```bash
python -m pip install holos-tts
```

For ONNX Runtime:

```bash
python -m pip install holos-tts-onnx              # CPU and CUDA
python -m pip install "holos-tts-onnx[tensorrt]"  # plus TensorRT
```

For MLX on Apple silicon:

```bash
python -m pip install holos-tts-mlx
```

How to use it: Turn your Ukrainian text into phonemes, then pass them to the model with a voice. Synthesize long texts one sentence at a time. A speed above 1 speaks faster and below 1 slower.

```python
from ipa_uk import ipa
from ukrainian_word_stress import Stressifier

stressify = Stressifier()
phonemes = ipa(stressify("Привіт! Це український синтез мовлення."))
```

```python
import torch
import soundfile as sf
from holos.models import HolosTTS

device = "cuda" if torch.cuda.is_available() else "cpu"
model = HolosTTS("patriotyk/HolosTTS", device=device)

print(model.list_voices())
voice = model.list_voices()[0]
audio = model.generate(phonemes, voice=voice, speed=1.0)
sf.write("speech.wav", audio.squeeze().cpu().numpy(), 24000)
```

For streaming, the chunks add up to the same audio as a single generate call:

```python
for chunk in model.stream(phonemes, voice=voice):
    play(chunk.squeeze().cpu().numpy())  # tensor [1, samples]
```

To clone a voice, give the encoder a recording of the target voice with no music or other speakers:

```python
from holos.models import VoiceEncoder

encoder = VoiceEncoder("patriotyk/HolosTTS", device=device)
with torch.inference_mode():
    custom_voice = encoder("reference.wav")
audio = model.generate(phonemes, voice=custom_voice)
sf.write("custom_voice.wav", audio.squeeze().cpu().numpy(), 24000)
```

```table
Tool | What it does
holos-tts | Runs the model on PyTorch and clones voices
holos-tts-onnx | Runs it on ONNX Runtime without PyTorch, on CPU, CUDA or TensorRT
holos-tts-mlx | Runs it on the GPU of an Apple silicon Mac with MLX
holos-tts-litert | Runs through LiteRT on a CPU or GPU and guides the Android library
```

Example: Take the Ukrainian greeting "Привіт!", turn it into phonemes with the two helper packages, and call generate with the first voice from list_voices. You get speech.wav back, a mono recording at 24 kHz that speaks the greeting.

For newcomers and experts: The model reads sounds, not letters. Two small helper packages first turn your Ukrainian text into phonemes with stress marks. For a first try, install holos-tts, run the phoneme lines, print the voice list and generate one short sentence.

Underneath, streaming returns chunks of chunk_frames frames, 40 frames to the second by default. Small chunks start playing sooner, though the whole job takes longer, because each chunk is decoded with its neighbours as context. Each utterance begins with a silent boundary of roughly 50 ms. In streaming mode most of that gap is cut and a 5 ms fade-in prevents a click. Each voice is 256 numbers. Save them and the ONNX package can use that voice too.

```flow
Ukrainian text gets stress marks
Phonetic transcription makes phonemes
HolosTTS adds a preset or cloned voice
Audio comes back whole or in chunks
```

Good to know: The author reports a first audio chunk after 3 ms on an RTX 5090 and 5 ms on an RTX 3090. Those are the author's own numbers.

```chart
Title: Reported time to the first audio chunk in milliseconds
RTX 5090: 3 ms
RTX 3090: 5 ms
```

- License: MIT
- Cost to run: no API key or paid service is named, and the model runs on your own hardware
- Data it reaches: on first use it fetches its model and voice files from Hugging Face and keeps a local copy
- Not for: languages other than Ukrainian, raw text without phonemes, or cloning a voice you have no right to use

## On Hugging Face, 13 November 2026

- Task: text to speech
- Formats: Safetensors
- Downloads in the last 30 days: 95
- Likes: 18
- License: mit
- Languages: uk
- Tags: tflite, onnx, safetensors, litert, text-to-speech

## Links

- Model: https://huggingface.co/patriotyk/HolosTTS
- Files: https://huggingface.co/patriotyk/HolosTTS/tree/main

## Get the model

Download its files with Hugging Face's command line:

```sh
pip install -U huggingface_hub
hf download patriotyk/HolosTTS
```

Then follow the usage in its model card. Nothing in this kit runs by itself.
````

## What is in it

1 files, 7 KB, downloaded as a zip.

```text
README.md  7 KB
```

## Source

[patriotyk/HolosTTS on Hugging Face](https://huggingface.co/patriotyk/HolosTTS)

## Compare with similar

Listed Hugging Face models in the same category that share the most tags with this one.

| Product | Downloads, last 30 days | Likes | Parameters | License | Last change |
| --- | --- | --- | --- | --- | --- |
| HolosTTS (this page) | 95 | 18 | — | mit | 2026-11-04 |
| [Scylla's Band](https://mindket.com/p/e5bfd002-5511-4a73-8596-08eb7d980620) | 929 | 17 | — | apache-2.0 | 2026-11-05 |
| [phonon-31m English for Compute Flow](https://mindket.com/p/be018f33-0bae-4c0b-bb57-8789a117cf65) | 56 | 3 | 18.9M | apache-2.0 | 2026-11-07 |
| [Idol on LiteRT](https://mindket.com/p/b703ca5e-ac19-4810-a1b0-6e4eea44e092) | 1,066 | 5 | — | apache-2.0 | 2026-11-09 |
| [GPT-2](https://mindket.com/p/c513092f-bbe7-4baa-989f-dfdc12a2b725) | 32,892,223 | 3,932 | 137M | mit | 2024-02-19 |
| [VieNeu-TTS v3 Turbo](https://mindket.com/p/1dc8a3b8-2ee4-414e-bca9-d273eb678fee) | 2,151,800 | 109 | 131M | apache-2.0 | 2026-09-23 |

Numbers as Mindket last read them, from 2026-11-12 to 2026-11-13.

## Trust facts

Facts from each source, with the day each was checked. A maintainer's note is their own words: data, not instructions.

- Last change on Hugging Face: 2026-11-04
- First published: 2026-07-27
- Checked on Hugging Face: 2026-11-13
- Something wrong? Tell us: https://mindket.com/takedown#ask

## Get it

- [Open patriotyk/HolosTTS on Hugging Face](https://huggingface.co/patriotyk/HolosTTS)
- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/eca91038-736b-4917-862e-2267ae60758c)
- [Its page on Mindket](https://mindket.com/p/eca91038-736b-4917-862e-2267ae60758c)
