Pocket TTS 100M
รันไทม์แบบเนทีฟสำหรับ Apple · PocketTTS
PocketTTS เพิ่มการสังเคราะห์เสียง CoreML แบบเนทีฟให้ speech-swift ทุกขั้นตอนใช้ CPU เท่านั้นโดยค่าเริ่มต้น เสียง Alba ภาษาอังกฤษส่งเฟรมขนาด 1,920 ตัวอย่างที่ 24 kHz หรือ 80 มิลลิวินาทีต่อเฟรม
การรอส่งข้อมูลช่วยควบคุมแรงดันย้อนกลับ แต่ละคำขอมีสถานะและค่า seed ของตนเอง การยกเลิก ข้อผิดพลาดของผู้รับ และขีดจำกัดการสร้างจะรายงานข้อผิดพลาด เมื่อสำเร็จจะส่งชังก์สุดท้ายที่ว่างหนึ่งชังก์ ชุดนี้ไม่รองรับการโคลนเสียงหรือภาษาอื่น
ดาวน์โหลดแพ็กเกจที่เผยแพร่แล้ว aufklarer/Pocket-TTS-100M-CoreML-INT8 เมื่อใช้ครั้งแรก หรือโหลดชุดส่งออกในเครื่อง โปรดคงการระบุที่มาของ Kyutai, FluidInference และ Alba MacKenna ตาม CC BY 4.0
การใช้ Swift และ 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 และ WebSocket
ใช้ pocket-tts กับเสียง alba การสตรีม HTTP ต้องใช้ PCM ส่วน WebSocket ส่งชิ้นส่วนเสียง โมเดลเริ่มต้นเดิมยังคงเดิม
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.pcmการวัด 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 คือแบ็กเอนด์แปลงข้อความภาษาอังกฤษเป็นเสียงที่หน่วงต่ำและทำงานบนอุปกรณ์ใน speech-core แพ็กเกจ ONNX สาธารณะใช้เสียง Alba แบบคงที่และสตรีมเสียงทันทีที่แต่ละเฟรมพร้อม
การอนุมานสลับกันจริง: latent แบบ autoregressive หนึ่งเฟรมถูกถอดรหัสและส่งออกก่อนสร้างเฟรมถัดไป แต่ละ callback ที่ยังไม่สิ้นสุดส่งตัวอย่าง Float32 จำนวน 1,920 ตัว หรือ 80 ms ที่ 24 kHz จึงไม่ติดค่าหน่วงคงที่ของกราฟ TTS แบบบัฟเฟอร์
แพ็กเกจที่เผยแพร่
| 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 ปักหมุด 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 ms ทีละเฟรม และ callback สุดท้ายระบุจบสตรีม last_metrics() รายงาน conditioning, เวลาเสียงแรกและเวลารวม, จำนวนเฟรม/ตัวอย่าง, EOS, การยกเลิก และ seed ที่ใช้ ส่วน cancel() หยุดการสังเคราะห์ที่กำลังทำงาน
เบนช์มาร์ก Galaxy S23 Ultra
การทดสอบใหม่ของแพ็กเกจสาธารณะ v1.0.0 ใช้ ONNX Runtime 1.27, CPU สองเธรด และ Galaxy S23 Ultra ค่านี้วัดจากเอนจินโดยตรง ไม่รวม UI หรือไปป์ไลน์เสียงทั้งระบบ
| 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 ประโยค ผ่านตัว resample 24→16 kHz สำหรับ production แล้วถอดเสียงด้วย Parakeet-EOU ที่ใช้งานจริง
| Metric | Result |
|---|---|
| Corpus | 46 phrases |
| Exact transcripts | 31 / 46 |
| WER / CER | 8.00% / 3.47% |
| Empty audio / transcript / EOS failures | 0 / 0 / 0 |
ASR แบบไป-กลับวัดความเข้าใจได้ ไม่ได้วัดความเป็นธรรมชาติหรือความชอบของผู้ฟัง และใช้เสริมการทดสอบฟัง
สถานะการผสานรวม
แบ็กเอนด์ ONNX C++17 ถูกรวมใน speech-core และ build สำหรับ Windows, Linux และ Android แล้ว SDK/JNI ของ speech-android ปัจจุบันยังเลือก Kokoro เป็นค่าเริ่มต้น ส่วนการเลือกโมเดลใน Kotlin การดาวน์โหลด และ API ของ SDK เป็นงานถัดไป ส่วนนี้อธิบายรุ่น ONNX ส่วนรันไทม์ Swift CoreML แบบเนทีฟมีคำอธิบายอยู่ด้านบน
ข้อจำกัดและใบอนุญาต
- รองรับภาษาอังกฤษเท่านั้น checkpoint สาธารณะมีเสียง Alba แบบคงที่และไม่รองรับการโคลนเสียงทั่วไป
- โมเดลและเสียงใช้ CC BY 4.0 ต้องคงเครดิต Alba MacKenna ใน manifest ของแพ็กเกจ
- กราฟแบบวนซ้ำเน้น CPU การเร่งฮาร์ดแวร์เป็นตัวเลือกเพราะ provider ของ Android ต่างกันตามอุปกรณ์และ build ของ ONNX Runtime
- ซอร์ส speech-core ใช้ Apache 2.0 ส่วนแพ็กเกจโมเดลคงเงื่อนไข CC BY 4.0