Pocket TTS 100M

Pocket TTS 100M은 speech-core의 저지연 온디바이스 영어 TTS 백엔드입니다. 공개 ONNX 번들은 고정 Alba 음성을 사용하며 각 음향 프레임이 준비되는 즉시 오디오를 스트리밍합니다.

첫 오디오 스트리밍

추론은 실제로 인터리빙됩니다. 자기회귀 잠재 프레임 하나를 디코딩해 내보낸 뒤 다음 프레임을 생성합니다. 각 비최종 콜백은 Float32 샘플 1,920개, 즉 24kHz에서 80ms를 전달하여 버퍼형 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.
    });

스트리밍 계약

콜백은 80ms 프레임을 하나씩 받고 최종 콜백이 스트림 종료를 표시합니다. last_metrics()는 컨디셔닝, 첫 오디오 및 전체 지연, 프레임/샘플 수, EOS, 취소, 실제 시드를 보고하며 cancel()은 진행 중인 합성을 중지합니다.

Galaxy S23 Ultra 벤치마크

공개 v1.0.0 번들을 ONNX Runtime 1.27, CPU 스레드 2개, 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→16kHz 리샘플링 경로를 거쳐 배포된 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용으로 빌드됩니다. 현재 speech-android SDK/JNI 경로는 여전히 Kokoro를 기본 선택합니다. Kotlin 모델 선택, 다운로드 연결, SDK 공개는 후속 작업이며 Apple/CoreML 백엔드는 포함되지 않습니다.

제한 및 라이선스

출처