--- license: apache-2.0 pipeline_tag: text-to-speech library_name: rlx tags: - soprano - rlxp - tts - rlx --- # Soprano 1.1 (RLX) Single runnable `soprano.rlxp`: nested native backbone + Vocos packs (no ONNX on Hub). | Field | Value | |---|---| | **Hub id** | [`eugenehp/soprano`](https://huggingface.co/eugenehp/soprano) | | **Kind** | RLX-native weight bundle (graphs + sidecars ready for `rlx-*` crates). | | **RLX crate** | [`rlx-soprano`](https://github.com/MIT-RLX/rlx-models/tree/main/crates/rlx-soprano) | | **Upstream** | https://huggingface.co/KevinAHM/soprano-1.1-onnx | ## Quick start ```bash just fetch-soprano # or: hf download eugenehp/soprano soprano.rlxp --local-dir weights/tts/soprano just fetch-soprano && just soprano-demo ``` ## Primary files (use these) - `soprano.rlxp` — 244.9 MiB ## Contents Hub ships `soprano.rlxp` only (nested `graphs/*.rlxp` + tokenizer). Pack locally with `just export-soprano-rlxp`. CPU / Metal / MLX / CUDA / wgpu. ## Pack layout (`.rlxp`) Outer RLXPFLAT with nested native subgraph packs for the Qwen3-style KV backbone and Vocos decoder. **No `.onnx` on Hub.** Official RLX package format (`RLXPFLAT`, container v2). ```text [0..8) magic RLXPFLAT [8..12) version u32 LE (= 2) [12..16) flags u32 LE (hybrid hot/warm/cold) [16..24) toc_len u64 LE [24..) TOC JSON table of contents data region 64-byte aligned payloads ``` The TOC lists **tensors** (named weight blobs) and/or **sidecars** (files: ONNX, tokenizers, manifests, …). Sidecars are usually **cold + zstd**; model weights in tensor packs are **hot + uncompressed** for mmap. Runtime crates open the pack directly (or materialize sidecars to a temp dir for asset-only packs). ### This pack | Field | Value | |---|---| | **File** | `soprano.rlxp` (244.9 MiB) | | **Manifest name** | `soprano` | | **Producer** | `rlx-assets` | | **Container** | RLXPFLAT v2, flags=0x1 | | **Tensors** | 0 | | **Sidecars** | 10 | ### Sidecars (file assets) Neural weights live inside nested `graphs/*.rlxp` (hot mmap). Paths below are logical ids inside the pack (`__flat__/sidecar/`). Cold sidecars are zstd-compressed; sizes show raw → stored. | Sidecar | Raw | Stored | Role | |---|---:|---:|---| | `.gitattributes` | 695 B | 136 B | | | `LICENSE` | 11.1 KiB | 4.0 KiB | | | `README.md` | 3.5 KiB | 1.7 KiB | | | `config.json` | 1.1 KiB | 426 B | | | `generation_config.json` | 111 B | 95 B | | | `graphs/soprano_backbone_kv_fp32.rlxp` | 304.4 MiB | 137.6 MiB | Nested backbone pack | | `graphs/soprano_decoder_fp32.rlxp` | 115.8 MiB | 107.2 MiB | Nested Vocos pack | | `special_tokens_map.json` | 142 B | 104 B | | | `tokenizer.json` | 1.6 MiB | 31.8 KiB | Text tokenizer | | `tokenizer_config.json` | 1.3 MiB | 18.2 KiB | | ### Architecture **Pipeline:** text → tokenizer → AR backbone (KV cache) → Vocos decoder → 32 kHz mono. | Module | Role | Dims | dtype | |---|---|---|---| | `soprano_backbone_kv_fp32` | 17-layer AR LM + KV | hidden 512, head_dim 128, vocab 8192 | f32 | | `soprano_decoder_fp32` | Vocos vocoder | TOKEN_SIZE 2048 | f32 | | `tokenizer.json` | text tokenizer | — | — | ### Logical tree ```text soprano.rlxp ├── graphs/ │ ├── soprano_backbone_kv_fp32.rlxp │ └── soprano_decoder_fp32.rlxp └── tokenizer.json (+ HF tokenizer sidecars) ``` ### How it is packed `just export-soprano-rlxp` — pack-time ONNX → nested `graphs/*.rlxp`. Hub has zero ONNX. ## Note Hub ships `.rlxp` only — **no ONNX**. Nested packs hold hot tensors + graph.json; runtime lowers per KV/seq bucket. ## Run with RLX Clone [rlx-models](https://github.com/MIT-RLX/rlx-models), place this repo under `weights/tts/soprano` (or pass the path explicitly), then: ```bash just fetch-soprano && just soprano-demo ``` ## License Apache License 2.0 — see `LICENSE`. Inherit upstream terms when redistributing. Original weights and authorship: https://huggingface.co/KevinAHM/soprano-1.1-onnx ## Maintenance Cards and LFS attrs are regenerated from the local `weights/` tree in [rlx-models](https://github.com/MIT-RLX/rlx-models) via `python3 scripts/prepare_weights_hf.py`.