soprano / README.md
eugenehp's picture
Upload README.md with huggingface_hub
4b57eab verified
|
Raw
History Blame Contribute Delete
4.22 kB
---
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/<id>`).
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`.