Model reference · open weights

RubatoCodec

Audio third-intelligence Audio→audio 1 build Open weights 512 dl/mo

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.

  • RubatoCodec is a 246M parameter neural speech codec by third-intelligence designed for audio-to-audio tasks and streaming text-to-speech.
  • It uses variable-duration events to maintain a predictable token sequence length and supports English, Japanese, and Chinese.
  • The model is released under the Apache 2.0 license.

Summary of the third-intelligence/RubatoCodec model card, 2026-11-03

What it is

Released bythird-intelligence
Released2026-10-20
Parameters246M
VRAM492 MB for the weights

What it runs on

Memory and cards for RubatoCodec (FP32)

492 MBweights, file size
1.6 GBruntime overhead
CardOne streamMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What third-intelligence says about RubatoCodec

Read 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.

  • Adaptive Firing with an exact event budget. Multi-scale latent dissimilarity and waveform spectral flux guide cumulative allocation on a 50-Hz latent grid. For 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.
  • Streaming decoding. Events can be decoded one at a time or in chunks. Event-by-event decoding takes about 11 ms per event on an NVIDIA H200, well below the ~80 ms of audio each event represents on average.
  • Hybrid residual quantizer with depth control. A semantically supervised FSQ first layer is followed by 15 DAC-style residual VQ layers, each with 4,096 entries. Any prefix depth from 1 to 16 can be decoded, giving code-index bitrates of 0.15–2.4 kbit/s plus duration information.
  • Multilingual. Trained on approximately 375,000 hours of speech, mostly English, Japanese, and Chinese, with 16-kHz input and 44.1-kHz output.

Model details

Input / output sample rate16 kHz / 44.1 kHz
Latent grid50 Hz
Event rate12.5 events/s (retention ratio 0.25)
Quantizer16 layers × 4,096 entries; layer 0 FSQ with semantic distillation, layers 1–15 residual VQ
Bitrate1.23 kbit/s at depth 8, 2.43 kbit/s at depth 16 (LibriSpeech, including duration information)
DecoderFully causal Transformer + ISTFT head, streaming capable
Parameters246M codec (72M encoder, 173M decoder, 1M quantizer) + frozen w2v-BERT 2.0 (580M, encoding only)
LicenseApache 2.0

Usage

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.

Evaluation

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)

CodecEvent rate (Hz)Bitrate (kbit/s)UTMOSv2 ↑DNSMOS ↑PESQ-WB ↑STOI ↑dWER (%) ↓SIM ↑
~1.2 kbit/s
FlexiCodec, τ=1, depth 812.51.243.1943.2842.8130.9400.830.846
MiMo-Audio-Tokenizer, depth 625.01.203.1833.2912.6770.9270.860.848
MOSS-Audio-Tokenizer, depth 1012.51.253.2303.2173.0520.9490.890.904
DTM-Codec, 80-Hz target81.51.283.4213.3342.9710.9471.410.871
RubatoCodec, depth 812.51.233.4783.3272.6840.9310.750.871
~2.4 kbit/s
Qwen3-TTS-Tokenizer-12Hz12.52.203.2303.2733.1770.9580.530.941
MiMo-Audio-Tokenizer, depth 1325.02.423.2103.2883.0940.9470.670.896
MOSS-Audio-Tokenizer, depth 2012.52.503.2393.2033.5360.9680.620.954
RubatoCodec, depth 1612.52.433.4863.3143.0290.9500.500.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%.

CodecEvent rate (Hz)Bitrate (kbit/s)UTMOSv2 ↑DNSMOS ↑PESQ-WB ↑STOI ↑dCER (%) ↓SIM ↑
~1.2 kbit/s
FlexiCodec, τ=1, depth 812.

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

How it works

How audio & music work

Audio or textinputAudio modelrecognise / synthesiseText or audiooutputSpeech-to-text turns audio into text; text-to-speech and music models turn text into audio.
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms