Pocket TTS 100M
Motor nativo para Apple · PocketTTS
PocketTTS adiciona síntese nativa CoreML ao speech-swift. Todas as etapas usam apenas CPU por padrão. A voz inglesa Alba transmite blocos de 1.920 amostras a 24 kHz, ou 80 ms por bloco.
A entrega aguardada aplica contrapressão. Cada pedido possui estado e semente próprios. Cancelamento, falhas no receptor e limites de geração produzem erros; o sucesso emite um único bloco final vazio. Este pacote não oferece clonagem de voz nem outros idiomas.
Baixe o pacote publicado aufklarer/Pocket-TTS-100M-CoreML-INT8 no primeiro uso ou carregue uma exportação local. Preserve a atribuição a Kyutai, FluidInference e Alba MacKenna conforme CC BY 4.0.
Uso de Swift e 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 e WebSocket
Use pocket-tts com a voz alba. O fluxo HTTP requer PCM; WebSocket envia blocos de áudio. Os modelos padrão permanecem iguais.
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.pcmMedição de CPU Apple
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 é 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.
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
| 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 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.
| 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 |
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.
| Metric | Result |
|---|---|
| Corpus | 46 phrases |
| Exact transcripts | 31 / 46 |
| WER / CER | 8.00% / 3.47% |
| Empty audio / transcript / EOS failures | 0 / 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
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. Esta seção descreve a versão ONNX; o motor nativo Swift CoreML está documentado acima.
Limites e licença
- Somente inglês; o checkpoint público incorpora a voz Alba fixa e não oferece clonagem arbitrária.
- Modelo e voz usam CC BY 4.0. Mantenha a atribuição a Alba MacKenna do manifesto.
- Os grafos recorrentes são orientados à CPU. A aceleração de hardware é opt-in porque os providers Android variam por aparelho e build do ONNX Runtime.
- O código speech-core usa Apache 2.0; o pacote do modelo mantém CC BY 4.0.