Downloads · 30 days
1.5M
66% of all-time downloads
remsky/kokoro-inno-clone-tuner
kokoro-inno-clone-tuner is a text-to-speech model from remsky. Use it when you need text read aloud. The card lists the license as apache-2.0.
Downloads · 30 days
1.5M
66% of all-time downloads
All-time downloads
2.3M
Public
Parameters
9.7M
147 MB on disk
Likes
37
Trending 3
Click a slice to open those files.
.safetensors23.8 MB · 59%
How the weights are stored.
F167.4M · 77%
From the Hugging Face model README

pip install inno-kokoro
Zero-shot voice tuner for Kokoro-82M.
Outputs base Kokoro compatible voice packs @ [510, 1, 256]. (write-up)
Same passage for every voice, enrolled from the references. LibriTTS-R speakers are dev-clean held out from training.
| voice | tuned | reference |
|---|---|---|
| am_libritts1272 | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/libritts_1272_clone.wav"></audio> | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/libritts_1272_ref.wav"></audio> |
| af_libritts5338 | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/libritts_5338_clone.wav"></audio> | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/libritts_5338_ref.wav"></audio> |
| am_libritts6241 | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/libritts_6241_clone.wav"></audio> | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/libritts_6241_ref.wav"></audio> |
| af_ameliaearhart | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/amelia_earhart_clone.wav"></audio> | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/amelia_earhart_ref.wav"></audio> |
| bf_janegoodall | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/jane_goodall_clone.wav"></audio> | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/jane_goodall_ref.wav"></audio> |
| am_vincentprice | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/vincent_price_clone.wav"></audio> | <audio controls src="https://huggingface.co/Remsky/kokoro-inno-clone-tuner/resolve/main/samples/vincent_price_ref.wav"></audio> |
Code available on Github: remsky/inno-kokoro.
Integrated into Kokoro-FastAPI (v0.9.0+)
pip install inno-kokoro
Enrolling a voice:
from inno_kokoro.enroll import Tuner, enroll, read
from kokoro import KPipeline
tuner = Tuner() # pulls model.safetensors into the huggingface cache
pack, _ = enroll(*read("my_ref.wav"), tuner)
pipe = KPipeline(lang_code="a")
wav = next(pipe("Hello from a tuned voice.", voice=pack)).audio
The pack is a plain tensor; torch.save(pack, "voices/am_me.pt") makes it a voice file like any other, prefixed by accent and gender like the stock packs.
The pitch-tracking ceiling is set automatically from the reference's harmonic spacing, so band-limited or archival sources land in the right octave without tuning.
enroll(..., fmax=180) overrides it if a voice still reads the wrong register.A 5 to 30 s reference clip in, a stock-shaped Kokoro voice pack out. Everything loads from model.safetensors, no extra downloads.
Enrollment embeds an input audio sample via the baked speaker encoder and maps through model.safetensors to build the encoder side; prosody aspects are measured to build the predictor half.
enroll(..., head=False) skips it.Enrollment runs in about 0.05 s per second of reference on CPU (a 30 s reference in 1.4 s) and 0.1-0.3 s total on a GPU, after the one-time model load.
Total model size @ fp16: ~24mb
</details>All stages: Kokoro frozen; LibriTTS-R train-clean-100 unless noted.
Trained via HF Jobs a10g-small; under $20 in GPU time:
1 - cos(student, teacher) over LibriTTS-R crops with synthetic channel damage; the style head is untouched.Inno gets about a third of the normalized similarity range, twice as close as the nearest stock pack (with UTMOS intact and keeping Kokoro's stable natural style).
<figure> <img src="https://cdn-uploads.huggingface.co/production/uploads/6444c7a59174daa2f6934a16/FmO3P3W8k501WZgqUBuyM.webp" alt="Zero-shot identity benchmark" width="95%" style="border: 1px solid black;" /> <figcaption> Benchmark Plot: Zero-shot speaker similarity comparison on LibriSpeech test-clean. </figcaption> </figure> <details> <summary><b>Full benchmark results and methodology</b></summary>LibriSpeech test-clean, F5-TTS cross-sentence split (1127 utterances, 39 held-out speakers. Reference in, new sentence out, scored against the speaker's real recording.
| system | SIM-o | normalized | ECAPA | UTMOS | RTF |
|---|---|---|---|---|---|
| ground truth (second recording) | 0.695 | 1.00 | 0.656 | 4.10 | |
| F5-TTS v1 base | 0.650 | 0.94 | 0.713 | 3.86 | 0.48 |
| StyleTTS2 (LibriTTS zero-shot) | 0.386 | 0.46 | 0.415 | 4.40 | 0.06 |
| Inno v0.2 | 0.288 | 0.32 | 0.288 | 4.45 | 0.07 |
| OpenVoice v2 | 0.227 | 0.23 | 0.316 | 3.80 | 0.12 |
| Kokoro, nearest stock pack | 0.167 | 0.15 | 0.215 | 4.25 | 0.06 |
StyleTTS2 uses a related architecture with an unfrozen decoder, a possible ceiling for this style space.
Measured on the shipped weights through the stock KPipeline: one fixed passage rendered for the seven sample voices plus ten hold-out dev-clean speakers, F0 by Praat over 6 s chunks with the reference's tracking ceiling applied to both sides.
| metric | v0.1 blend only | v0.2 with head |
|---|---|---|
| speaker cosine (WavLM-sv), samples / dev-clean | 0.926 / 0.956 | 0.935 / 0.959 |
| F0 mean, render minus reference | 0.65 st mean abs | 0.8 st mean abs |
| F0 spread, render minus reference | 0.65 st mean abs | 0.5 st mean abs |
| DNSMOS | 3.50 | 3.50 |
The head's gain is spread; on F0 mean it scatters more per speaker and flips the signed bias from -0.2 to +0.3 st.
</details>Adapter weights and code: Apache-2.0, except the baked speaker encoder (enc.* in model.safetensors), which is CC BY-SA 3.0 (see below)
Only clone voices you have permission to clone, even the shallow cloning offered via this model and technique.