Pocket TTS 100M ONNX INT8

CPU-oriented, streaming ONNX export of Kyutai Pocket TTS, packaged for on-device voice assistants. The 120.3 MiB bundle splits the stateful model into five graphs so a runtime can generate and play one 80 ms audio frame before computing the next one.

This repository deliberately uses Kyutai's public pocket-tts-without-voice-cloning checkpoint and bakes in its alba preset. It is English-only and does not support arbitrary voice cloning.

Files

File Purpose Precision
lm_main.int8.onnx Autoregressive backbone, EOS and recurrent state dynamic MatMul INT8
lm_flow.int8.onnx Four-step flow-matching update dynamic MatMul INT8
decoder.int8.onnx Streaming Mimi latent-to-audio decoder dynamic MatMul INT8
text_conditioner.onnx Token IDs to LM embeddings float32
encoder.onnx Fixed alba voice-state adapter float32
vocab.json, token_scores.json SentencePiece-compatible runtime tables JSON
tokenizer.model Original pinned tokenizer SentencePiece

All audio is mono Float32 PCM at 24 kHz. Each decoder invocation returns 1,920 samples (80 ms). manifest.json records exact source/exporter revisions, opsets, byte sizes and SHA-256 checksums.

Download

huggingface-cli download soniqo/Pocket-TTS-100M-ONNX-INT8 \
  --revision v1.0.0 --local-dir pocket-tts-onnx

speech-core usage

soniqo/speech-core provides a C++17 ONNX Runtime backend that performs true frame interleaving:

#include <speech_core/models/onnx_pocket_tts.h>

speech_core::PocketTtsConfig config;
config.intra_threads = 2;
config.flow_steps = 4;

speech_core::OnnxPocketTts tts("/models/pocket-tts-onnx", config);
tts.synthesize("Hello world.", "en",
    [](const float* samples, size_t count, bool final) {
        // Every non-final callback is one playable 80 ms frame.
    });

The five graphs are also compatible with sherpa-onnx. Its current offline Pocket wrapper buffers the latent sequence before decoder callbacks; use speech-core when first-frame latency is the primary requirement.

Galaxy S23 Ultra results

Measured on a Samsung SM-S918B, Snapdragon 8 Gen 2, Android 16, ONNX Runtime 1.27 CPU, two threads, four flow steps:

Text Warm TTFA p50 / p95 Total p50 / p95 RTF p50 Peak RSS
Hello world. 130 / 136 ms 470 / 488 ms 0.452 376.4 MiB
I can call your contacts, 147 / 151 ms 779 / 796 ms 0.443 376.5 MiB

The native backend emitted exactly one 1,920-sample frame per callback. On Windows, native speech-core and sherpa-onnx using the same ONNX Runtime build produced the same sample count and Float32 waveform hash for the fixed-seed Hello world. test.

Round-trip intelligibility

  • Deployed Parakeet-EOU recognizer: three Pocket seeds, 138 syntheses, 6.79% micro WER, 2.91% CER, 103/138 exact, zero empty output and zero EOS failure.
  • Assistant-response subset: 1.96% WER and 0.06% CER across 60 syntheses.
  • Independent Faster-Whisper Large-v3 pass over all 46 untouched seed-123 device WAVs: 1.43% WER, 0.40% CER and 42/46 exact after standard English normalization. Numbers and technical responses were exact.

Round-trip ASR measures intelligibility, not naturalness or listener preference. Human listening remains the appropriate gate for voice quality and prosody.

Reproducibility

The export recipe is maintained in soniqo/speech-models. It pins:

  • source checkpoint kyutai/pocket-tts-without-voice-cloning at d4fdd22ae8c8e1cb3634e150ebeff1dab2d16df3;
  • ONNX exporter https://github.com/csukuangfj/pocket-tts-onnx-export.git at f075c00bf4bbfbb081a11fd99abbf39df3849e0c;
  • all Python/export dependencies in pyproject.toml.

A clean repack reproduced every non-manifest artifact byte-for-byte and all five graphs passed full ONNX validation.

Limitations

  • English only and fixed alba voice; no arbitrary voice cloning.
  • CPU optimized. NNAPI/QNN execution is not validated for these recurrent graphs.
  • Dates, isolated digit sequences, uncommon proper names and tongue-twisters should be normalized or covered by product-specific regression tests.
  • This model card does not claim a human MOS or preference result.

License and attribution

The model checkpoint is CC BY 4.0. The baked-in voice was performed by Alba MacKenna and is also released under CC BY 4.0; retain that attribution in redistributed bundles and product notices. Voice source: https://huggingface.co/kyutai/tts-voices#alba-mackenna.

Kyutai's implementation and the ONNX exporter code are MIT licensed. See LICENSE, the upstream repositories, and manifest.json for the exact source and artifact provenance.

Downloads last month
22
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for soniqo/Pocket-TTS-100M-ONNX-INT8

Quantized
(3)
this model