eugenehp/tiny-tts-rlx

Model

0

stars

20

commits

2

linked in READMEs

Jul 24, 2026

updated

melotts
rlx
rlxp
text-to-speech
tts
vits2

README

TinyTTS / MeloTTS RLX bundle

MeloTTS/VITS2 English nested .rlxp subgraphs + frontend for RLX TinyTTS and MeloTTS. CPU / Metal / MLX / CUDA / wgpu.

FieldValue
Hub ideugenehp/tiny-tts-rlx
KindRLX-native weight bundle (graphs + sidecars ready for rlx-* crates).
RLX craterlx-tiny-tts
Upstreamhttps://github.com/tronghieuit/tiny-tts

Quick start

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

Primary files (use these)

  • tiny-tts.rlxp — 29.4 MiB

Contents

Hub ships tiny-tts.rlxp only (nested graph packs + frontend). Also used by rlx-melotts / just fetch-melotts. Runtime does not load .onnx from Hub.

Pack layout (.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).

This pack

FieldValue
Filetiny-tts.rlxp (29.4 MiB)
Manifest nametiny-tts
Producerrlx-assets
ContainerRLXPFLAT v2, flags=0x1
Tensors0
Sidecars16

Sidecars (file assets)

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.

SidecarRawStoredRole
config.json325 B220 BModel / sample-rate config (44.1 kHz)
frontend/bert/tokenizer.json694.7 KiB214.5 KiBBERT WordPiece tokenizer
frontend/bert/tokenizer_config.json351 B218 BTokenizer config
frontend/cmudict_rep.txt3.9 MiB1.0 MiBCMUdict repair / variants
frontend/g2p_checkpoint.safetensors3.2 MiB3.0 MiBG2P checkpoint
frontend/g2p_cmudict.txt3.3 MiB995.6 KiBCMUdict for G2P
frontend/homographs.en18.3 KiB5.0 KiBHomograph list
frontend/perceptron_tagger.json5.4 MiB1.5 MiBPOS tagger
frontend/symbols.json2.1 KiB726 BSymbol table
graphs/decoder.rlxp13.7 MiB12.5 MiBNested pack: hot tensors + graph.json
graphs/duration_predictor.rlxp1.0 MiB598.8 KiBNested pack: hot tensors + graph.json
graphs/flow.rlxp13.7 MiB8.0 MiBNested pack: hot tensors + graph.json
graphs/text_encoder.rlxp2.9 MiB1.7 MiBNested pack: hot tensors + graph.json

Architecture

Pipeline: text → English frontend (G2P) → text_encoderduration_predictor → monotonic alignment + latent sample (Rust) → flowdecoder → 44.1 kHz mono WAV.

ModuleRoleTypical dtypeNotes
text_encoderphone/tone/lang → latentf32length = phoneme count T
duration_predictorper-phone durationf32
flowprior / flowf32
decoderHiFi-GAN-style vocoderf32ConvTranspose upsample ×512
frontendG2P + BERT tokenizer + CMUdictfile sidecars

Logical tree

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)

How it is packed

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.

Note

MeloTTS (rlx-melotts) loads this same bundle — locally weights/tts/melotts is a symlink.

Note

Hub ships no ONNX. Nested graphs/*.rlxp hold hot f32/i64 tensors + graph.json; the crate lowers to HIR per utterance length.

Run with RLX

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

License

MIT — see LICENSE. Inherit upstream terms when redistributing.

Original weights and authorship: https://github.com/tronghieuit/tiny-tts

Maintenance

Cards and LFS attrs are regenerated from the local weights/ tree in rlx-models via python3 scripts/prepare_weights_hf.py.

Contributors

eugenehp

20 commits

eugenehp/tiny-tts-rlx

Model

0

stars

20

commits

2

linked in READMEs

Jul 24, 2026

updated

melotts
rlx
rlxp
text-to-speech
tts
vits2

README

TinyTTS / MeloTTS RLX bundle

MeloTTS/VITS2 English nested .rlxp subgraphs + frontend for RLX TinyTTS and MeloTTS. CPU / Metal / MLX / CUDA / wgpu.

FieldValue
Hub ideugenehp/tiny-tts-rlx
KindRLX-native weight bundle (graphs + sidecars ready for rlx-* crates).
RLX craterlx-tiny-tts
Upstreamhttps://github.com/tronghieuit/tiny-tts

Quick start

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

Primary files (use these)

  • tiny-tts.rlxp — 29.4 MiB

Contents

Hub ships tiny-tts.rlxp only (nested graph packs + frontend). Also used by rlx-melotts / just fetch-melotts. Runtime does not load .onnx from Hub.

Pack layout (.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).

This pack

FieldValue
Filetiny-tts.rlxp (29.4 MiB)
Manifest nametiny-tts
Producerrlx-assets
ContainerRLXPFLAT v2, flags=0x1
Tensors0
Sidecars16

Sidecars (file assets)

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.

SidecarRawStoredRole
config.json325 B220 BModel / sample-rate config (44.1 kHz)
frontend/bert/tokenizer.json694.7 KiB214.5 KiBBERT WordPiece tokenizer
frontend/bert/tokenizer_config.json351 B218 BTokenizer config
frontend/cmudict_rep.txt3.9 MiB1.0 MiBCMUdict repair / variants
frontend/g2p_checkpoint.safetensors3.2 MiB3.0 MiBG2P checkpoint
frontend/g2p_cmudict.txt3.3 MiB995.6 KiBCMUdict for G2P
frontend/homographs.en18.3 KiB5.0 KiBHomograph list
frontend/perceptron_tagger.json5.4 MiB1.5 MiBPOS tagger
frontend/symbols.json2.1 KiB726 BSymbol table
graphs/decoder.rlxp13.7 MiB12.5 MiBNested pack: hot tensors + graph.json
graphs/duration_predictor.rlxp1.0 MiB598.8 KiBNested pack: hot tensors + graph.json
graphs/flow.rlxp13.7 MiB8.0 MiBNested pack: hot tensors + graph.json
graphs/text_encoder.rlxp2.9 MiB1.7 MiBNested pack: hot tensors + graph.json

Architecture

Pipeline: text → English frontend (G2P) → text_encoderduration_predictor → monotonic alignment + latent sample (Rust) → flowdecoder → 44.1 kHz mono WAV.

ModuleRoleTypical dtypeNotes
text_encoderphone/tone/lang → latentf32length = phoneme count T
duration_predictorper-phone durationf32
flowprior / flowf32
decoderHiFi-GAN-style vocoderf32ConvTranspose upsample ×512
frontendG2P + BERT tokenizer + CMUdictfile sidecars

Logical tree

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)

How it is packed

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.

Note

MeloTTS (rlx-melotts) loads this same bundle — locally weights/tts/melotts is a symlink.

Note

Hub ships no ONNX. Nested graphs/*.rlxp hold hot f32/i64 tensors + graph.json; the crate lowers to HIR per utterance length.

Run with RLX

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

License

MIT — see LICENSE. Inherit upstream terms when redistributing.

Original weights and authorship: https://github.com/tronghieuit/tiny-tts

Maintenance

Cards and LFS attrs are regenerated from the local weights/ tree in rlx-models via python3 scripts/prepare_weights_hf.py.

Contributors

eugenehp

20 commits