kyutai-labs/pocket-ttsPublic

A TTS that fits in your CPU (and pocket)

AI summary: A highly efficient, pocket-sized text-to-speech model designed for rapid, low-latency audio generation.

Stars
9.8K
+60 today
Forks
1K
Watchers
69
Open issues
50
Open PRs
6
Contributors
~54
Commits
176
Branches
8

PythonMITCreated Jan 7, 2026Last push 3d agoLatest release v3.3.0+142 stars this week+424 this month

Quick answers

What is pocket-tts?
A highly efficient, pocket-sized text-to-speech model designed for rapid, low-latency audio generation.
What does pocket-tts do?
Pocket TTS is an optimized text-to-speech engine that delivers remarkably fast, low-latency voice generation suitable for real-time applications. It focuses on providing a lightweight model architecture that can run efficiently on consumer-grade CPU hardware, or even in-browser via WebAssembly, without sacrificing natural prosody and audio quality. The system is specifically engineered to minimize the time to first audio, making it ideal for conversational AI agents, interactive voice response systems, and low-resource environments. By streamlining the inference pipeline and allowing voice states to be exported for fast loading, it ensures synthesized speech is delivered smoothly and naturally.
Who is pocket-tts for?
AI developers, frontend engineers, and researchers needing a fast, lightweight text-to-speech solution for real-time applications.
How do I get started with pocket-tts?
pip install pocket-tts
How popular is pocket-tts on GitHub?
kyutai-labs/pocket-tts has 9,754 stars and 1,025 forks on GitHub, and gained 142 stars in the last 7 days.
What license does pocket-tts use?
kyutai-labs/pocket-tts is released under the MIT license.

Star history

since Jul 29, 2026
02.5K5K7.5KJul 2026Aug 2026Sep 2026Oct 2026
9.8K stars as of Oct 2, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 6 commits2026-01-13: 6 commits2026-01-14: 1 commit2026-01-15: 2 commits2026-01-16: 0 commits2026-01-17: 6 commits2026-01-18: 0 commits2026-01-19: 3 commits2026-01-20: 2 commits2026-01-21: 3 commits2026-01-22: 2 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 2 commits2026-01-27: 2 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 1 commit2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 1 commit2026-02-03: 4 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 1 commit2026-02-11: 0 commits2026-02-12: 6 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 7 commits2026-02-17: 2 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 1 commit2026-02-21: 1 commit2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 1 commit2026-02-28: 0 commits2026-03-01: 1 commit2026-03-02: 0 commits2026-03-03: 1 commit2026-03-04: 1 commit2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 2 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 3 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 1 commit2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 1 commit2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 3 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 1 commit2026-04-21: 0 commits2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 1 commit2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 1 commit2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 4 commits2026-05-05: 1 commit2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 1 commit2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 1 commit2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 1 commit2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 1 commit2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 1 commit2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 4 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 1 commit2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 1 commit2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 10 commits2026-08-26: 3 commits2026-08-27: 7 commits2026-08-28: 6 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 5 commits2026-09-01: 3 commits2026-09-02: 8 commits2026-09-03: 4 commits2026-09-04: 0 commits2026-09-05: 2 commits2026-09-06: 0 commits2026-09-07: 2 commits2026-09-08: 2 commits2026-09-09: 3 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 1 commit2026-09-13: 0 commits2026-09-14: 2 commits2026-09-15: 0 commits2026-09-16: 1 commit2026-09-17: 1 commit2026-09-18: 2 commits2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 1 commit2026-09-22: 2 commits2026-09-23: 4 commits2026-09-24: 4 commits2026-09-25: 2 commits2026-09-26: 1 commit2026-09-27: 4 commits2026-09-28: 2 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
176 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What pocket-tts does

Pocket TTS is an optimized text-to-speech engine that delivers remarkably fast, low-latency voice generation suitable for real-time applications. It focuses on providing a lightweight model architecture that can run efficiently on consumer-grade CPU hardware, or even in-browser via WebAssembly, without sacrificing natural prosody and audio quality. The system is specifically engineered to minimize the time to first audio, making it ideal for conversational AI agents, interactive voice response systems, and low-resource environments. By streamlining the inference pipeline and allowing voice states to be exported for fast loading, it ensures synthesized speech is delivered smoothly and naturally.

