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.
nathalie | Portuguese (Brazilian) | F | CC-BY-4.0 | 0.907 |
Say something in this voice.
Up to 1,000 characters here. The library itself takes 10,000. This part spends your ZeroGPU quota.
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.
Clone a voice from a short recording, then speak with it on either model.
- Try one of the shipped examples, or record yourself.
- Clone only your own voice, or a voice you have permission to use.
- One profile serves both models. That is what a portable voice profile means: enroll once, and the file works wherever the engine does.
- Nothing is kept. The recording and the voice embeddings are discarded when the request ends, and neither is offered for download.
- See Responsible use.
Reference clips donated for building TTS voices.
Or use your own voice. That clears the example.
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.