Repository navigation
Releases
Releases · hangry-labs/kokoroTTS
v1.0
Immutable
release. Only release title and notes can be modified.
v1.0
Show v1.0 release notes and qualification
Included Changes
- Added a self-contained Docker compliance bundle with complete copyleft
notices, checksum-verified corresponding source for the bundled eSpeak NG,
phonemizer, loader, and number-normalization components, exact Debian source
provenance, retained build inputs, and an offlinetask compliance-test
verifier shared by full and tiny images. - Added immutable UTC image-build timestamps and Git revisions to snapshot runtime badges and native status metadata, making moving
latestreports identifiable from a screenshot while stable releases keep their concise version label. - Added complete English, Polish, Japanese, Simplified Chinese, Spanish, and German localization to the browser workspace, including dynamic generation, streaming, model settings, audio-editor, and GPU-monitor states. Locale routes and the selected language persist across reloads.
- Added concise Norwegian, Polish, Japanese, Simplified Chinese, and Spanish README entry points that lead to the corresponding Hangry Labs product guides, and connected the public examples page to locale-aware application links.
- Replaced Gradio with a responsive standalone audio workspace based on the tested Hangry Labs Qwen3-ASR-STT interface.
- Replaced the animated product text and oversized Hangry Labs banner with a viewport-bounded KokoroTTS brand hero, added a compact-mode Hangry Labs badge and mascot browser icon, and introduced an animated persistent compact header that restores before first paint.
- Restored loaded-model details in the inference status, linked the displayed UI version to GitHub Releases, consolidated UI, examples, and GitHub Pages artwork under
assets/, and refreshed the documentation screenshot as an optimized WebP. - Added dedicated Generate, Stream, API, and System views with live runtime status, language and voice discovery, audio controls, WaveSurfer playback, and direct downloads.
- Refined the Generate workflow into a clear text-to-action-to-audio sequence, moved voice controls into the settings column, added precise numeric control entry, disabled volume while normalization is active, and associated output format with the generated audio area.
- Added one-click voice-control reset, aligned Stream actions with the same top-to-bottom workflow, and replaced raw API/System output with collapsible syntax-highlighted JSON trees.
- Added a compact System-tab GPU monitor with one-second tracking charts for compute load, memory activity, VRAM, temperature, power, fan speed, and graphics/memory clocks. Charts support hover crosshairs with timestamped values, default to one minute, and can switch to ten minutes. An on-demand backend sampler continues for roughly one minute after the last viewer request, while browser session caching restores the active tab and still-valid history after reload.
- Added browser stream cancellation using
AbortControllerplus server-side disconnect handling, so Stop cancels the current request and a new stream always uses the latest text. - Added server-owned language sample and phoneme inspection endpoints while preserving all existing
/tts/*defaults and compatibility routes. - Added an OpenAI-compatible
POST /v1/audio/speechAPI with model discovery, standard health routes, OpenAI error envelopes, optional bearer authentication, official SDK compatibility, exact-name voice aliases, the full0.25-4.0speed range, and MP3 defaults without changing native API behavior. - Expanded complete-file output with OpenAI-compatible Opus, AAC, and raw 24 kHz PCM while retaining native OGG Vorbis support.
- Removed the Gradio runtime dependency from the application and Docker dependency set.
- Upgraded the Docker runtime and dependency workflow to Python 3.13 with the Qwen3-ASR-STT-proven Torch 2.11/CUDA 13 baseline, while independently pinning Kokoro's language and model dependencies.
- Reorganized the server into focused API, audio, catalog, schema, runtime, and launcher modules while preserving the existing
/tts/*contracts and intentionally eager preparation of all advertised voices. - Fixed long non-English input handling so multilingual sentence punctuation and punctuation-free text are split into model-safe phoneme segments without silently dropping content.
- Added explicit experimental SSML input to native generation, streaming, metrics, token inspection, the Python HTTP client, and the browser UI. The bounded hardened parser supports pauses, substitutions, character/number/English-ordinal reading, direct IPA overrides, explicit language routing, multi-voice dialogue, and inheritable per-segment speed, pitch, tempo, and volume while plain text remains the default.
- Removed excessive model padding between SSML speech units. Unmarked dialogue boundaries now use a 100 ms handoff, and explicit
<break>values, including0ms, control the complete internal pause in both full and streamed audio without trimming the recording's outer edges. - Added a dedicated public SSML examples page with five playable one-request dialogues, complete scripts, mixed-language guidance, varied per-character direction, and direct navigation from the voice gallery and README.
- Fixed multilingual chunking so periods inside decimals and version-like numbers remain in one text chunk while sentence-final periods still form boundaries.
- Improved English pronunciation of compact large-number forms by expanding unambiguous uppercase
K,M,B, andTsuffixes before G2P, including decimal and dollar/pound values such as20Kand$1.5M, while preserving longer identifiers and reserving lowercase suffixes for measurement normalization. - Improved English normalization for contextual Roman numerals, common compact measurements, and year-adjacent era abbreviations. Regnal names such as
Thutmose IIbecome ordinals, labels such asWorld War IIandChapter XIbecome cardinal numbers, and forms such as10m,32ft,40cm, and1479 BCare spoken as words without changing non-English input or unrelated identifiers. - Corrected context-sensitive English pronunciation of
arithmeticin both American and British voices: standalone and object uses take the noun pronunciation, while direct noun modifiers such asarithmetic operationandarithmetic meanretain the adjective pronunciation. - Fixed English plain-text Markdown emphasis being spoken as "asterisk." Balanced
*,**, and***markers are removed before G2P while multiplication, compact math, wildcard patterns, bullets, escaped or unmatched asterisks, explicit SSML, and non-English input retain their literal behavior. - Fixed slow speech producing a phantom vowel at the beginning of some clips by scaling only real speech-token durations while preserving the model's natural beginning/end boundary timing. Default-speed synthesis remains exactly compatible, and the correction applies consistently to the standard, German, and Vietnamese model families.
- Reduced tail fading and the risk of skipped syllables in unusually long English sentences by introducing a punctuation-aware 400-phoneme quality ceiling below the model's unchanged 510-phoneme hard limit. Short input and direct SSML phoneme limits remain unchanged.
- Removed an ineffective harmonic-source random draw from normal Kokoro inference while preserving the reusable generator's pulse-mode behavior; exact legacy-output, RNG-state, and CUDA regression checks cover the change.
- Added concurrency-safe model initialization without serializing normal inference, made model purge wait for active use and release Python/PyTorch CUDA caches, and limited CPU fallback to CUDA-class failures with headers, status metadata, and server warnings.
- Replaced the duplicate-initialization script startup with a lightweight Uvicorn launcher, reducing the development reload supervisor from roughly 1 GB to about 33 MB RSS in local measurements.
- Added a genuinely incremental Python streaming client while retaining the buffered
stream()compatibility method, made the default package install client-only with an optional full server dependency set, and stopped package imports from modifying host Loguru configuration. - Ported shared UI hardening from Qwen3-ASR-STT: malformed GPU responses no longer break the System view, the icon font is served with the correct MIME type, and Lucide is reduced to the glyphs the Kokoro workspace actually uses.
- Added a repeatable HTTP voice-generation benchmark sourced directly from the examples in
examples/voices.js. It warms one voice per language, measures every voice five times, and records overall, per-language, and per-voice latency, audio duration, realtime factor, and realtime speed in machine-readable and Markdown reports. - Added a separate isolated-container VRAM benchmark that records memory before runtime initialization, after voice preparation, after model loading, and during every voice. It reports exact Kokoro-process PyTorch peaks alongside sampled whole-device peaks without changing the public API.
- Recorded the official quiet-GPU RTX 5070 Ti VRAM baseline across all 70 voices and 11 languages with no failures: 317.6 MiB allocated for the initial standard model, 1725.1 MiB peak process allocation, and 2052.0 MiB peak process reservation after lazy model-family loading.
- Added German synthesis with dedicated Misaki normalization/G2P, Martin and Victoria voice packs, and their matching Kokoro-compatible checkpoints. The full image bakes only deployable inference assets; each model family remains lazy in CPU/GPU memory.
- Added Vietnamese synthesis using the ContextBoxAI Kokoro Vietnamese checkpoint, its custom vocabulary, all fourteen upstream voice packs, and pinned
vig2p/sea-g2pphonemization. The shared Vietnamese weights appear as one independently selectable model pack and the unused ONNX export is not baked into the ...
v0.3
Immutable
release. Only release title and notes can be modified.
v0.3
Docker
Use the full image for baked, offline-friendly model assets, or the tiny image with a persistent cache volume:
docker run -p 7860:7860 --gpus all hangrylabs/kokorotts:v0.3
docker run -p 7860:7860 hangrylabs/kokorotts:v0.3
docker run -p 7860:7860 --gpus "device=1" -e CUDA_VISIBLE_DEVICES=1 hangrylabs/kokorotts:v0.3
docker run -p 7860:7860 --gpus all -v kokorotts_hf_cache:/app/.cache/huggingface hangrylabs/kokorotts:v0.3_tinyChanges
- Added a dependency-free Python HTTP client for using KokoroTTS endpoints from application code.
- Made package imports lightweight so the HTTP client can be used without importing the local inference stack, with package metadata as a safe version fallback.
- Added
task client-testfor server-backed Python client coverage across discovery, generation, conversion, streaming, and validation paths. - Added optional UI/API audio controls for pitch, tempo, volume, and loudness normalization with neutral defaults for backward compatibility.
- Improved the UI Stream tab so Stop cancels active streams cooperatively and starting a new stream clears stale audio before using the latest text.
- Removed the obsolete espeak language warning that incorrectly claimed non-English long-text chunking was unavailable.
- Added a persistent Docker Hugging Face cache volume for task-run containers, with
task nukeremoving it for from-scratch validation. - Added a separate tiny Docker image target and task workflow for cache-volume-based model downloads while keeping the normal image fully baked for offline use.
- Reordered Docker build stages so documentation, version, and application edits reuse the pinned dependency and UniDic layers instead of repeating the expensive cold build.
- Added persistent BuildKit layer caches to the full and tiny GitHub Actions workflows so hosted builds can reuse those boundaries across runs.
- Hardened Taskfile API readiness checks so transient startup responses are retried before smoke and client tests begin.
- Updated Docker publish workflows for separate full (
vX.Y/latest) and tiny (vX.Y_tiny/latest_tiny) image tracks, explicithangrylabs/kokorottspublishing, and manual release dispatch with a selected checkout ref. - Removed unnecessary caution callouts from public docs and the Stream tab for a cleaner product-facing experience.
v0.2
Immutable
release. Only release title and notes can be modified.
v0.2
- Moved public project direction under Hangry Labs.
- Added a root
VERSIONfile for the app/runtime release label. - Kept Python package metadata on a PEP 440-compatible development version for reliable builds.
- Exposed the full Kokoro-82M voice set in the UI/API.
- Added optional
wav,mp3,flac, andoggoutput formats in the UI/API while keeping WAV as the default. - Added language-aware UI sample texts with 10 lighthearted prompts per served language prefix.
- Added a Hangry Labs examples page with generated MP3 product-intro samples, native-language page selection, and language filtering.
- Added pinned dependency workflow with
requirements.in, resolvedrequirements.txt, andtask deps. - Removed old Gatsby/Frankenstein long-text demo buttons and unused bundled text files.
- Added multilingual Docker prefetch support, including UniDic for offline Japanese synthesis.
- Added
task imageapi-voiceandtask imageapi-formatfor practical smoke tests.
Run with:
docker run -p 7860:7860 --gpus all hangrylabs/kokorotts:v0.2
docker run -p 7860:7860 --gpus "device=1" -e CUDA_VISIBLE_DEVICES=1 hangrylabs/kokorotts:v0.2v0.0.1
v0.0.1
- Initial release of the KokoroTTS Docker image.
- Trimmed the image to keep it slim and practical for deployment.
- Baked required models and assets into the image for offline use.
- Added startup/runtime details showing which specific GPU is detected.
- Introduced Dockerized WebUI + API setup for easy local or server deployment.
- Added integration-friendly API support for compatibility with the MeloTTS image, making it easier to swap between them in existing applications.
- Enabled automated build and deployment workflow.
🚀 Quick Start
CPU:
docker run -p 7860:7860 sensejworld/kokorotts:latestNVIDIA GPU:
docker run -p 7860:7860 --gpus all sensejworld/kokorotts:latestSpecific GPU (example: GPU index 1):
docker run -p 7860:7860 --gpus "device=1" -e CUDA_VISIBLE_DEVICES=1 sensejworld/kokorotts:latestVisit: http://localhost:7860 for the UI.
(First synthesis may take a little longer while the model and device warm up.)