AI developers, frontend engineers, and researchers needing a fast, lightweight text-to-speech solution for real-time applications.

  • Low-Latency Generation: Optimized for rapid time-to-first-audio to support real-time conversational agents.
  • Lightweight Architecture: Designed to run efficiently on standard consumer CPU hardware and in web browsers without massive GPU clusters.
  • Natural Prosody: Synthesizes speech with realistic intonation and rhythm despite its highly compact model size.
  • Streaming Output: Capable of streaming audio chunks as they are generated for immediate playback in applications.
  • Fast Voice Loading: Allows exporting voice states to safetensors files to drastically reduce loading times during inference.

Where teams use it

Conversational AI Agents

Developers power real-time voice responses for interactive chatbots and virtual assistants with minimal delay.

Browser-Based Applications

Engineers deploy the model via WebAssembly to generate speech directly on the client side without server costs.

Low-Resource Environments

Hardware enthusiasts integrate the TTS engine into embedded devices like Raspberry Pi for offline voice generation.

Voice Cloning Workflows

Creators utilize custom wav files as prompts to rapidly clone voices for localized application output.

Getting started: pip install pocket-tts

README

main branch

Pocket TTS

pocket-tts-logo-v2-transparent

A lightweight text-to-speech (TTS) application designed to run efficiently on CPUs. Forget about the hassle of using GPUs and web APIs serving TTS models. With Kyutai's Pocket TTS, generating audio is just a pip install and a function call away.

Supports Python 3.10, 3.11, 3.12, 3.13 and 3.14. Requires PyTorch 2.5+. Does not require the gpu version of PyTorch.

🔊 Demo | 🐱‍💻GitHub Repository | 🤗 Hugging Face Model Card | ⚙️ Tech report | 📄 Paper | 📚 Documentation

Note

New (August 2026): We've released the training code! Check out training/ to start training your own models. Open a PR to add your model to the Models trained by the community section.

Main takeaways

  • Runs on CPU
  • Small model size, 100M parameters
  • Audio streaming
  • Low latency, ~200ms to get the first audio chunk
  • Faster than real-time, ~6x real-time on a CPU of MacBook Air M4
  • Uses only 2 CPU cores
  • Python API and CLI
  • Voice cloning
  • Multi-language support: english, french, german, portuguese, italian, spanish
  • Can handle infinitely long text inputs
  • Can run on client-side in the browser

Additional languages may be added in the future.

Trying it from the website, without installing anything

Navigate to the Kyutai website to try it out directly in your browser. You can input text, select different voices, and generate speech without any installation.

Trying it with the CLI

The generate command

You can use pocket-tts directly from the command line. We recommend using uv as it installs any dependencies on the fly in an isolated environment (uv installation instructions here). You can also use pip install pocket-tts to install it manually. On Linux, see CPU-only installation to avoid pulling in the CUDA build of PyTorch.

This will generate a wav file ./tts_output.wav saying the default text with the default voice, and display some speed statistics.

uvx pocket-tts generate
# or if you installed it manually with pip:
pocket-tts generate

Modify the voice with --voice and the text with --text. We provide a small catalog of voices. Choose a pretrained language model with --language when running generate, export-voice, or serve (default: english). Non-english languages have also biggers 24 layers variants that are higher quality but slower. You can select them by using for example --language italian_24l. --language english_drifting_26-09 selects an English model whose sampler head was trained with drifting instead of LSD (see training/README.md for the recipe). The --config option accepts a local YAML path, an https:// URL, or an hf:// path (e.g. hf://<repo_id>/<path>[@revision]) for custom weights.

You can take a look at this page which details the licenses for each voice.

The --voice argument can also take a plain wav file as input for voice cloning. You can use your own or check out our voice repository. We recommend cleaning the sample before using it with Pocket TTS, because the audio quality of the sample is also reproduced.

