Pocket TTS 100M

Pocket TTS 100M é o backend de texto para fala em inglês, local e de baixa latência do speech-core. O pacote ONNX público usa a voz Alba fixa e transmite o áudio assim que cada frame acústico fica pronto.

Primeiro áudio em streaming

A inferência é realmente intercalada: cada latente autorregressivo é decodificado e emitido antes da geração do próximo. Cada callback não final entrega 1.920 amostras Float32 — 80 ms a 24 kHz — evitando o piso fixo de grafos TTS com buffer.

Pacote publicado

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 e verificação

O downloader do speech-core fixa v1.0.0 e verifica cada arquivo publicado com SHA-256.

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

API C++

#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.
    });

Contrato de streaming

O callback recebe um frame de 80 ms por vez; o callback final marca o fim do stream. last_metrics() informa condicionamento, primeiro áudio e latência total, frames, amostras, EOS, cancelamento e seed efetiva. cancel() interrompe uma síntese ativa.

Benchmark no Galaxy S23 Ultra

Uma nova execução limpa do pacote público v1.0.0 usou ONNX Runtime 1.27, duas threads de CPU e um Galaxy S23 Ultra. São medições diretas do motor, sem UI ou pipeline de voz completo.

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

Inteligibilidade de ida e volta

O teste no aparelho sintetizou 46 frases de comando e resposta, passou pelo resampler de produção de 24→16 kHz e transcreveu com o Parakeet-EOU implantado.

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

ASR de ida e volta mede inteligibilidade, não naturalidade nem preferência do ouvinte; complementa testes de escuta.

Estado da integração

Disponível hoje

O backend ONNX C++17 está incorporado ao speech-core e compila para Windows, Linux e Android. O caminho SDK/JNI atual do speech-android ainda seleciona Kokoro por padrão; seleção Kotlin, download e exposição no SDK são trabalho futuro. Não há backend Apple/CoreML nesta versão.

Limites e licença

Fontes