Pocket TTS 100M

Pocket TTS 100M is the low-latency, on-device English text-to-speech backend in speech-core. The public ONNX bundle uses the fixed Alba voice and streams audio as soon as each acoustic frame is ready.

Streaming first audio

Inference is genuinely interleaved: one autoregressive latent is decoded and emitted before generation of the next latent. Each non-final callback carries 1,920 Float32 samples — 80 ms at 24 kHz — avoiding the fixed full-graph floor of buffered TTS exports.

Published bundle

ItemDetails
Modelsoniqo/Pocket-TTS-100M-ONNX-INT8
Releasev1.0.0 · ad5d3fae3fb2f10024583708597afca8337c094c
Bundle size120.3 MiB
RuntimeONNX Runtime · C++17 · dynamic INT8 + FP32
Output24 kHz mono Float32 PCM · 1,920 samples / 80 ms per frame
Language / voiceEnglish · fixed Alba voice

Download and verify

The speech-core downloader pins v1.0.0 and verifies every published file by SHA-256.

bash scripts/download_pocket_tts_onnx.sh /models/pocket-tts-onnx

C++ API

#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 length, bool is_final) {
        // Each non-final callback is 1,920 Float32 samples:
        // 80 ms at 24 kHz.
    });

Streaming contract

The callback receives one 80 ms frame at a time; the final callback marks end of stream. last_metrics() reports conditioning, first-audio and total latency, frame and sample counts, EOS state, cancellation, and the effective seed. cancel() stops an active synthesis.

Galaxy S23 Ultra benchmark

A clean rerun of the public v1.0.0 bundle used ONNX Runtime 1.27, two CPU threads, and a Galaxy S23 Ultra. These are direct engine measurements, not UI or complete voice-pipeline timings.

MetricResult
TTFA p50 / p95127.7 / 133.7 ms
Total latency p50 / p95467.5 / 485.3 ms
Median RTF0.4495
Peak RSS373.7 MiB

Round-trip intelligibility

The device gate synthesized 46 command and assistant phrases, resampled the audio through the production 24-to-16 kHz path, and transcribed it with the deployed Parakeet-EOU recognizer.

MetricResult
Corpus46 phrases
Exact transcripts31 / 46
WER / CER8.00% / 3.47%
Empty audio / transcript / EOS failures0 / 0 / 0

Round-trip ASR measures intelligibility, not naturalness or listener preference; it complements listening tests.

Integration status

What is available today

The C++17 ONNX backend is merged in speech-core and builds for Windows, Linux, and Android. The current speech-android SDK/JNI path still selects Kokoro by default; Kotlin model selection, download wiring, and SDK exposure are follow-up work. This release does not include an Apple/CoreML backend.

Limits and license

Sources