Instructions to use rumik-ai/rumik-oss-1-base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use rumik-ai/rumik-oss-1-base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-speech", model="rumik-ai/rumik-oss-1-base", trust_remote_code=True)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("rumik-ai/rumik-oss-1-base", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
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
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