# Local Tts Models

> Select local Korean TTS: Supertonic, Kokoro, Qwen3, mobile.

- Skill: `wcpaka-lgtm/local-tts-models` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add wcpaka-lgtm/local-tts-models`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wcpaka-lgtm/local-tts-models/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wcpaka-lgtm (https://skillmd.com/u/wcpaka-lgtm)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/wcpaka-lgtm/local-tts-models

---


# Local TTS Models (Korean-focused)

Use when the user asks which open-source/local TTS to use, whether model X
supports Korean, how fast it synthesizes, or whether TTS can run on mobile —
especially for the Lumina Reader epub-reader project and any mobile ebook
reader follow-up.

## Current pick for this environment: Supertonic

- `pip install supertonic` (v1.3.x), ONNX Runtime — no CUDA/torch needed, runs
  on CPU and older GPUs alike.
- Voices: `voice_style_names` = F1–F5 (female), M1–M5 (male); sample_rate 44100.
- Korean is solid (31 languages); paragraph-length synthesis is near-realtime.
- Bundles cleanly into a PyInstaller `--onefile` app (`--collect-all supertonic`).
- Detailed candidate comparisons in `references/korean-tts-evaluation.md`.

## Candidate matrix (verify current state before recommending)

| Model | Korean | License | Local run | Notes |
|---|---|---|---|---|
| **Supertonic 3** | good | model OpenRAIL-M, code MIT | ✅ ONNX, CPU ok | 99M params; default here |
| Kokoro | weak | MIT | ✅ 82M, very light | speed king, Korean weak |
| Piper | ok | MIT | ✅ tiny | fast, naturalness lower |
| Qwen3-TTS | excellent | Apache 2.0 | ⚠️ needs modern GPU | CustomVoice "Sohee"; see pitfalls |
| EchoTTS (EchoDiT) | likely (Emilia-3m) | CC-BY-NC-SA (weights) | ⚠️ early, no preset voices | voice-cloning only; watch, don't adopt yet |
| F5-TTS / Fish-Speech | good | non-commercial | ⚠️ | license blocks most uses |

ASR ≠ TTS: Microsoft `VibeVoice-ASR-BitNet` is speech-to-text (MIT) — not a
TTS replacement; users sometimes conflate them.

## Mobile (Android/iOS) TTS

Supertonic ships **official mobile SDKs** — `flutter/`, `ios/`+`swift/`,
`java/` (Android), `web/` (WebGPU) in github.com/supertone-inc/supertonic.
99M params + ONNX = CPU-realtime even on Raspberry Pi, so a mobile ebook
reader with in-app TTS is feasible (Flutter covers both OSes from one codebase).
Caveat: Supertone announced the repo will be **archived** (no further dev;
Voice Builder gone after 2026-08-31). MIT code + OpenRAIL-M weights already
published remain usable forever; community forks likely. Long-term fallbacks:
Kokoro (MIT, weaker Korean), OS-native TTS engines, or server-side synthesis.

## Integration pitfalls (sounddevice / pywebview apps)

- **`sd.wait()` blocks until the current paragraph finishes** — stop/pause
  buttons feel dead. Replace with a ~50ms polling loop checking stop/pause
  events; call `sd.stop()` for instant silence. Track the playback sample
  position to resume mid-paragraph.
- **Realtime volume**: don't bake gain into synthesized audio — play via an
  `OutputStream` callback that multiplies the current volume per frame.
- **Realtime speed**: speed is a synthesis parameter; on change, flag an
  event, stop the stream (save `_last_buf_pos` BEFORE closing), re-synthesize
  the paragraph at the new speed, and skip the already-spoken ratio.
- **Prefetch**: synthesize ~4–5 paragraphs ahead on a worker thread; invalidate
  the queue on speed/voice change.
- Keep torch/qwen-tts-style test deps OUT of the app build (PyInstaller
  timeouts + bloat); exclude them explicitly.

## Pitfalls

- **Pascal GPUs (GTX 1080 Ti) lack bfloat16** — Qwen3-TTS throws CUDA errors
  there; CPU fallback measured ~RTF 7.5x (93s to synthesize 12s of audio) —
  unusable, prefetch can't save it. Don't re-test; recommend Supertonic.
- "Fastest TTS" launch posts often benchmark on 8×B200 with vLLM/SGLang —
  server numbers don't transfer to a consumer PC; judge on the user's hardware.
- License check is mandatory: several top-Korean-quality models are
  non-commercial only.

