Zero-shot voice tuner for Kokoro-82M.
A 5-30 second reference clip in, a stock-shaped [510, 1, 256] voice pack out in about 0.3 seconds.
Usage
pip install inno-kokoro
inno-kokoro --fetch /models # -> /models/model.safetensors, e.g. in a Dockerfile; skips if present
inno-kokoro my_ref.wav am_me # -> voices/am_me.pt + voices/am_me_test.wav
inno-kokoro my_ref.wav am_me --fmax 300 # override pitch ceiling
Currently only available for English; prefixes work like the stock packs e.g: af_, am_, bf_, bm_.
from inno_kokoro.enroll import Tuner, enroll, read
from kokoro import KPipeline
tuner = Tuner() # huggingface cache; or Tuner("/models/model.safetensors") for a path of your own
pack, _ = enroll(*read("my_ref.wav"), tuner)
pipe = KPipeline(lang_code="a")
wav = next(pipe("Hello from a tuned voice.", voice=pack)).audio
For best results, the reference audio should be:
- 3-second minimum, up to the first 30-seconds
- Single speaker (english).
- Reasonably clear of audio artifacts
Voice pack generation time:
- about 0.05 s per second of reference on CPU
- 0.1 to 0.3 s total on a GPU (after the model is loaded).
Identity benchmarking
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. Normalized scores compare the render between sounding like a stranger (0) and a second sample of the same benchmark speaker (1).
RTF on an RTX 4060 Ti.
| system | SIM-o | normalized | UTMOS | RTF |
|---|---|---|---|---|
| ground truth (second recording) | 0.695 | 1.00 | 4.10 | |
| F5-TTS v1 base | 0.650 | 0.94 | 3.86 | 0.48 |
| StyleTTS2 (LibriTTS zero-shot) | 0.386 | 0.46 | 4.40 | 0.06 |
| Inno v0.2 | 0.288 | 0.32 | 4.45 | 0.07 |
| OpenVoice v2 | 0.227 | 0.23 | 3.80 | 0.12 |
| Kokoro, nearest stock pack | 0.167 | 0.15 | 4.25 | 0.06 |
UTMOS scoring stays high which reflects the priority placed on maintaining Kokoro's voice quality.
Inno can match about a third of the way to most identities, and avoids copying recording artifacts etc.
License and Attributions
Apache-2.0. The speaker encoder is CC BY-SA 3.0.
Full model card available on HuggingFace: remsky/kokoro-inno-clone-tuner.
Only clone voices you have permission to clone, even the shallow cloning provided by this model and technique.
Metadata
Release files for inno-kokoro 0.2.0
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 | |
|---|---|---|---|---|
| inno_kokoro-0.2.0.tar.gz | 21.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| inno_kokoro-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.5 kB
Release files / inno_kokoro-0.2.0.tar.gz
| Download URL | inno_kokoro-0.2.0.tar.gz |
|---|---|
| Size | 21.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
913cf4244d836fe4be8db9ad15ba1940a1780b65d834a6fe3da88b8dcecb8223
|
|
BLAKE2b-256 checksum How to use checksums |
4c25fc62c06761866e9e645556b942cf49daf62fb5801b340ae775ded3e45a33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / inno_kokoro-0.2.0-py3-none-any.whl
| Download URL | inno_kokoro-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
faebd4006d939f99cf3a8b30c6bdc280f74309c42b88887362e4d28995601664
|
|
BLAKE2b-256 checksum How to use checksums |
d57e6dcee78130103f41c7e8a0143aa040a8ce330e5553bf5719642a174ad1d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for inno-kokoro 0.2.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.