Trelis/libritts-snac-tokens
libritts-snac-tokens To learn about Trelis Enterprise Voice Services, see Trelis.com/voice-ai-services. LibriTTS-R encoded with hubertsiuzdak/snac_24khz (hierarchical RVQ, 3 levels at 12 / 24 / 48 fps, 4,096 entries each). Orpheus-style interleave per 1/12-sec audio frame: [L0[t], L1[2t], L1[2t+1], L2[4t], L2[4t+1], L2[4t+2], L2[4t+3]]. 7 tokens per audio frame, 84 fps flat. Offset vocab 12,288: L0 in [0, 4096), L1 in [4096, 8192), L2 in [8192, 12288). Decode with level =… See the full description on the dataset page: https://huggingface.co/datasets/Trelis/libritts-snac-tokens.
libritts-snac-tokens
To learn about Trelis Enterprise Voice Services, see Trelis.com/voice-ai-services.
LibriTTS-R encoded with hubertsiuzdak/snac_24khz (hierarchical RVQ, 3 levels at 12 / 24 / 48 fps, 4,096 entries each).
Orpheus-style interleave per 1/12-sec audio frame: [L0[t], L1[2t], L1[2t+1], L2[4t], L2[4t+1], L2[4t+2], L2[4t+3]]. 7 tokens per audio frame, 84 fps flat.
Offset vocab 12,288: L0 in [0, 4096), L1 in [4096, 8192), L2 in [8192, 12288). Decode with level = token // 4096, code = token % 4096.
Splits
Mirrors the source LibriTTS-R splits (filtered by parler-tts; total ≈ 538 h):
Source: `parler-tts/libritts_r_filtered`. Disjointness between splits is structural (HF split definition — no speaker overlap between train. and dev.).
Schema (one row per utterance)
Loading
from datasets import load_dataset
# Load the whole dataset (all 4 splits)
ds = load_dataset("Trelis/libritts-snac-tokens")
# Just one split
clean_360 = load_dataset("Trelis/libritts-snac-tokens", split="train.clean.360")
# Combine all train splits
all_train = load_dataset("Trelis/libritts-snac-tokens",
split="train.clean.100+train.clean.360+train.other.500")
print(all_train[0])Companion datasets (same audio content, different tokenization)
Trelis/libritts-bpe-tokensTrelis/libritts-mimi-tokensTrelis/libritts-neucodec-tokens
Reproducing
Encoder code: TrelisResearch/audio-bits (see scripts/encode_codec.py and scripts/tokenize_text.py).
Audio prep: source LibriTTS-R is 24 kHz. NeuCodec (16 kHz) is downsampled with torchaudio.functional.resample(method="sinc_interp_kaiser") (polyphase, anti-aliased). Mimi and SNAC consume 24 kHz directly. Utterances > 20 s are truncated to 20 s of audio (text is kept full).
Per-row token count = min(ceil(n_audio_samples * T / max_padded_samples), T) where T is the codec's per-batch output length, so the count tracks the model's own time grid and is exact for fixed-stride encoders.
License
CC-BY-4.0 (matches LibriTTS-R source). SNAC model weights: MIT.
