Pocket TTS 100M

Pocket TTS 100M ist das latenzarme, lokale englische TTS-Backend in speech-core. Das öffentliche ONNX-Paket nutzt die feste Alba-Stimme und streamt Audio, sobald der jeweilige Akustik-Frame bereit ist.

Erstes Audio im Stream

Die Inferenz ist tatsächlich verschachtelt: Ein autoregressiver Latent-Frame wird dekodiert und ausgegeben, bevor der nächste entsteht. Jeder nicht finale Callback liefert 1.920 Float32-Samples — 80 ms bei 24 kHz — und umgeht damit die feste Wartezeit gepufferter TTS-Graphen.

Veröffentlichtes Paket

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 und Prüfung

Der speech-core-Downloader ist auf v1.0.0 festgelegt und prüft jede veröffentlichte Datei mit 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-Vertrag

Der Callback erhält jeweils einen 80-ms-Frame; der finale Callback markiert das Streamende. last_metrics() meldet Konditionierung, erste Audio- und Gesamtlatenz, Frame-/Samplezahl, EOS, Abbruch und den verwendeten Seed. cancel() stoppt eine aktive Synthese.

Galaxy-S23-Ultra-Benchmark

Ein sauberer Wiederholungstest des öffentlichen Pakets v1.0.0 lief mit ONNX Runtime 1.27, zwei CPU-Threads und einem Galaxy S23 Ultra. Es sind direkte Engine-Werte ohne UI oder vollständige Voice-Pipeline.

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

Roundtrip-Verständlichkeit

Der Gerätetest synthetisierte 46 Befehls- und Antwortsätze, leitete sie durch den produktiven 24→16-kHz-Resampler und transkribierte sie mit dem eingesetzten Parakeet-EOU.

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

Roundtrip-ASR misst Verständlichkeit, nicht Natürlichkeit oder Hörerpräferenz, und ergänzt Hörtests.

Integrationsstatus

Heute verfügbar

Das C++17-ONNX-Backend ist in speech-core gemergt und für Windows, Linux und Android baubar. Der aktuelle speech-android-SDK/JNI-Pfad wählt weiterhin standardmäßig Kokoro; Kotlin-Modellauswahl, Download und SDK-Freigabe folgen später. Ein Apple/CoreML-Backend ist nicht enthalten.

Grenzen und Lizenz

Quellen