Pocket TTS 100M
Native Laufzeit für Apple · PocketTTS
PocketTTS ergänzt speech-swift um native CoreML-Sprachausgabe. Alle Stufen verwenden standardmäßig nur die CPU. Die englische Stimme Alba liefert jeweils 1.920 Samples mit 24 kHz, also 80 ms pro Audioblock.
Die Verarbeitung wartet auf die Zustellung und bietet so Rückstaukontrolle. Jede Anfrage besitzt ihren eigenen Zustand und Startwert. Abbruch, Fehler beim Empfänger und Generierungsgrenzen melden Fehler; bei Erfolg folgt ein leerer Abschlussblock. Dieses Paket unterstützt weder Stimmklonen noch weitere Sprachen.
Laden Sie das veröffentlichte Paket aufklarer/Pocket-TTS-100M-CoreML-INT8 bei der ersten Verwendung herunter oder verwenden Sie einen lokalen Export. Nennen Sie Kyutai, FluidInference und Alba MacKenna gemäß CC BY 4.0.
Verwendung mit Swift und CLI
speech speak "Hello world." --engine pocket --stream \
--pocket-bundle-dir /path/to/bundle --pocket-seed 42 -o hello.wavimport PocketTTS
let model = try PocketTTSModel.fromBundle(URL(fileURLWithPath: "/path/to/bundle"))
try await model.generateStreaming(text: "Hello world.") { chunk in
await consume(chunk.samples)
}HTTP und WebSocket
Verwenden Sie pocket-tts mit der Stimme alba. HTTP-Streaming erfordert PCM; WebSocket sendet Audioblöcke. Die bisherigen Standardmodelle bleiben bestehen.
curl http://localhost:8080/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{"model":"pocket-tts","voice":"alba","input":"Hello world.","response_format":"pcm","stream":true}' \
-o hello.pcmApple-CPU-Messung
Apple M5 Pro · 48 GiB · cpuOnly · first_audio_ms 78.9 · RTF 0.337 · peak_rss 866.8 MiB · n=5 · seed=42 · 2026-10-17
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.
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
| Item | Details |
|---|---|
| Model | soniqo/Pocket-TTS-100M-ONNX-INT8 |
| Release | v1.0.0 · ad5d3fae3fb2f10024583708597afca8337c094c |
| Bundle size | 120.3 MiB |
| Runtime | ONNX Runtime · C++17 · dynamic INT8 + FP32 |
| Output | 24 kHz mono Float32 PCM · 1,920 samples / 80 ms per frame |
| Language / voice | English · 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.
| Metric | Result |
|---|---|
| TTFA p50 / p95 | 127.7 / 133.7 ms |
| Total latency p50 / p95 | 467.5 / 485.3 ms |
| Median RTF | 0.4495 |
| Peak RSS | 373.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.
| Metric | Result |
|---|---|
| Corpus | 46 phrases |
| Exact transcripts | 31 / 46 |
| WER / CER | 8.00% / 3.47% |
| Empty audio / transcript / EOS failures | 0 / 0 / 0 |
Roundtrip-ASR misst Verständlichkeit, nicht Natürlichkeit oder Hörerpräferenz, und ergänzt Hörtests.
Integrationsstatus
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. Dieser Abschnitt beschreibt die ONNX-Version; die native Swift-CoreML-Laufzeit ist oben dokumentiert.
Grenzen und Lizenz
- Nur Englisch; der öffentliche Checkpoint enthält die feste Alba-Stimme und keine beliebige Stimmklonung.
- Modell und Stimme stehen unter CC BY 4.0. Die Alba-MacKenna-Nennung aus dem Manifest muss erhalten bleiben.
- Die rekurrenten Graphen sind CPU-orientiert. Hardwarebeschleunigung ist opt-in, da Android-Provider je nach Gerät und ONNX-Runtime-Build variieren.
- Der speech-core-Quellcode ist Apache 2.0; das Modellpaket behält CC BY 4.0.