Skip to main content

kyutai-tts-mcp

Local-only voice for any MCP client (Claude Code, Claude Desktop, Cursor, etc.) via Kyutai Pocket TTS. No cloud, no API keys, no rate limits.

  • 🇫🇷 French (Estelle), 🇬🇧 English (Alba), plus Spanish, German, Italian, Portuguese
  • TTFA ~80–200 ms thanks to native streaming via the pocket-tts Python API
  • Multi-language at runtime — pass language= per speak() call, models load lazily and cache
  • ~4-5× real-time generation on Apple Silicon / Intel CPU
  • Non-blocking speak(), gap-free playback via sounddevice write-mode
  • ~600 MB venv, ~1 GB model cache per language

Install

uvx kyutai-tts-mcp --help

Or persistent:

uv tool install kyutai-tts-mcp

Then add to your MCP client's .mcp.json:

{
  "mcpServers": {
    "kyutai-tts": {
      "command": "uvx",
      "args": ["kyutai-tts-mcp", "--language", "french_24l"]
    }
  }
}

Replace french_24l with english, spanish_24l, german_24l, italian_24l, or portuguese_24l for your default language. Per-call language= overrides this default.

MCP tools

Tool Purpose
speak(text, voice?, language?, interrupt?) Generate audio for text and queue it for background playback. Returns immediately, streaming generation. By default, calls queue and play sequentially (including across turns). Pass interrupt=True to abort current playback and clear the queue first. Pass language= to switch model on the fly.
stop_speaking() Stop current playback, drop queue, cancel in-flight generation. Use for explicit "mute" requests. For mid-turn interruption + new speech, use speak(..., interrupt=True) instead.
status() Report loaded languages, queue depths, sample rate, last error.

Configuration

The default language is set via --language (CLI) or KYUTAI_TTS_LANGUAGE (env var). Other knobs (all env):

  • KYUTAI_TTS_VOICE — default voice name
  • KYUTAI_TTS_DEVICE — PyTorch device (default cpu; mps not supported)
  • KYUTAI_TTS_QUANTIZE — set to 1 for int8 quantization
  • KYUTAI_TTS_MAX_TOKENS — max tokens per streaming chunk (default 50)

Voice cloning

Pocket-tts can clone a voice from a short audio sample. The cloning runs 100 % locally — your audio never leaves the machine — but the cloning-enabled model checkpoint is gated on Hugging Face. One-time setup:

  1. Accept the terms at huggingface.co/kyutai/pocket-tts
  2. uv tool install huggingface-hub && hf auth login
  3. rm -rf ~/.cache/huggingface/hub/models--kyutai--pocket-tts to force re-downloading the cloning-enabled checkpoint

Then either pass the audio file directly to speak(voice="/path/to.wav"), or pre-extract it as a .safetensors for instant loading:

uvx kyutai-tts-mcp extract-voice \
  --audio ~/voices/yours.wav \
  --out ~/voices/yours.safetensors \
  --language french_24l \
  --truncate

Then speak(voice="/path/to/yours.safetensors"). Full guide and recording recommendations: main repo.

Claude Code users

If you're on Claude Code (CLI, desktop, or via Cursor), you can install the bundled plugin (MCP wiring + /voice-mode skill) in one shot:

/plugin marketplace add Vincweb/kyutai-tts-mcp
/plugin install kyutai-tts@vincweb-tools

See the main repo for architecture details, voice catalog, and a side-by-side comparison with voxtral-mcp.

Requirements

  • macOS (Apple Silicon recommended; Intel works — the model is CPU-only)
  • Python 3.10 – 3.13
  • ~1 GB free RAM per loaded language

License

MIT. Kyutai pocket-tts itself is under its own permissive licence (see upstream).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kyutai_tts_mcp-0.7.0.tar.gz (100.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kyutai_tts_mcp-0.7.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file kyutai_tts_mcp-0.7.0.tar.gz.

File metadata

  • Download URL: kyutai_tts_mcp-0.7.0.tar.gz
  • Upload date:
  • Size: 100.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for kyutai_tts_mcp-0.7.0.tar.gz
Algorithm Hash digest
SHA256 9b88ae2f43ac260db786db95313ef18a33a011d4026cdbd120ad99c1c25050e3
MD5 3166b525255923bb2b5fcc99d372f7ad
BLAKE2b-256 5126b0adcbbb7e4d21d65825bbb29b01ab3841379990cbfb79e756d642adfb2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kyutai_tts_mcp-0.7.0.tar.gz:

Publisher: publish.yml on Vincweb/kyutai-tts-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kyutai_tts_mcp-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: kyutai_tts_mcp-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for kyutai_tts_mcp-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd94ae2fb85adc25903fd1b2856c7ee371a8090a48c7d14865d8f7dd448ad032
MD5 97edde481024f484467a1962155aca20
BLAKE2b-256 e2e805c4caba624e5d489fbfbd5079afbec10653160c21e84ef63b35f0b4d798

See more details on using hashes here.

Provenance

The following attestation bundles were made for kyutai_tts_mcp-0.7.0-py3-none-any.whl:

Publisher: publish.yml on Vincweb/kyutai-tts-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 files

0.6.0

2 files

0.5.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page