mrkeyoor.com_
Tue 22 Sept 22:38 UTC
AI Toolsevaluationupdated 26 Aug 2026

pocket-tts review

Pocket TTS is a local text-to-speech engine built to run on a CPU instead of depending on a hosted voice API or dedicated GPU. It gives Python applications, scripts, and a bundled local server streamed speech, supplied voices, and voice cloning across seven documented languages.

+54stars / 7d
Verdict

Our Pocket TTS install took 39 seconds and 41 of 42 tests passed, but the remaining 8-bit WAV test failed because soundfile was unavailable. That is a reasonable trial result for a developer who wants private CPU speech, provided audio validation and dependency checks are part of the application. Choose something else for unattended narration that needs precise pauses, dependable number reading, or a supported GPU service.

We ran it

Lab card: what happened when we ran pocket-ttsScreenshot of pocket-tts (github.com/kyutai-labs/pocket-tts)
Install✓ · 39s69 packages · 996 MB
Build✓ · 6s
Tests✗ · 75s41 passed · 1 failed · 1 skipped of 42 (pytest)
Known vulns0(pip-audit)
Repo85 files~5,217 lines of source · 1.1 MB · 3 CI workflows · Dockerfile · tests dir

Answers from our run

Does pocket-tts build from source?

Dependencies installed in 39 seconds (69 packages), and the build succeeded in 6 seconds. We cloned commit 891886a into a clean Debian container with 3 CPUs and no project-specific setup.

Do pocket-tts's tests pass?

Not all of them: 41 of 42 passed and 1 failed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does pocket-tts have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use pocket-tts?

Narration teams that need exact pause or emotion markup: the README says text-controlled silence is unsupported, while emotion control remains an open request.

What are the alternatives to pocket-tts?

Piper, Kokoro, Coqui TTS. Our Pocket TTS install took 39 seconds and 41 of 42 tests passed, but the remaining 8-bit WAV test failed because soundfile was unavailable.

Setup4/539-second install; one audio dependency test failed
Docs5/5CLI, API, server, training, CPU, and GPU caveats are covered
Community4/59,043 stars with current issue and pull request activity
Maturity3/5v3.0.2 is active, but audio correctness reports remain open

Who it’s for

Python developers adding private speech to desktop tools, accessibility software, or local assistants.
Teams that want streamed audio on ordinary CPU hardware and can keep the model resident between requests.
Researchers who want released training code for adapting a small speech model.
Builders who need voice cloning and can document consent for every custom sample.

Who it’s NOT for

Narration teams that need exact pause or emotion markup: the README says text-controlled silence is unsupported, while emotion control remains an open request.
Pipelines that accept generated audio without listening or file checks: open reports describe placeholder WAV header sizes and inserted or repeated words in a v2 narration setup.
Applications that must read decimals and formatted numbers correctly without preprocessing: open issue 162 shows decimal points being treated as sentence boundaries.
Teams expecting an officially supported GPU server path: the README says the server and Docker image always run on CPU, and quantized models cannot be moved to CUDA.
Users who need a language outside English, French, German, Portuguese, Italian, Spanish, and Czech today: the README describes additional languages only as a possibility.

Setup reality

Our sandbox install succeeded in 39 seconds, pulling 69 packages and occupying 996 MB. The build then succeeded in 6 seconds. Tests failed after 75 seconds: 41 passed, 1 failed, and 1 was skipped out of 42. The failure said soundfile was required for an 8-bit WAV test.

Basic use needs Python 3.10 through 3.14 and PyTorch 2.5 or newer. The first request obtains model assets, while cloned voices need an audio file or exported safetensors state. No hosted credentials are required for the local path.

Linux users must choose the CPU PyTorch index if they want to avoid CUDA wheels. Model and raw voice loading are slow enough that the README recommends keeping both in memory. The HTTP server stays on CPU, and text-controlled pauses are not supported.

A 100M-parameter voice engine aimed at ordinary CPUs

Pocket TTS turns text into streamed speech without sending that text to a hosted service. The 100M-parameter model has a Python API, command-line interface, and local HTTP server. It accepts supplied voices or a permitted audio sample for cloning. The README lists English, French, German, Portuguese, Italian, Spanish, and Czech models, with larger 24-layer choices for some non-English languages. That scope suits private assistants, screen readers, games, and internal tools where a cloud voice API is undesirable.

The project is deliberately small by speech-model standards, although the installed environment is not tiny. Our clean Debian container ended with 69 packages and 996 MB on disk. Kyutai recommends keeping the model and voice state resident because loading both the model and a raw voice prompt takes time. The serve command follows that advice by preserving the loaded model between HTTP requests. For repeated speech, it is a better starting point than launching the CLI for every sentence.

Seven languages are available, while pause control is absent

The current README lists 7 languages and describes streaming output, voice cloning, safetensors exports, and text with no fixed length limit. A supplied voice can be tried directly, while a custom WAV or MP3 becomes a reusable voice state after export. Kyutai also released training code in August 2026, which gives researchers a path to train a model rather than only running published weights. Individual sample licenses still matter, and custom cloning requires consent from the person represented by the recording.

