Pocket TTS 100M

Pocket TTS 100M — низколатентный локальный движок английского синтеза речи в speech-core. Публичный ONNX-пакет использует фиксированный голос Alba и передаёт аудио сразу после готовности каждого акустического кадра.

Потоковая выдача первого аудио

Инференс действительно чередуется: один авторегрессионный латент декодируется и выдаётся до генерации следующего. Каждый не финальный callback содержит 1 920 Float32-сэмплов — 80 мс при 24 кГц — без фиксированной задержки буферизованных TTS-графов.

Опубликованный пакет

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

Загрузка и проверка

Загрузчик speech-core фиксирует v1.0.0 и проверяет каждый файл по 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 мс; финальный callback отмечает конец потока. last_metrics() сообщает время подготовки, первого аудио и полной генерации, число кадров/сэмплов, EOS, отмену и использованный seed. cancel() останавливает активный синтез.

Тест Galaxy S23 Ultra

Чистый повторный тест публичного пакета v1.0.0 проведён с ONNX Runtime 1.27, двумя CPU-потоками и Galaxy S23 Ultra. Это прямые измерения движка без UI и полного голосового конвейера.

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

Разборчивость при обратном распознавании

На устройстве синтезированы 46 команд и ответов, обработаны производственным ресэмплером 24→16 кГц и распознаны развёрнутым Parakeet-EOU.

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

Обратное ASR измеряет разборчивость, а не естественность или предпочтение слушателя, и дополняет прослушивание.

Состояние интеграции

Что доступно сейчас

C++17 ONNX-бэкенд уже в speech-core и собирается для Windows, Linux и Android. Текущий SDK/JNI speech-android по умолчанию выбирает Kokoro; выбор модели в Kotlin, загрузка и API SDK остаются следующей задачей. Apple/CoreML-бэкенда в релизе нет.

Ограничения и лицензия

Источники