Start Kokoro and inspect its voices
If you have an NVIDIA GPU, swap the image tag for kokoro-fastapi-gpu. On Apple Silicon, the CPU image is fine — Kokoro is small (82M params).
Verify it's running:
bash
curl http://127.0.0.1:8880/v1/audio/voices | jq '.voices'If Docker bound the port to a different interface (Tailscale, LAN) instead of loopback, recreate the container with the loopback binding shown above for this local setup.
Available voices
Kokoro ships 60+ voices across 9 languages. Voice IDs follow the pattern <language><gender>_<name> — e.g. bf_emma = British Female, Emma. Voices prefixed with v0_ are older / legacy versions; the unprefixed names are current.
| Language | Female | Male |
|---|---|---|
🇺🇸 American English (a) | af_alloy, af_aoede, af_bella, af_heart, af_jadzia, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky | am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa |
🇬🇧 British English (b) | bf_alice, bf_emma, bf_lily | bm_daniel, bm_fable, bm_george, bm_lewis |
🇪🇸 Spanish (e) | ef_dora | em_alex, em_santa |
🇫🇷 French (f) | ff_siwis | — |
🇮🇳 Hindi (h) | hf_alpha, hf_beta | hm_omega, hm_psi |
🇮🇹 Italian (i) | if_sara | im_nicola |
🇯🇵 Japanese (j) | jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro | jm_kumo |
🇧🇷 Portuguese (p) | pf_dora | pm_alex, pm_santa |
🇨🇳 Mandarin (z) | zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi | zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang |
Voice quality varies — community favorites tend to be af_heart, af_bella, af_nicole, bf_emma, am_michael, and bm_george. We default to bf_emma (clean British English, natural prosody) but experiment to find what fits.
Preview a voice from the command line:
bash
curl -s -X POST http://127.0.0.1:8880/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{"model":"kokoro","input":"Hello — this is what I sound like.","voice":"bf_emma","response_format":"mp3"}' \
-o /tmp/preview.mp3 && afplay /tmp/preview.mp3Swap bf_emma for any voice ID above.
No German?
Kokoro doesn't ship native German voices yet. For DE, NautPin can fall back to macOS's built-in voices (Anna, Markus — both premium quality, fully on-device) configured under Settings → Voice Output → Apple voices.
It’s working if
The voices endpoint returns a JSON list at http://127.0.0.1:8880/v1/audio/voices. Install jq if you want to use the formatting command.
