Skip to content

Releases

v1.0

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 05 Oct 22:34
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 offline task 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 latest reports 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 AbortController plus 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/speech API with model discovery, standard health routes, OpenAI error envelopes, optional bearer authentication, official SDK compatibility, exact-name voice aliases, the full 0.25-4.0 speed 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, including 0ms, 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, and T suffixes before G2P, including decimal and dollar/pound values such as 20K and $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 II become ordinals, labels such as World War II and Chapter XI become cardinal numbers, and forms such as 10m, 32ft, 40cm, and 1479 BC are spoken as words without changing non-English input or unrelated identifiers.
  • Corrected context-sensitive English pronunciation of arithmetic in both American and British voices: standalone and object uses take the noun pronunciation, while direct noun modifiers such as arithmetic operation and arithmetic mean retain 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-g2p phonemization. The shared Vietnamese weights appear as one independently selectable model pack and the unused ONNX export is not baked into the ...
Read more

v0.3

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 02 Oct 19:42
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_tiny

Changes

  • 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-test for 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 nuke removing 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, explicit hangrylabs/kokorotts publishing, 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

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 11 May 20:20
Immutable release. Only release title and notes can be modified.

v0.2

  • Moved public project direction under Hangry Labs.
  • Added a root VERSION file 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, and ogg output 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, resolved requirements.txt, and task 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-voice and task imageapi-format for 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.2

v0.0.1

Choose a tag to compare

@TheMasterOfDisasters TheMasterOfDisasters released this 10 May 17:53

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:latest

NVIDIA GPU:

docker run -p 7860:7860 --gpus all sensejworld/kokorotts:latest

Specific GPU (example: GPU index 1):

docker run -p 7860:7860 --gpus "device=1" -e CUDA_VISIBLE_DEVICES=1 sensejworld/kokorotts:latest

Visit: http://localhost:7860 for the UI.
(First synthesis may take a little longer while the model and device warm up.)