Twenty-eight voices. Ten languages. Two models.

On-device text to speech, running here on ZeroGPU. loudr-1 · loudr-1-turbo · Code · Responsible use

Listening costs no GPU. Speaking and cloning spend your daily ZeroGPU quota.

Algorithm IDs: loudr-1 7cd75498ad4e7531, loudr-1-turbo e5303ba243087222. The same text, voice and seed under one ID give the same audio on the same device and backend (identity contract).

Pick a voice and the sample plays at once. Every voice is here twice, once per model, reading the same passage at the same seed. Those files were rendered ahead of time and use no GPU.

Model

Switching this changes the sample and what the buttons below run.

Language
Voice

Say something in this voice.

Up to 1,000 characters here. The library itself takes 10,000. This part spends your ZeroGPU quota.

Read the text as
0.5 2

The same text, the same voice, the same seed, rendered on both. This is the comparison the model choice is about, and it costs two renders of your quota.

This renders the same text twice at the same seed on the selected model and hashes both waveforms. The digests must match.


Run the same engine locally, where nothing is queued and nothing is metered.

pip install "loudkit[torch,audio,enroll,hub]"
import loudkit as lk

engine = lk.load("loudreader/loudr-1", revision="v0.1.1")
voice = lk.voice("kathleen", repo="loudreader/loudr-1", revision="v0.1.1")
engine.synthesize("Hello from loudkit.", voice, seed=7).save("hello.wav")

The same profile reads on the faster model by changing one string:

engine = lk.load("loudreader/loudr-1-turbo", revision="v0.1.1")

Output files carry unsigned loudkit provenance metadata: the algorithm ID, the recipe and the seed.