Feel free to check out the generate documentation for more details and examples. For trying multiple voices and prompts quickly, prefer using the serve command.

The serve command

You can also run a local server to generate audio via HTTP requests.

uvx pocket-tts serve
# or if you installed it manually with pip:
pocket-tts serve

Navigate to http://localhost:8000 to try the web interface, it's faster than the command line as the model is kept in memory between requests.

You can check out the serve documentation for more details and examples.

The export-voice command

Processing an audio file (e.g., a .wav or .mp3) for voice cloning is relatively slow, but loading a safetensors file -- a voice embedding converted from an audio file -- is very fast. You can use the export-voice command to do this conversion. See the export-voice documentation for more details and examples.

Using it as a Python library

You can try out the Python library on Colab here.

Install the package with

pip install pocket-tts
# or
uv add pocket-tts

CPU-only installation

On Linux, PyPI serves the CUDA build of PyTorch by default, so pip install pocket-tts also downloads the nvidia-* CUDA runtime wheels, even though pocket-tts runs on CPU. This adds several gigabytes to the install (with torch 2.13, roughly 3 GB instead of 200 MB). Installing from the PyTorch CPU index pulls the CPU build and no NVIDIA packages:

pip install pocket-tts --extra-index-url https://download.pytorch.org/whl/cpu

To run the CLI without installing, pass the same index to uvx:

uvx --index https://download.pytorch.org/whl/cpu pocket-tts generate

With uv, declare the index explicitly in your project:

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

[tool.uv.sources]
torch = [{ index = "pytorch-cpu" }]

This is not needed on macOS or Windows, where the default PyTorch wheels are already CPU-only.

You can use this package as a simple Python library to generate audio from text.

from pocket_tts import TTSModel
import scipy.io.wavfile

tts_model = TTSModel.load_model()
voice_state = tts_model.get_state_for_audio_prompt(
    "alba"  # One of the pre-made voices, see above
    # You can also use any voice file you have locally or from Hugging Face:
    # "./some_audio.wav"
    # or "hf://kyutai/tts-voices/expresso/ex01-ex02_default_001_channel2_198s.wav"
)
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
# Audio is a 1D torch tensor containing PCM data.
scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.numpy())

You can have multiple voice states around if you have multiple voices you want to use. load_model() and get_state_for_audio_prompt() are relatively slow operations, so we recommend to keep the model and voice states in memory if you can.

For faster voice loading, you can export voice states to safetensors files:

from pocket_tts import TTSModel, export_model_state

model = TTSModel.load_model()

# Export a voice state for fast loading later
model_state = model.get_state_for_audio_prompt("some_voice.wav")
export_model_state(model_state, "./some_voice.safetensors")

# Later, load it quickly, this is quite fast as it's just reading the kvcache
# from disk and doesn't do any others computations.
model_state_copy = model.get_state_for_audio_prompt("./some_voice.safetensors")

audio = model.generate_audio(model_state_copy, "Hello world!")

You can check out the Python API documentation for more details and examples.

Running on GPU

Pocket TTS is designed to run on CPU, and on hardware with strong single-thread CPU performance (e.g. Apple Silicon) we did not observe a GPU speedup, notably because we use a batch size of 1 and a very small model. However, this turns out to be hardware-dependent: measured on a cloud x86 VM (4 vCPUs) with a Tesla T4, moving the model to GPU gave a consistent ~2.6x speedup over CPU (RTF ~2.3-2.5x on CPU vs. ~6.28x on GPU, for both short and long input text). If your CPU is thread-limited or otherwise weaker than a modern laptop chip, it's worth trying the GPU.

This is not officially supported (there is no device argument on TTSModel.load_model()), but since TTSModel is a regular nn.Module you can move it yourself:

tts_model = TTSModel.load_model()
tts_model.to("cuda")
...
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
# generate_audio() returns a tensor on the same device as the model, so on GPU you need
# to move it back to CPU before calling .numpy():
scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.detach().cpu().numpy())

