Vibeleaderboard
Index / tool
Visit github.com
Category
AI Tools
Rank
No. 1467Tools index

Previous survey · No. 1411 ·

Pricing
Open Source
Type
TOOL
Use case
Design & Media
Interfaces
CLI · API · MCP
GitHub
26 stars
Latest release
v0.1.1
Date

About

An open-source, offline text-to-speech engine offering 28 voices across 10 languages with voice cloning from ~10 seconds of audio, plus native SDKs for Python, Swift, Go, Rust and TypeScript. It ships a CLI, an HTTP/gRPC server with an OpenAI-compatible speech API, and a preview MCP server for agent integration, all running locally with no account or usage fees.

What it does

A speech synthesizer you download once and then run on your own machine. Text first passes through a language-aware preparation step that spells out numbers, dates and currency. A token generator then predicts discrete speech units, a decoder turns them into a spectrogram, and a vocoder renders 24 kHz audio. Python is the reference implementation. The Swift, Go, Rust and TypeScript libraries reimplement the same algorithm and are checked against shared test fixtures, so a given text, voice and seed produce the same speech tokens in every language. A voice is a small file of about 150 KB, and a short recording of one speaker makes a new one.

Why it's ranked here

Few local speech engines put this much of their contract in writing. A scope document separates supported, experimental and out-of-scope features, lists which runtime and hardware combinations were actually measured, and admits English is the only language checked by ear. The Python package declares itself Alpha, so the API is young. Against that: Apache 2.0 code and weights, 28 voices each with a recorded source and consent basis, and one engine reachable from a command line, an HTTP server, gRPC and a preview MCP server. For offline speech with reproducible output across several platforms, it is a serious option rather than a demo.

What's good

Determinism is designed, not hoped for. Each stage draws its own random stream derived from the caller's seed, so tuning one stage cannot change another stage's output, and warming the engine cannot shift a later render. The local server binds to loopback by default, refuses oversized request bodies before reading them, queues at most 32 requests, and will not bind publicly without a bearer token. A response header flags audio cut off at the length cap, so a severed sentence is not passed off as finished. Saved audio carries an unsigned note naming model, voice, seed and backend, and the docs say plainly it is not C2PA.

Tradeoffs

The first run downloads a 747 MB model, and the ONNX and CoreML releases run to roughly 2.4 to 3.1 GB. Go and Rust need the ONNX Runtime library installed separately. By the maintainers' own account, nine of the ten languages have not been judged by a native speaker. MCP is a preview whose tools may change shape, and it has no cloning tool. The server speaks plain HTTP with no TLS, quotas or multi-tenancy, so a public deployment needs a proxy in front. There is no emotion control, no fine-tuning, and no Android or WebAssembly target. Features land in Python first and reach the other ports later.

How to use it well

It fits apps that must speak text offline on a laptop, a Jetson board or an Apple device, and teams that need identical audio from identical input for tests or caching. Load the engine once and keep it, since reading the checkpoint takes seconds; that cost is why the server exists. Preview the text preparation step from the command line before blaming the model for a misread number. Pin a release revision for anything reproducible, and check the truncation header on every server reply. Agents that already call OpenAI's speech endpoint can point at the local server instead. It does not cover hosted multi-user speech, training or expressive control.

Technical notes+

pyproject.toml keeps the core install to numpy (capped below 2.4 for a mypy parsing issue), safetensors and tokenizers, with every backend and transport as an extra: torch, onnx, coreml, enroll, hub, server (FastAPI and uvicorn, pulling torch via a self-reference), mcp (mcp>=2.0.0,<3) and grpc (grpcio and protobuf floors pinned to the checked-in stubs). The sdist is an explicit allowlist, so the Go, Rust, Swift and JS trees never ship to PyPI. docs/design/ARCHITECTURE.md describes a layered import graph (foundation, release, frontend, models and backends, engine and stream, a single synthesis layer, then HTTP/MCP/gRPC transports as peers, then the CLI) enforced by an import-graph test. docs/design/engine-pipeline.md documents the seed ladder: stream 1 for the flow prior, 2 for vocoder excitation, 8+n for retries of a condemned window, 16+k for chunk k, 4096 for a re-split half; chunk 0 uses the caller's seed so single-window output matches the ports. It also requires every backend to expose teacher-forced logits for stage-by-stage cross-backend comparison. docs/guides/04-server-and-agents.md gives the server bounds: 10 000 characters, a byte ceiling of twelve bytes per character enforced before buffering, a 32-deep queue answering 503 with Retry-After, and LOUDKIT_NO_WARM to skip the startup render. python/loudkit/cli.py defines exactly eight commands and caps stdin at 1 << 20 characters.

Observed

License
Apache-2.0 for code and the loudr-1 release; tokenizer and speaker encoder keep upstream MIT from Chatterbox
Declared maturity
Development Status :: 3 - Alpha (pyproject.toml)
Language
Python reference implementation, with ports in Swift, Go, Rust and TypeScript held to shared conformance fixtures
Python support
Requires Python 3.10 or newer; classifiers list 3.10 through 3.13
Packaging
PyPI package with extras: torch, audio, hub, onnx, coreml, enroll, server, mcp, grpc
Interfaces
CLI with eight commands; HTTP server with an OpenAI-compatible speech route and SSE streaming; gRPC; MCP over stdio (preview); Speech Dispatcher module
Backends
PyTorch (CPU, CUDA, MPS), ONNX Runtime, CoreML
Platform requirements
Swift needs macOS 14 or iOS 17; TypeScript targets Node 20; Go and Rust need libonnxruntime on the machine
Model size
747 MB synthesis checkpoint for loudr-1, fetched on first use
Voices
28 shipped voices across ten languages, each with source, licence and consent basis recorded
Server defaults
Binds loopback; 10 000 character text cap; queue of 32; non-loopback bind requires --allow-public and a bearer token; no built-in TLS
Out of scope
Model training and fine-tuning, emotion control, Android, WebAssembly, production multi-tenant serving

Read from README.md, pyproject.toml, LICENSE, RESPONSIBLE_USE.md, SUPPORTED.md, docs/design/ARCHITECTURE.md, docs/design/engine-pipeline.md, docs/guides/01-getting-started.md, docs/guides/04-server-and-agents.md, python/loudkit/cli.py.

What it can do

  • Convert text to speech offline

    Text → Audio speech in one of 28 voices/10 languages

  • Clone a voice from a short audio sample

    ~10 seconds of audio → Cloned voice model for TTS

  • Run text-to-speech via command-line interface

    Text and CLI commands → Generated audio file

  • Serve text-to-speech requests over HTTP/gRPC with an OpenAI-compatible speech API

    API requests → Synthesized speech audio

  • Integrate with AI agents via a preview MCP server

    MCP requests → Speech output for agent workflows

  • Perform text-to-speech through native SDKs in Python, Swift, Go, Rust, and TypeScript

    Text via SDK calls → Generated audio

Tags

text-to-speechvoice-cloningofflinelocal-aionnxmultilingualttsmcp

Tech Stack

PythonSwiftDocker

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.