rumik.ai

blog   |   post-trained model   |   x   |   discord   |   technical report: coming soon

rumik-oss 1 base

rumik-oss 1 base is a 3b multilingual text-to-speech model from rumik ai, released at the end of named-speaker training, before the subsequent delivery-control fine-tuning and reinforcement learning used for rumik-oss 1. it supports speaker-conditioned synthesis with 24 khz audio output and provides a starting point for further speech-model training and adaptation.

model overview

our blog describes the training curriculum and development of rumik-oss 1.

the model extends tiny aya fire with discrete audio tokens from the mimi codec. following the flattened codec-token formulation used in llama-mimi, a single causal transformer predicts eight codebook tokens per audio frame before advancing to the next frame. the frozen mimi decoder reconstructs the generated sequence as a waveform.

training progresses from english speech generation to indic-language continuation and named-speaker adaptation. the released checkpoint includes ira, aisha, siya, and zoya and accepts native-script, romanized, or code-switched text. speaker conditioning uses a name prefix followed by the text to synthesize.

this base release has not undergone description-conditioned delivery or inline vocalization training. use the post-trained model for tone, accent, pace, and vocalization controls.

inference

rumik-oss 1 base generates audio tokens. decoding them to a waveform is a separate step that uses the mimi codec, bundled in this repository under codec/.

transformers.pipeline("text-to-speech") is not supported for this model. use the one-shot example to generate audio tokens with generate_audio() and decode them into a waveform with mimi.

installation

pip install -r requirements.txt

requires an nvidia gpu with cuda support. the one-shot example below also needs soundfile to write a wav.

one-shot example

text in, speech.wav out:

"""rumik-oss 1 base: text -> speech.wav"""
import soundfile as sf
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, MimiModel

REPO = "rumik-ai/rumik-oss-1-base"
SPEAKER = "Ira"
TEXT = "Hello, how are you today?"

tokenizer = AutoTokenizer.from_pretrained(REPO, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    REPO, trust_remote_code=True, dtype=torch.bfloat16
).eval().cuda()
mimi = MimiModel.from_pretrained(REPO, subfolder="codec").eval().cuda()

# [BOS] <text> Ira: text <audio>
# the tokenizer adds [BOS] itself, so it is not written here
prompt = f'<text>{SPEAKER}: {TEXT}<audio>'
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

# 1. text -> audio tokens
ids = model.generate_audio(**inputs, max_new_tokens=2048,
                           temperature=0.8, top_k=30, do_sample=True)
audio_tokens = ids[0].tolist()[inputs.input_ids.shape[1]:]

# 2. audio tokens -> codec frames -> waveform
codes = model.audio_tokens_to_codes(audio_tokens)
with torch.inference_mode():
    wav = mimi.decode(codes.to(mimi.device)).audio_values[0, 0]

sf.write("speech.wav", wav.float().cpu().numpy(), 24000)
print(f"{len(audio_tokens)} tokens -> {len(audio_tokens) / 100:.2f}s -> speech.wav")

SPEAKER accepts Ira, Aisha, Siya, or Zoya. the model was trained on a flat token layout, not a chat template:

[BOS] <text> {speaker}: spoken text <audio> ... </audio>

this checkpoint has no description-conditioned delivery or inline vocalization controls; use the post-trained model for those.

command line

python inference.py --speaker Ira --text "Hello, how are you today?" --output speech.wav

further training

the release includes the language-model weights, learned stop predictor, tokenizer, and mimi codec. the model can be loaded through AutoModelForCausalLM.from_pretrained(..., trust_remote_code=True) for adaptation. preserve the bundled tokenizer's audio-token mapping when preparing training data. optimizer state is not included; further training starts with a new optimizer.

license

rumik-oss 1 base is available for research and non-commercial use under tiny aya fire's cc-by-nc 4.0 license with an acceptable-use addendum.

permitted non-commercial uses include speech-synthesis research, benchmarking, teaching, and fine-tuning for research experiments. redistribution and adaptations must retain attribution, license links, upstream notices, and an indication of modifications. all use must comply with cohere labs' acceptable-use policy. the license does not grant permission for commercial products or paid synthesis services.

the bundled mimi codec is separately licensed under cc-by-4.0. its commercial permissions do not extend to the tiny aya-derived tts weights.

the full license text is in LICENSE, and NOTICE.md records the modifications made to tiny aya fire, as cc-by-nc 4.0 requires.

acknowledgments

rumik-oss 1 base builds on tiny aya fire, mimi, llama-mimi, and torchtitan. we thank their authors for making this work available.

contact

research@rumik.ai

citation

if you find rumik-oss 1 base useful in your research, please cite our work:

@unpublished{govindu2026rumikoss1,
  title  = {{rumik-oss 1 technical report}},
  author = {Govindu Pranav and Anant Shukla and Suryansh Shakya and Aman Anand and Vatsal Bharti},
  year   = {2026},
  note   = {In preparation}
}
Downloads last month
118
Safetensors
Model size
4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for rumik-ai/rumik-oss-1-base

Finetuned
(17)
this model
Finetunes
1 model

Collection including rumik-ai/rumik-oss-1-base

Paper for rumik-ai/rumik-oss-1-base