Chotu v0.1
A sub-2 MB streaming English voice that starts speaking in 30 ms on a single CPU thread.
Chotu v0.1 is an INT8 ONNX text-to-speech model built for browser runtimes, offline edge devices, and real-time voice agents. It streams 24 kHz audio chunk-by-chunk with persistent state and zero cloud calls.
Highlights
- Under 2 MB: Single INT8 ONNX graph (
paradee_v4_1_int4.onnx, packaged asparadee_v4_1_int4.zip). - 30 ms median TTFA: Emits the first 150 ms audio chunk immediately instead of waiting for full-utterance synthesis.
- 80x real-time on one CPU thread: Runs locally in-browser via
onnxruntime-web(WASM SIMD) or natively via ONNX Runtime. - Continuous-depth decoding: Tunable
num_dec_loopslets callers trade compute for fidelity per request.
Audio Samples
Generated with Chotu v0.1 (24000 Hz, num_dec_loops = 4, speed = 1.0):
| Sample | Text | Audio |
|---|---|---|
| Intro | "Hi, I am Chotu, an under two megabyte voice model streaming right in your browser." | |
| Latency | "With thirty millisecond first audio latency and eighty x real time speed, Chotu speaks on a single CPU thread." | |
| Edge | "Built for offline edge devices and real time voice agents, Chotu runs locally with zero cloud calls." |
Benchmarks & Specs
| Property | Value |
|---|---|
| Footprint | <2 MB (INT8 ONNX) |
| Sample Rate | 24000 Hz (16-bit mono PCM) |
| Median TTFA | 30 ms |
| Throughput | 80x real-time (single CPU thread) |
| Vocab Size | 178 tokens (config.json) |
| License | Apache 2.0 |
Streaming Timeline & Decoder Loop
Architecture
Chotu v0.1 runs as a single stateful ONNX graph across sliding token windows (64 active tokens with past context and lookahead), carrying KV, F0, ConvNeXt, and harmonic phase state between steps.
Streaming ONNX I/O
Inputs (12)
| Tensor | Type | Shape | Description |
|---|---|---|---|
input_ids |
int64 |
[1, T_win] |
Windowed token IDs from config.json |
speed |
float32 |
[1] |
Speaking rate (1.0 = normal) |
num_dec_loops |
int64 |
[1] |
Decoder refinement loops |
tok_start |
int64 |
[1] |
Active window start token index |
tok_end |
int64 |
[1] |
Active window end token index |
frame_start |
int64 |
[1] |
Chunk start frame index |
frame_end |
int64 |
[1] |
Chunk end frame index |
kv1_cache_in |
float32 |
[2, 1, 2, W_past, 32] |
Encoder KV state 1 |
kv2_cache_in |
float32 |
[2, 2, 1, 2, W_past, 32] |
Encoder KV state 2 |
conv_cache_in |
float32 |
[36, 1, 4, 256] |
Causal ConvNeXt decoder state |
f0_prev2_in |
float32 |
[1, 4] |
Recent F0 history |
c0_in |
float32 |
[1] |
Harmonic phase state |
Outputs (7)
| Tensor | Type | Shape | Description |
|---|---|---|---|
waveform |
float32 |
[samples] |
24 kHz PCM audio chunk |
f0_hz |
float32 |
[frames] |
Predicted F0 contour |
dur_frames |
int64 |
[T_act] |
Predicted frame durations per token |
kv1_cache_out |
float32 |
[2, 1, 2, W_out, 32] |
Updated KV state 1 |
kv2_cache_out |
float32 |
[2, 2, 1, 2, W_out, 32] |
Updated KV state 2 |
conv_cache_out |
float32 |
[36, 1, 5, 256] |
Updated ConvNeXt state |
c_subframes |
float32 |
[subframes] |
Phase state for next chunk |
Usage
Coming soon.
Credits
Chotu v0.1 builds on Paradee-8M-v1.0 and Kokoro-82M.
- Downloads last month
- -



