MeloTTS/VITS2 English nested .rlxp subgraphs + frontend for RLX TinyTTS and MeloTTS. CPU / Metal / MLX / CUDA / wgpu.
| Field | Value |
|---|---|
| Hub id | eugenehp/tiny-tts-rlx |
| Kind | RLX-native weight bundle (graphs + sidecars ready for rlx-* crates). |
| RLX crate | rlx-tiny-tts |
| Upstream | https://github.com/tronghieuit/tiny-tts |
just fetch-tiny-tts # or: hf download eugenehp/tiny-tts-rlx tiny-tts.rlxp --local-dir weights/tts/tiny-tts-rlx
just fetch-tiny-tts && cargo run -p rlx-tiny-tts --release --features apple-silicon -- --data weights/tts/tiny-tts-rlx --text "Hi." --device metal --out /tmp/tiny.wav
tiny-tts.rlxp — 29.4 MiBHub ships tiny-tts.rlxp only (nested graph packs + frontend). Also used by rlx-melotts / just fetch-melotts. Runtime does not load .onnx from Hub.
.rlxp)Outer RLXPFLAT bundle: nested native subgraph packs under graphs/ (hot weight tensors + graph IR sidecars) plus English frontend assets. No .onnx on Hub. rlx-tiny-tts materializes the outer pack, then lowers each nested pack to HIR for the utterance length.
Official RLX package format (RLXPFLAT, container v2).
[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).
| Field | Value |
|---|---|
| File | tiny-tts.rlxp (29.4 MiB) |
| Manifest name | tiny-tts |
| Producer | rlx-assets |
| Container | RLXPFLAT v2, flags=0x1 |
| Tensors | 0 |
| Sidecars | 16 |
Outer TOC is file sidecars only. Neural weights live inside each graphs/<name>.rlxp as hot mmap tensors (not safetensors).
Paths below are logical ids inside the pack (__flat__/sidecar/<id>).
Cold sidecars are zstd-compressed; sizes show raw → stored.
| Sidecar | Raw | Stored | Role |
|---|---|---|---|
config.json | 325 B | 220 B | Model / sample-rate config (44.1 kHz) |
frontend/bert/tokenizer.json | 694.7 KiB | 214.5 KiB | BERT WordPiece tokenizer |
frontend/bert/tokenizer_config.json | 351 B | 218 B | Tokenizer config |
frontend/cmudict_rep.txt | 3.9 MiB | 1.0 MiB | CMUdict repair / variants |
frontend/g2p_checkpoint.safetensors | 3.2 MiB | 3.0 MiB | G2P checkpoint |
frontend/g2p_cmudict.txt | 3.3 MiB | 995.6 KiB | CMUdict for G2P |
frontend/homographs.en | 18.3 KiB | 5.0 KiB | Homograph list |
frontend/perceptron_tagger.json | 5.4 MiB | 1.5 MiB | POS tagger |
frontend/symbols.json | 2.1 KiB | 726 B | Symbol table |
graphs/decoder.rlxp | 13.7 MiB | 12.5 MiB | Nested pack: hot tensors + graph.json |
graphs/duration_predictor.rlxp | 1.0 MiB | 598.8 KiB | Nested pack: hot tensors + graph.json |
graphs/flow.rlxp | 13.7 MiB | 8.0 MiB | Nested pack: hot tensors + graph.json |
graphs/text_encoder.rlxp | 2.9 MiB | 1.7 MiB | Nested pack: hot tensors + graph.json |
Pipeline: text → English frontend (G2P) → text_encoder → duration_predictor → monotonic alignment + latent sample (Rust) → flow → decoder → 44.1 kHz mono WAV.
| Module | Role | Typical dtype | Notes |
|---|---|---|---|
text_encoder | phone/tone/lang → latent | f32 | length = phoneme count T |
duration_predictor | per-phone duration | f32 | |
flow | prior / flow | f32 | |
decoder | HiFi-GAN-style vocoder | f32 | ConvTranspose upsample ×512 |
| frontend | G2P + BERT tokenizer + CMUdict | — | file sidecars |
tiny-tts.rlxp
├── graphs/
│ ├── text_encoder.rlxp # hot f32/i64 + graph.json
│ ├── duration_predictor.rlxp
│ ├── flow.rlxp
│ └── decoder.rlxp
├── config.json
└── frontend/ # G2P / tokenizer (not neural)
just export-tiny-tts-rlxp / pack_rlxp example: ONNX pack-time source → nested graphs/*.rlxp via rlx-assets native-pack, then outer bundle. Hub artifact has zero .onnx.
MeloTTS (rlx-melotts) loads this same bundle — locally weights/tts/melotts is a symlink.
Hub ships no ONNX. Nested graphs/*.rlxp hold hot f32/i64 tensors + graph.json; the crate lowers to HIR per utterance length.
Clone rlx-models, place this repo under weights/tts/tiny-tts-rlx (or pass the path explicitly), then:
just fetch-tiny-tts && cargo run -p rlx-tiny-tts --release --features apple-silicon -- --data weights/tts/tiny-tts-rlx --text "Hi." --device metal --out /tmp/tiny.wav
MIT — see LICENSE. Inherit upstream terms when redistributing.
Original weights and authorship: https://github.com/tronghieuit/tiny-tts
Cards and LFS attrs are regenerated from the local weights/ tree in rlx-models via python3 scripts/prepare_weights_hf.py.
20 commits
MeloTTS/VITS2 English nested .rlxp subgraphs + frontend for RLX TinyTTS and MeloTTS. CPU / Metal / MLX / CUDA / wgpu.
| Field | Value |
|---|---|
| Hub id | eugenehp/tiny-tts-rlx |
| Kind | RLX-native weight bundle (graphs + sidecars ready for rlx-* crates). |
| RLX crate | rlx-tiny-tts |
| Upstream | https://github.com/tronghieuit/tiny-tts |
just fetch-tiny-tts # or: hf download eugenehp/tiny-tts-rlx tiny-tts.rlxp --local-dir weights/tts/tiny-tts-rlx
just fetch-tiny-tts && cargo run -p rlx-tiny-tts --release --features apple-silicon -- --data weights/tts/tiny-tts-rlx --text "Hi." --device metal --out /tmp/tiny.wav
tiny-tts.rlxp — 29.4 MiBHub ships tiny-tts.rlxp only (nested graph packs + frontend). Also used by rlx-melotts / just fetch-melotts. Runtime does not load .onnx from Hub.
.rlxp)Outer RLXPFLAT bundle: nested native subgraph packs under graphs/ (hot weight tensors + graph IR sidecars) plus English frontend assets. No .onnx on Hub. rlx-tiny-tts materializes the outer pack, then lowers each nested pack to HIR for the utterance length.
Official RLX package format (RLXPFLAT, container v2).
[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).
| Field | Value |
|---|---|
| File | tiny-tts.rlxp (29.4 MiB) |
| Manifest name | tiny-tts |
| Producer | rlx-assets |
| Container | RLXPFLAT v2, flags=0x1 |
| Tensors | 0 |
| Sidecars | 16 |
Outer TOC is file sidecars only. Neural weights live inside each graphs/<name>.rlxp as hot mmap tensors (not safetensors).
Paths below are logical ids inside the pack (__flat__/sidecar/<id>).
Cold sidecars are zstd-compressed; sizes show raw → stored.
| Sidecar | Raw | Stored | Role |
|---|---|---|---|
config.json | 325 B | 220 B | Model / sample-rate config (44.1 kHz) |
frontend/bert/tokenizer.json | 694.7 KiB | 214.5 KiB | BERT WordPiece tokenizer |
frontend/bert/tokenizer_config.json | 351 B | 218 B | Tokenizer config |
frontend/cmudict_rep.txt | 3.9 MiB | 1.0 MiB | CMUdict repair / variants |
frontend/g2p_checkpoint.safetensors | 3.2 MiB | 3.0 MiB | G2P checkpoint |
frontend/g2p_cmudict.txt | 3.3 MiB | 995.6 KiB | CMUdict for G2P |
frontend/homographs.en | 18.3 KiB | 5.0 KiB | Homograph list |
frontend/perceptron_tagger.json | 5.4 MiB | 1.5 MiB | POS tagger |
frontend/symbols.json | 2.1 KiB | 726 B | Symbol table |
graphs/decoder.rlxp | 13.7 MiB | 12.5 MiB | Nested pack: hot tensors + graph.json |
graphs/duration_predictor.rlxp | 1.0 MiB | 598.8 KiB | Nested pack: hot tensors + graph.json |
graphs/flow.rlxp | 13.7 MiB | 8.0 MiB | Nested pack: hot tensors + graph.json |
graphs/text_encoder.rlxp | 2.9 MiB | 1.7 MiB | Nested pack: hot tensors + graph.json |
Pipeline: text → English frontend (G2P) → text_encoder → duration_predictor → monotonic alignment + latent sample (Rust) → flow → decoder → 44.1 kHz mono WAV.
| Module | Role | Typical dtype | Notes |
|---|---|---|---|
text_encoder | phone/tone/lang → latent | f32 | length = phoneme count T |
duration_predictor | per-phone duration | f32 | |
flow | prior / flow | f32 | |
decoder | HiFi-GAN-style vocoder | f32 | ConvTranspose upsample ×512 |
| frontend | G2P + BERT tokenizer + CMUdict | — | file sidecars |
tiny-tts.rlxp
├── graphs/
│ ├── text_encoder.rlxp # hot f32/i64 + graph.json
│ ├── duration_predictor.rlxp
│ ├── flow.rlxp
│ └── decoder.rlxp
├── config.json
└── frontend/ # G2P / tokenizer (not neural)
just export-tiny-tts-rlxp / pack_rlxp example: ONNX pack-time source → nested graphs/*.rlxp via rlx-assets native-pack, then outer bundle. Hub artifact has zero .onnx.
MeloTTS (rlx-melotts) loads this same bundle — locally weights/tts/melotts is a symlink.
Hub ships no ONNX. Nested graphs/*.rlxp hold hot f32/i64 tensors + graph.json; the crate lowers to HIR per utterance length.
Clone rlx-models, place this repo under weights/tts/tiny-tts-rlx (or pass the path explicitly), then:
just fetch-tiny-tts && cargo run -p rlx-tiny-tts --release --features apple-silicon -- --data weights/tts/tiny-tts-rlx --text "Hi." --device metal --out /tmp/tiny.wav
MIT — see LICENSE. Inherit upstream terms when redistributing.
Original weights and authorship: https://github.com/tronghieuit/tiny-tts
Cards and LFS attrs are regenerated from the local weights/ tree in rlx-models via python3 scripts/prepare_weights_hf.py.
20 commits