File size: 4,217 Bytes
970612e
 
 
 
 
 
7f9b7b7
970612e
 
 
 
034c494
970612e
be86cc8
970612e
474b11a
 
 
 
 
 
970612e
474b11a
970612e
474b11a
4b57eab
474b11a
 
 
 
970612e
7f9b7b7
970612e
 
 
4b57eab
474b11a
242b296
 
be86cc8
242b296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
be86cc8
242b296
 
 
be86cc8
242b296
 
 
 
 
 
be86cc8
 
 
 
 
 
 
 
242b296
be86cc8
 
 
 
 
 
 
 
 
 
 
242b296
 
 
 
 
be86cc8
 
 
 
242b296
 
 
 
be86cc8
242b296
474b11a
 
be86cc8
970612e
 
 
474b11a
970612e
 
474b11a
970612e
 
 
 
 
 
 
 
474b11a
970612e
474b11a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
---
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`.