--- license: cc-by-4.0 base_model: kyutai/pocket-tts tags: - text-to-speech - tts - onnx - onnxruntime-web - wasm - serverless - content-addressed - hologram - kappa --- # q-pocket-tts — Pocket TTS as a κ-object (real-time voice, in your browser, no server) **TTS by [Kyutai](https://huggingface.co/kyutai/pocket-tts).** A 100M-parameter CPU text-to-speech model, re-hosted as a **content-addressed κ-object** for the [Hologram](https://github.com/Hologram-Technologies) serverless substrate so the Bonsai demo can **speak its answers as it writes them** — 100% in the browser, on the CPU, leaving the GPU to the mind. This is the **int8 ONNX decode graph** (community export by [KevinAHM](https://huggingface.co/KevinAHM/pocket-tts-onnx)) plus **one voice** (`alba`, Kyutai's default), run with **onnxruntime-web 1.20.0** (WASM/SIMD). No account, no data leaves the device; warm after one visit. ## What's here Each file is gzipped and stored as a content-addressed block `b/sha256_.gz`; the manifest lists them. Every block is verified against its content address **before** it is decompressed (Law L5). | role | file | what it is | |---|---|---| | `flow_lm_main` | flow_lm_main_int8.onnx | the streaming flow-LM backbone (autoregressive latents) | | `flow_lm_flow` | flow_lm_flow_int8.onnx | the stateless flow-matching step | | `text_conditioner` | text_conditioner_int8.onnx | text → conditioning embeddings | | `mimi_decoder` | mimi_decoder_int8.onnx | Mimi codec decoder → 24 kHz PCM | | `tokenizer` | tokenizer.model | SentencePiece tokenizer | | `bos_before_voice` | bos_before_voice.npy | BOS conditioning prefix | | `bundle` | bundle.json | runtime metadata (state manifests, sample rate) | | `voice` | voice.alba.bin | ONE voice state (PTVB1, single voice) — extracted from the 8-voice `voices.bin` | `manifest.json` (sha256 transport axis) + `manifest.blake3.json` + `sha256-to-blake3.map.json` (canonical BLAKE3 κ axis). Any static host can serve this — the bytes carry identity, not the host. ## Pins - manifest κ (pin): `did:holo:sha256:fb8d982d3a37f845915358928f985b83339dd198b45b6f6a705bdc8145b1afd7` - root κ (over the sorted block set): `sha256:a4c11cfbef09c5b30dc97733c11ec21e2573c3adc467fcf4409c06b44d6f41d4` - voice: `alba` · language `english_2026-04` · 24 kHz · latent dim 32 ## Payload 131.7 MB raw → **75.7 MB stored (gzip)**, 8 blocks. Decode graph only — the voice-cloning encoder is omitted (a non-goal). One voice ships; swapping the voice is a one-file re-mint. ## Measured (browser, 2026-07-16) Chrome / WASM-SIMD, 24-core desktop: first sound **332 ms** on a short clause single-threaded (1.07× realtime); 313 ms and 1.39× with threads (cross-origin isolation). Real speech, 24 kHz. Running concurrently with Bonsai-8B on WebGPU costs ~20% of decode throughput (CPU-orchestration, not GPU contention) — still real-time. ## Provenance - Model + voices: **Kyutai Pocket TTS** — `kyutai/pocket-tts` (weights **CC-BY-4.0**), voices from `kyutai/tts-voices`. - ONNX export: **`KevinAHM/pocket-tts-onnx`** (export scripts **Apache-2.0**); upstream Pocket TTS code is **MIT**. - Runtime worker: adapted from the `KevinAHM/pocket-tts-web` demo space. - κ-mint: `holo-bonsai/mint-pocket-tts.mjs` (gzip each opaque blob → `sha256(gz)` = block address; root = sha256 over the sorted `name:kappa` set) + `forge/gen-blake3-manifest.mjs` (BLAKE3 axis). No tensor re-layout — the ONNX graphs pass through byte-exact. See `LICENSE` (CC-BY-4.0) and `NOTICE.txt`.