Control is much thinner than the feature list may suggest. The unsupported-features section says users cannot add silence through the input text to create pauses. Emotion tags are still requested in issue 52 rather than documented as a supported interface. A narration pipeline can split clips and insert silence after generation, but that puts pacing and stitching in application code. Developers seeking a directed performance, with controlled emotion and timing, should treat Pocket TTS as a speech engine rather than a finished narration system.

What happened when we ran it

Our sandbox installed Pocket TTS in 39 seconds, adding 69 packages and using 996 MB. The build completed in 6 seconds. That is a workable setup for a local ML tool, though the disk result is worth budgeting on small containers and developer machines. The README now tells Linux users how to select PyTorch's CPU index so the default install does not pull CUDA runtime wheels that a CPU deployment will never use.

The test run ended with exit code 1 after 75 seconds. Pytest reported 41 passed, 1 failed, and 1 skipped out of 42. The failing case, test_audio_read_uses_soundfile_for_8_bit_wav, raised an ImportError saying soundfile is required to read non-WAV or non-16-bit WAV files. The log does not establish why that dependency was unavailable, so the useful finding is narrower: the checked-out commit did not pass its complete suite in our stated fresh environment.

The same log recorded 109 warnings, including a PyTorch notice that torch.ao.quantization is deprecated and scheduled for removal in 2.10. Current synthesis did not fail on that warning. It identifies maintenance work around the quantization path. Pip-audit found 0 known vulnerabilities in the installed Python packages. Those results describe commit 891886a in our 3-CPU, 8 GB sandbox, not every published version or host.

Audio output still needs automated and human checks

Open issue 229 reports that WAV files downloaded from the server can retain placeholder RIFF and data sizes. The reporter found playable audio in tolerant software, while strict readers could interpret the duration incorrectly. Issue 221 describes inserted and repeated words in one long-form v2 narration configuration using exported voice profiles on Apple Silicon. Its author also names several changed variables, so it does not isolate one cause. Together, these reports justify checking file headers, duration, and spoken content before delivery.

Numbers deserve their own regression set. Issue 162 shows examples such as 98.6 and 3.14 being split at the decimal point, and pull request 217 proposes a fix. Until the behavior is confirmed in the version you deploy, test prices, dates, phone numbers, abbreviations, and specialist terms. Speech generation can return a valid audio tensor while saying something different from the source, a failure that an HTTP status or WAV parser will miss.

CPU deployment is supported more clearly than GPU service

Pocket TTS requires Python 3.10 to 3.14 and PyTorch 2.5 or newer. Its default local path does not need an API key. Model files still have to be obtained, and custom configurations may point to a local YAML file, HTTPS URL, or Hugging Face path. A production image should pin those inputs so a restart does not silently pick up different weights or configuration.

GPU use has caveats. The README reports hardware-dependent gains on one cloud setup, but calls the path unofficial. The CLI exposes a device option, while the serve command and Docker image always use CPU. Dynamic int8 quantization is CPU-only, and the optional torchao extra must match the installed PyTorch version. Teams buying GPU capacity for bulk generation should test another server alongside Pocket TTS rather than assuming that moving this small model to CUDA solves throughput.

Active releases do not erase the production caveats

GitHub recorded the last push on August 25, 2026, the same date as v3.0.2. The repository had 9,043 stars and 65 open issues and pull requests when fetched. That combination shows current maintainer and user activity; the combined open count is not a bug count. The latest release added a Czech model to the README, adjusted training details, and changed the default voice behavior for custom configurations.

Pocket TTS is an easy project to justify for a local prototype and a plausible component for a carefully tested application. The 39-second install and mostly passing suite reduce the cost of trying it, while the failed 8-bit WAV test and open correctness reports argue against blind trust. Keep the model warm, use the CPU package path intentionally, pin the assets, and compare generated speech with source text before users depend on it.

Alternatives

ProjectWhat it isPick it when
PiperA small local speech engine with downloadable voices, now in an archived repository.pick this instead when an established offline voice catalog matters more than voice cloning, and an archived codebase is acceptable.
KokoroAn open-weight speech model with a compact inference package and several voice options.pick this instead when you want to compare another small local model and do not need Pocket TTS's training path.
Coqui TTSA broad speech toolkit spanning pretrained models, training, and voice conversion.pick this instead when model variety and training workflows matter more than a narrow CPU-first runtime.

What people are saying

  1. [github-trending] kyutai-labs/pocket-tts

Sources

  1. Pocket TTS repository
  2. Pocket TTS v3.0.2 release
  3. Unsupported pause control
  4. WAV header size report
  5. Decimal splitting report
  6. Exported voice narration report

More ai tools reviews

bkn-foundry · tokenizers · google-research · A2A · awesome-artificial-intelligence · ncnn · the whole board →