Model reference · open weights
RubatoCodec is an open-weight audio or speech model from third-intelligence. RubatoCodec (FP32) weighs 492 MB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the third-intelligence/RubatoCodec model card, 2026-11-03
What it is
| Released by | third-intelligence |
|---|---|
| Released | 2026-10-20 |
| Parameters | 246M |
| VRAM | 492 MB for the weights |
What it runs on
| Card | One stream | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
RubatoCodec is a neural speech codec that divides speech into a fixed number of variable-duration events. Each event carries discrete code indices and an explicit duration. Event placement adapts to speech content, while the number of events is determined exactly by the utterance length, so the token sequence length a speech generator must produce is predictable. A causal decoder renders completed events incrementally, which makes the codec suitable for streaming text-to-speech.
The name comes from the musical term rubato: local timing flexes while the overall tempo is preserved.
T frames the event count is exactly
max(1, min(T, round(0.25 · T))), giving 12.5 events/s. No learned boundary
predictor, boundary labels, or rate loss is used.| Input / output sample rate | 16 kHz / 44.1 kHz |
| Latent grid | 50 Hz |
| Event rate | 12.5 events/s (retention ratio 0.25) |
| Quantizer | 16 layers × 4,096 entries; layer 0 FSQ with semantic distillation, layers 1–15 residual VQ |
| Bitrate | 1.23 kbit/s at depth 8, 2.43 kbit/s at depth 16 (LibriSpeech, including duration information) |
| Decoder | Fully causal Transformer + ISTFT head, streaming capable |
| Parameters | 246M codec (72M encoder, 173M decoder, 1M quantizer) + frozen w2v-BERT 2.0 (580M, encoding only) |
| License | Apache 2.0 |
Install the package from the GitHub repository:
git clone https://github.com/third-intelligence/RubatoCodec
cd RubatoCodec
uv sync
Encode and decode:
import soundfile as sf
import torch
from rubatocodec import RubatoCodec
codec = RubatoCodec.from_pretrained("third-intelligence/RubatoCodec", device="cuda")
data, sr = sf.read("speech.wav", dtype="float32") # mono waveform
wav = torch.from_numpy(data)
enc = codec.encode(wav, sr=sr) # {"codes": (16, K) int64, "durs": (K,) int64}
audio = codec.decode(enc) # (1, 1, T_audio) at 44.1 kHz, full depth
audio = codec.decode(enc, depth=8) # lower bitrate with the first 8 layers
sf.write("recon.wav", audio[0, 0].cpu().numpy(), codec.output_sr)
durs gives each event's duration in 20-ms grid frames. Loading also downloads
facebook/w2v-bert-2.0, which is used only for encoding.
Streaming decoding, inference settings, the code format, and training are documented in the repository: inference guide, architecture, training.
RubatoCodec is evaluated on LibriSpeech test-clean, VCTK, JVS nonpara30, JVNV, and seed-tts-eval test-zh against 13 other codecs. At comparable bitrates, it shows the best intelligibility preservation among the compared codecs on the English and Japanese benchmarks and high predicted quality, while the strongest comparators achieve higher PESQ-WB and STOI.
dWER/dCER compare ASR transcripts of the reconstructed and original audio (Whisper-large-v3 for English and Japanese, Paraformer-zh for Mandarin). SIM is cosine similarity of speaker embeddings from a fine-tuned WavLM-Large speaker verification model. Bitrates include duration information.
The tables below show a subset of the compared codecs. Bold and band.
LibriSpeech test-clean (English)
| Codec | Event rate (Hz) | Bitrate (kbit/s) | UTMOSv2 ↑ | DNSMOS ↑ | PESQ-WB ↑ | STOI ↑ | dWER (%) ↓ | SIM ↑ |
|---|---|---|---|---|---|---|---|---|
| ~1.2 kbit/s | ||||||||
| FlexiCodec, τ=1, depth 8 | 12.5 | 1.24 | 3.194 | 3.284 | 2.813 | 0.940 | 0.83 | 0.846 |
| MiMo-Audio-Tokenizer, depth 6 | 25.0 | 1.20 | 3.183 | 3.291 | 2.677 | 0.927 | 0.86 | 0.848 |
| MOSS-Audio-Tokenizer, depth 10 | 12.5 | 1.25 | 3.230 | 3.217 | 3.052 | 0.949 | 0.89 | 0.904 |
| DTM-Codec, 80-Hz target | 81.5 | 1.28 | 3.421 | 3.334 | 2.971 | 0.947 | 1.41 | 0.871 |
| RubatoCodec, depth 8 | 12.5 | 1.23 | 3.478 | 3.327 | 2.684 | 0.931 | 0.75 | 0.871 |
| ~2.4 kbit/s | ||||||||
| Qwen3-TTS-Tokenizer-12Hz | 12.5 | 2.20 | 3.230 | 3.273 | 3.177 | 0.958 | 0.53 | 0.941 |
| MiMo-Audio-Tokenizer, depth 13 | 25.0 | 2.42 | 3.210 | 3.288 | 3.094 | 0.947 | 0.67 | 0.896 |
| MOSS-Audio-Tokenizer, depth 20 | 12.5 | 2.50 | 3.239 | 3.203 | 3.536 | 0.968 | 0.62 | 0.954 |
| RubatoCodec, depth 16 | 12.5 | 2.43 | 3.486 | 3.314 | 3.029 | 0.950 | 0.50 | 0.928 |
JVNV (Japanese emotional speech with nonverbal vocalizations)
On expressive speech, RubatoCodec keeps dCER below 2% at both bitrates, while every other compared codec exceeds 3%.
| Codec | Event rate (Hz) | Bitrate (kbit/s) | UTMOSv2 ↑ | DNSMOS ↑ | PESQ-WB ↑ | STOI ↑ | dCER (%) ↓ | SIM ↑ |
|---|---|---|---|---|---|---|---|---|
| ~1.2 kbit/s | ||||||||
| FlexiCodec, τ=1, depth 8 | 12. |
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
How it works