cstr/kokoro-voices-GGUF
Kokoro voices — GGUF bundle
Per-speaker style packs for the Kokoro-82M family, converted to ggml's GGUF voice-pack format (arch=kokoro-voice, single F32 tensor voice.pack[max_phon, 1, 256]). For use with [CrispStrobe/CrispASR](https://github.com/CrispStrobe/CrispASR) alongside `cstr/kokoro-82m-GGUF` or the German backbone `cstr/kokoro-de-hui-base-GGUF`.
Each voicepack is ~510 KB. Loading is direct passthrough — no quantisation needed at this size.
Voices
The Tundragoon voicepacks are [512, 1, 256] F32 (maxphon=512); the official Kokoro and kikiri voicepacks are `[510, 1, 256]` F32 (maxphon=510). The voice loader reads max_phon from the file so both layouts work transparently.
German voice cascade
When CrispASR is invoked with -l de (or any de_* / de-* locale) and no explicit --voice, it picks German voicepacks in this order:
df_victoria— kikiri-tts, in-distribution to the dida-80b German backbone (recommended)df_eva— Tundragoon recovery, second-tier German speakerff_siwis— French baseline, last-resort non-silence fallback
Languages without a native pack (ru, ko, ar, …) fall back to ff_siwis. See `cstr/kokoro-de-hui-base-GGUF` for the matching German backbone.
Quality (ASR roundtrip)
Long German phrase ("Guten Tag, dies ist ein Test des deutschen Phonemizers."), parakeet-tdt-0.6b-v3 -l de, dida-80b backbone F16:
All four clear the energy gate (peak ≥ 8000, RMS ≥ 1000); two are word-perfect on a phrase the official English-trained Kokoro-82M with af_heart collapses to silence on.
Quick start
huggingface-cli download cstr/kokoro-voices-GGUF kokoro-voice-af_heart.gguf --local-dir .
huggingface-cli download cstr/kokoro-82m-GGUF kokoro-82m-q8_0.gguf --local-dir .
./crispasr --backend kokoro \
-m kokoro-82m-q8_0.gguf \
--voice kokoro-voice-af_heart.gguf \
--tts "Hello world" --tts-output hello.wavConversion
python models/convert-kokoro-voice-to-gguf.py \
--input voices/af_heart.pt \
--output kokoro-voice-af_heart.ggufAttribution
- Official voices (
af_heart,ef_dora,ff_siwis): `hexgrad/Kokoro-82M`, Apache-2.0. - Tundragoon recovery (
df_eva,dm_bernd): the originalTundragoon/Kokoro-GermanHF repo was deleted; voices were recovered from `r1di/kokoro-fastapi-german`'s Git LFS (api/src/voices/v1_0/{df_eva,dm_bernd}.pt), retaining the original Apache-2.0 license. - kikiri-tts (
df_victoria,dm_martin): `kikiri-tts/kikiri-german-victoria` and `kikiri-tts/kikiri-german-martin` by the dida-80b maintainer, Apache-2.0. - GGUF format + runtime: `CrispStrobe/CrispASR`.
Voice provenance (EU AI Act Art. 50(4))
Whose voice a pack reproduces is decided per pack, not by the backbone — a kokoro model is a base model, not a voice.
Synthesizing with df_eva or dm_bernd prepends a spoken AI disclosure: audio resembling an identifiable person is a deep fake under Art. 3(60) whether or not any cloning took place. It does not require --i-have-rights — the donor's agreement to the training is a licensing matter settled upstream, which a downstream operator cannot attest to.
Note the German cascade crosses this boundary. The documented fallback order isdf_victoria→df_eva→ff_siwis, so a missing default silently moves you from a synthetic voice to a real HUI narrator. That is exactly why the disclosure follows the pack rather than the run.
Override per run with --speaker-identity, or stamp a pack permanently with models/stamp-speaker-identity.py. See `docs/eu-ai-act.md` §6.2a.
License
Apache-2.0 across the bundle, matching every upstream source.