A few things to be aware of if you want to use the GPU:

  • The generate CLI command has a --device option (defaults to cpu, documented in the CLI reference — note that page's own description ("you may not get a speedup by using a gpu since it's a small model") is what this section is correcting, based on the T4 measurements above); the serve command and the Docker image do not expose any device option and will always run on CPU.
  • pip install pocket-tts / uv add pocket-tts install whatever torch build is current on PyPI, which may require a newer CUDA version than your driver supports. In that case torch.cuda.is_available() silently returns False (you'll only see a UserWarning about an outdated driver, not an error). If this happens, install a torch build matching your driver's CUDA version explicitly, e.g. pip install torch --index-url https://download.pytorch.org/whl/cu121.
  • quantize=True (int8 dynamic quantization) only works on CPU; calling it on a model moved to CUDA raises NotImplementedError: Could not run 'quantized::linear_dynamic' ... 'CUDA' backend. Separately, the optional torchao backend (pip install pocket-tts[quantize]) declares torch>=2.11 — fine with a fresh install (torch 2.11+ is on PyPI as of this writing), but if you've pinned an older torch (e.g. to match an older GPU driver's CUDA build, per the point above), adding this extra can pull in a torchao that's incompatible with your pinned torch and break quantize=True even on CPU. Match torchao's torch requirement to whatever torch you actually have installed.

Unsupported features

At the moment, we do not support (but would love pull requests adding):

We tried running this TTS model on the GPU but did not observe a speedup compared to CPU execution on hardware with very strong single-thread CPU performance, notably because we use a batch size of 1 and a very small model. See the "Running on GPU" section above for measurements on other hardware and caveats if you want to try it yourself.

Development and local setup

We accept contributions! Feel free to open issues or pull requests on GitHub.

You can find development instructions in the CONTRIBUTING.md file. You'll also find there how to have an editable install of the package for local development.

In-browser implementations

Pocket TTS is small enough to run directly in your browser in WebAssembly/JavaScript. We don't have official support for this yet, but you can try out one of these community implementations:

Alterative implementations

  • pocket-tts-mlx by @jishnuvenugopal - MLX backend optimized for Apple Silicon
  • pocket-tts-xn by @LaurentMazare - A Rust port of Pocket TTS implemented with XN.
  • pocket-tts-candle by @babybirdprd - Candle version (Rust) with WebAssembly and PyO3 bindings.
  • PocketTTS.cpp by @VolgaGerm - Single-file C++ runtime using ONNX Runtime, with CLI, HTTP server, and FFI C API.
  • sherpa-onnx by @csukuangfj - Run PocketTTS on Windows, macOS, Linux, and embedded boards (Raspberry Pi, Jetson, RK3588, etc.) with bindings for 12 programming languages: C++, C, Python, JavaScript, Java, C#, Kotlin, Swift, Go, Dart, Rust, Pascal, plus WebAssembly.
  • pocket-tts-csharp by @TheAjaykrishnanR - A C# port of Pocket TTS implemented using TorchSharp and TorchSharp.PyBridge for ease of use as a library in .NET projects.
  • pocket-tts-timestamped by @dpm63 - A fork that adds support for word-level timestamps.
  • Pocket-TTS-LiteRT by @john-rocky - LiteRT (.tflite) graphs that run on Android phone GPUs through the LiteRT CompiledModel API, ~1x real-time on a Pixel 8a, with Python and Kotlin usage snippets.

Models trained by the community

To use a community model, just use the --config argument and point it to the url of the model's yaml file. For example:

uvx pocket-tts generate --config https://raw.githubusercontent.com/kyutai-labs/pocket-tts/refs/heads/main/pocket_tts/config/english_2026-04.yaml

It also works with huggingface urls like hf://kyutai/pocket-tts/config/english_2026-04.yaml or local paths like ./english_2026-04.yaml.

The pre-made voices listed above are embeddings precomputed with our released weights, so they are not available for community models. With --config, --voice defaults to alba's audio file, which any model can clone. Pass your own audio file to --voice to use another voice.

We recommend inserting the commit hash somehow in the url to avoid breaking changes by the model authors. For example:

uvx pocket-tts generate --config https://raw.githubusercontent.com/kyutai-labs/pocket-tts/891886a61a1ed45fd429a0a63bd96181e6cff637/pocket_tts/config/english_2026-04.yaml

or with hf://...

uvx pocket-tts generate --config hf://user/repo/config_file.yaml@commit_hash

List of community-trained models

Pocket TTS Czech by @vvolhejn
uvx pocket-tts generate \
  --config hf://vvolhejn/pocket-tts-czech/czech.yaml@7b7760dd0fe994a0800f2fdbc837dc4b8f219d1c \
  --text "Dnešek je velmi dobrý den"
Pocket TTS Hindi by Saryps Labs
uvx pocket-tts generate \
  --config hf://saryps-labs/pocket-tts-hindi/config.yaml@dbaa326069d20bfbdaeb625613736773741a24ea \
  --text "आज का दिन बहुत अच्छा है"
Pocket TTS Korean 300M by @seastar105
uvx pocket-tts generate \
  --config hf://seastar105/pocket-tts-korean-300m/korean.yaml@df328c817a02866f20a6f74e5183e0a1fc6f6435 \
  --text "안녕하세요. 한국어 음성 합성 모델입니다."
Pocket TTS Persian (Farsi) by @mallahyari
uvx --with soundfile pocket-tts generate --config hf://mehdi-hf/pocket-tts-farsi/farsi.yaml@3c59d06b3177b21c5cd0df9e9e3e899f4d361c1c \
    --voice hf://mehdi-hf/pocket-tts-farsi/example_voice.wav --text "سلام، حال شما چطور است؟"
Pocket TTS Indonesian by @anak10thn, 6 layers
uvx pocket-tts generate \
  --config hf://anak10thn/pocket-tts-indonesian/indonesian_6l.yaml@6196fe14c6c2108332c16d33c864c8901c044aaa \
  --text "Selamat pagi. Ini model sintesis suara bahasa Indonesia."
Pocket TTS Estonian by @cbentes
uvx pocket-tts generate \
  --config hf://cbentes/pocket-tts-estonian/estonian.yaml@8934022f1befb3dc568351e3b88e48a9edb94d7d \
  --voice hf://cbentes/pocket-tts-estonian/voices/et_f_reporter.wav@8934022f1befb3dc568351e3b88e48a9edb94d7d \
  --text "Tere! Mina olen eesti keele kõnesüntesaator ja töötan tavalises arvutis kiiremini kui reaalajas."
Pocket TTS Cymraeg (Welsh) by EryriLabs, 24 layers
uvx pocket-tts generate \
  --config hf://EryriLabs/pocket-tts-cymraeg/config.yaml@1f23b3a8d1706b24a2faf3c77075a223ed69f57c \
  --text "Mae'r tywydd yn braf yng Nghymru heddiw."
Pocket TTS Polish by @shefowl, 6 layers
uvx pocket-tts generate \
  --config hf://shefowl/pocket-tts-polish-6l/config.yaml@a8630f2a39055d3e5a91acb7922e31bd0c506cfe \
  --voice hf://shefowl/pocket-tts-polish-6l/reference.wav@a8630f2a39055d3e5a91acb7922e31bd0c506cfe \
  --text "Dzień dobry. Nazywam się Krzysztof Wiśniewski i mówię po polsku."

Want your model here? Head to the training Readme to get started!

Projects using Pocket TTS

  • pocket-reader by @lukasmwerner- Browser screen reader
  • pocket-tts-wyoming by @ikidd - Docker container for pocket-tts using Wyoming protocol, ready for Home Assistant Voice use.
  • Sonorus by @KevinAHM - Talk to any named character in Hogwarts Legacy with their original voice.
  • Native macOS App by @slaughters85j - Native macOS app, Python-free. Runs Pocket-TTS via Core ML, fully on-device. Includes signed and notarized .app releases.
  • Electron macOS App by @slaughters85j - Electron Mac Desktop App + macOS Quick Action
  • pocket-tts-openai_streaming_server by @teddybear082 - OpenAI-compatible streaming server, dockerized and with an .exe release
  • pocket-tts-unity by @lookbe - A Unity 6 integration for Pocket-TTS.
  • ComfyUI-Pocket-TTS by @ai-joe-git Lightweight CPU-based Text-to-Speech for ComfyUI
  • pocket-tts-server by @ai-joe-git A lightweight, real-time voice cloning and chat server with OpenAI-compatible API. Clone any voice with just 20 seconds of audio and chat with AI using that voice instantly.
  • discord-tts by @alkmei - Multivoice Discord text-to-speech bot that uses Pocket TTS.
  • cursed-codex by @dooart - AI coding agent with unhinged live football commentary
  • pocket-tts-deno Port of pocket-tts-server as a wasm + onnx deno server with voice TTS API.
  • FrontPocket by @markd89 - Front-end for Pocket-TTS to speak text from clipboard, file, CLI (hotkeys) & GUI toolbar. Change playback speed, voice, and move forward/backward between sentences instantaneously.
  • openclaw-pockettts by @dodgyrabbit - A Docker container with the Python implementation but exposed as an OpenAI TTS API for easy integration with OpenClaw.
  • openclaw-pocketts.cpp by @dodgyrabbit - A Docker container with the PocketTTS.cpp version, packaged for easy integration with OpenClaw.
  • tts-audiobook-tool by @zeropointnine - Multi-model audiobook generator with automatic error detection, 48khz upscaling, synced browser reader, stand-alone server-mode.
  • seshat-tts by @scriptriva - Accessibility tool that provides real-time audio synthesis for games and apps. It also features a voice manager capable of cloning voices based on user presets.
  • LocalVocal.ai by @joshwhiton - Fully local conversational voice-harness for Macs with Apple Silicon. Includes voice-activity & turn detection, dictation, voice cloning, CLI to talk to Claude, Codex... and more.
  • Libratory by @subev - Turns PDFs into read-along audiobooks with the narration highlighted on the printed page; Pocket TTS is one of its local narrators, with voice cloning from the picker.

Prohibited use

Use of our model must comply with all applicable laws and regulations and must not result in, involve, or facilitate any illegal, harmful, deceptive, fraudulent, or unauthorized activity. Prohibited uses include, without limitation, voice impersonation or cloning without explicit and lawful consent; misinformation, disinformation, or deception (including fake news, fraudulent calls, or presenting generated content as genuine recordings of real people or events); and the generation of unlawful, harmful, libelous, abusive, harassing, discriminatory, hateful, or privacy-invasive content. We disclaim all liability for any non-compliant use.

Authors

Manu Orsini*, Simon Rouard*, Gabriel De Marmiesse*, Václav Volhejn, Neil Zeghidour, Alexandre Défossez

*equal contribution

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

14 total
  1. v3.3.0v3.3.0Sep 24, 2026

    ## What's Changed * Default every shipped model to temperature 0.3 by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/324 * French: rewrite characters the models never saw in training (quotes, curly apostrophes) by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/325 * Retrained Spanish, Italian, Portuguese and German; new Dutch by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/326 **Full Changelog**: https://github.com/kyutai-labs/pocket-tts/compare/v3.2.0...v3.3.0

  2. v3.2.0v3.2.0Sep 23, 2026

    The french language has been updated, we now have `"french"` and a better `"french_24l"`! ## What's Changed * Always end the prompt with sentence-final punctuation by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/296 * README: add Pocket-TTS-LiteRT (Android GPU) to alternative implementations by @john-rocky in https://github.com/kyutai-labs/pocket-tts/pull/295 * Add pocket-tts-farsi to community-trained models by @mallahyari in https://github.com/kyutai-labs/pocket-tts/pull/298 * Add Indonesian 24L community model to README by @anak10thn in https://github.com/kyutai-labs/pocket-tts/pull/294 * Decode every queued latent per call in the decoder thread by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/300 * Add pocket-tts-estonian to community-trained models by @cbentes in https://github.com/kyutai-labs/pocket-tts/pull/301 * README: collapse community model commands into <details> blocks by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/302 * Add dependency cooldown (exclude-newer = 7 days) by @gabrieldemarmiesse in https://github.com/kyutai-labs/pocket-tts/pull/303 * Bump the Indonesian model to its retrained weights by @anak10thn in h

  3. v3.1.0v3.1.0Sep 3, 2026

    ## What's Changed * Document CPU-only installation (pip pulls ~3 GB of CUDA wheels by default) by @jflaflamme in https://github.com/kyutai-labs/pocket-tts/pull/219 * Speed table: measured H100 rows off local storage by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/250 * lsd_depth_distill: 64 rows in one pass, drop the unused flow multiplier by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/253 * Finetune a released model into a new language by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/254 * Import Annotated from typing by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/256 * Run the training tests in CI, and make zip lengths explicit by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/257 * Run the training tests in CI by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/258 * Fix decimal splitting in sentence chunker by @preciousimo in https://github.com/kyutai-labs/pocket-tts/pull/217 * Split tts_model into text chunking and model-state I/O by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/259 * Immutable defaults in seanet; document the two open() call sites by @manu-lm in https://githu

  4. v3.0.2v3.0.2Aug 25, 2026

    ## What's Changed * Add the Czech model to the README and plug the community models section by @vvolhejn in https://github.com/kyutai-labs/pocket-tts/pull/246 * lsd_scratch: 5s voice prompts, cosine schedule, batch 16 x 4 by @manu-lm in https://github.com/kyutai-labs/pocket-tts/pull/247 * Now --voice defaults to alba with voice cloning on custom config by @gabrieldemarmiesse in https://github.com/kyutai-labs/pocket-tts/pull/248 **Full Changelog**: https://github.com/kyutai-labs/pocket-tts/compare/v3.0.1...v3.0.2

  5. v3.0.1v3.0.1Aug 25, 2026

    Build fixed **Full Changelog**: https://github.com/kyutai-labs/pocket-tts/compare/v3.0.0...v3.0.1

Code frequency

additions and deletions
+7.5K-7.5KWeek of 2026-01-11: +6,708 linesWeek of 2026-01-11: -181 linesWeek of 2026-01-18: +292 linesWeek of 2026-01-18: -43 linesWeek of 2026-01-25: +372 linesWeek of 2026-01-25: -42 linesWeek of 2026-02-01: +56 linesWeek of 2026-02-01: -38 linesWeek of 2026-02-08: +1,208 linesWeek of 2026-02-08: -689 linesWeek of 2026-02-15: +289 linesWeek of 2026-02-15: -465 linesWeek of 2026-02-22: +2 linesWeek of 2026-02-22: -2 linesWeek of 2026-03-01: +3 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +52 linesWeek of 2026-03-08: -30 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +1,711 linesWeek of 2026-03-22: -542 linesWeek of 2026-03-29: +0 linesWeek of 2026-03-29: -0 linesWeek of 2026-04-05: +2 linesWeek of 2026-04-05: -0 linesWeek of 2026-04-12: +1,277 linesWeek of 2026-04-12: -239 linesWeek of 2026-04-19: +179 linesWeek of 2026-04-19: -36 linesWeek of 2026-04-26: +4 linesWeek of 2026-04-26: -3 linesWeek of 2026-05-03: +161 linesWeek of 2026-05-03: -113 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +2 linesWeek of 2026-05-17: -1 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -1 linesWeek of 2026-05-31: +1 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +1 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +20 linesWeek of 2026-07-12: -9 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +539 linesWeek of 2026-08-09: -318 linesWeek of 2026-08-16: +8 linesWeek of 2026-08-16: -11 linesWeek of 2026-08-23: +7,531 linesWeek of 2026-08-23: -1,418 linesWeek of 2026-08-30: +2,637 linesWeek of 2026-08-30: -1,340 linesWeek of 2026-09-06: +83 linesWeek of 2026-09-06: -13 linesJan 11, 2026Sep 6, 2026
+23.1K lines added, -5.5K removed over the last year.

Commits per week

last 52 weeks
260Week of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 21 commitsWeek of 2026-01-18: 10 commitsWeek of 2026-01-25: 5 commitsWeek of 2026-02-01: 5 commitsWeek of 2026-02-08: 7 commitsWeek of 2026-02-15: 11 commitsWeek of 2026-02-22: 1 commitsWeek of 2026-03-01: 3 commitsWeek of 2026-03-08: 2 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 3 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 1 commitsWeek of 2026-04-12: 4 commitsWeek of 2026-04-19: 2 commitsWeek of 2026-04-26: 2 commitsWeek of 2026-05-03: 5 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 1 commitsWeek of 2026-05-24: 1 commitsWeek of 2026-05-31: 1 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 1 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 5 commitsWeek of 2026-08-16: 1 commitsWeek of 2026-08-23: 26 commitsWeek of 2026-08-30: 22 commitsWeek of 2026-09-06: 8 commitsWeek of 2026-09-13: 7 commitsWeek of 2026-09-20: 14 commitsWeek of 2026-09-27: 6 commitsOct 4, 2025Sep 27, 2026
176 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 1 commitsSun 16:00 — 1 commitsSun 17:00 — 1 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 1 commitsSun 21:00 — 1 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 1 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 2 commitsMon 5:00 — 1 commitsMon 6:00 — 1 commitsMon 7:00 — 1 commitsMon 8:00 — 1 commitsMon 9:00 — 1 commitsMon 10:00 — 1 commitsMon 11:00 — 6 commitsMon 12:00 — 2 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 10 commitsMon 16:00 — 2 commitsMon 17:00 — 5 commitsMon 18:00 — 4 commitsMon 19:00 — 0 commitsMon 20:00 — 1 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 1 commitsTue 2:00 — 0 commitsTue 3:00 — 2 commitsTue 4:00 — 1 commitsTue 5:00 — 1 commitsTue 6:00 — 2 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 2 commitsTue 10:00 — 4 commitsTue 11:00 — 6 commitsTue 12:00 — 1 commitsTue 13:00 — 0 commitsTue 14:00 — 2 commitsTue 15:00 — 8 commitsTue 16:00 — 5 commitsTue 17:00 — 4 commitsTue 18:00 — 3 commitsTue 19:00 — 1 commitsTue 20:00 — 0 commitsTue 21:00 — 0 commitsTue 22:00 — 1 commitsTue 23:00 — 1 commitsWed 0:00 — 1 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 2 commitsWed 5:00 — 1 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 1 commitsWed 10:00 — 5 commitsWed 11:00 — 4 commitsWed 12:00 — 1 commitsWed 13:00 — 1 commitsWed 14:00 — 0 commitsWed 15:00 — 1 commitsWed 16:00 — 2 commitsWed 17:00 — 4 commitsWed 18:00 — 0 commitsWed 19:00 — 3 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 1 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 2 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 1 commitsThu 11:00 — 3 commitsThu 12:00 — 8 commitsThu 13:00 — 0 commitsThu 14:00 — 3 commitsThu 15:00 — 2 commitsThu 16:00 — 3 commitsThu 17:00 — 5 commitsThu 18:00 — 2 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 1 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 2 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 2 commitsFri 12:00 — 4 commitsFri 13:00 — 0 commitsFri 14:00 — 2 commitsFri 15:00 — 2 commitsFri 16:00 — 0 commitsFri 17:00 — 2 commitsFri 18:00 — 1 commitsFri 19:00 — 2 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 1 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 1 commitsSat 6:00 — 0 commitsSat 7:00 — 1 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 0 commitsSat 12:00 — 2 commitsSat 13:00 — 0 commitsSat 14:00 — 2 commitsSat 15:00 — 2 commitsSat 16:00 — 1 commitsSat 17:00 — 1 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 1 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 7, 2026daily#22+5
Jan 16, 2026daily#14+176