Pocket TTS 100M
Pocket TTS 100M speech-core का कम-विलंब, ऑन-डिवाइस अंग्रेज़ी टेक्स्ट-टू-स्पीच बैकएंड है। सार्वजनिक ONNX बंडल निश्चित Alba आवाज़ इस्तेमाल करता है और हर ध्वनिक फ्रेम तैयार होते ही ऑडियो स्ट्रीम करता है।
इन्फ़रेंस वास्तव में इंटरलीव्ड है: एक autoregressive latent को decode और emit करने के बाद अगला बनाया जाता है। हर non-final callback 1,920 Float32 samples — 24 kHz पर 80 ms — देता है और buffered TTS graph की स्थिर प्रतीक्षा से बचता है।
प्रकाशित बंडल
| 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 |
डाउनलोड और सत्यापन
speech-core downloader v1.0.0 को pin करता है और हर प्रकाशित फ़ाइल को 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.
});
स्ट्रीमिंग अनुबंध
callback को एक बार में 80 ms का frame मिलता है; final callback stream का अंत बताता है। last_metrics() conditioning, first-audio और total latency, frame/sample counts, EOS, cancellation और effective seed देता है। cancel() सक्रिय synthesis रोकता है।
Galaxy S23 Ultra बेंचमार्क
सार्वजनिक v1.0.0 बंडल का नया परीक्षण ONNX Runtime 1.27, दो CPU threads और Galaxy S23 Ultra पर हुआ। ये सीधे engine माप हैं, UI या पूरी 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 |
राउंड-ट्रिप स्पष्टता
डिवाइस परीक्षण ने 46 command और assistant वाक्य synthesize किए, production 24→16 kHz resampler से गुज़ारे और deployed Parakeet-EOU से transcribe किए।
| Metric | Result |
|---|---|
| Corpus | 46 phrases |
| Exact transcripts | 31 / 46 |
| WER / CER | 8.00% / 3.47% |
| Empty audio / transcript / EOS failures | 0 / 0 / 0 |
राउंड-ट्रिप ASR समझ आने की क्षमता मापता है, स्वाभाविकता या श्रोता पसंद नहीं; यह listening tests का पूरक है।
इंटीग्रेशन स्थिति
C++17 ONNX backend speech-core में merge है और Windows, Linux तथा Android के लिए build होता है। मौजूदा speech-android SDK/JNI अभी भी Kokoro को default चुनता है; Kotlin model selection, download wiring और SDK exposure आगे का काम है। Apple/CoreML backend शामिल नहीं है।
सीमाएँ और लाइसेंस
- केवल अंग्रेज़ी; सार्वजनिक checkpoint में निश्चित Alba आवाज़ है और arbitrary voice cloning नहीं है।
- मॉडल और आवाज़ CC BY 4.0 हैं। बंडल manifest में Alba MacKenna attribution बनाए रखें।
- recurrent graphs CPU के लिए हैं। Android provider support डिवाइस और ONNX Runtime build के अनुसार बदलता है, इसलिए hardware acceleration opt-in है।
- speech-core source Apache 2.0 है; model bundle की CC BY 4.0 शर्तें अलग रहती हैं।