Zero-shot cloning is never good enough for studio work. That's why we trained Robin: an open-weights model built for professionals in the open-source community. It launches with LoRA training scripts included and it renders at 48 kHz, the standard for film and video. Design a voice through text, re-voice your own takes with another voice or train a dedicated adapter model to always produce an exact voice using your own voice data.
A planner writes the speech as tokens. A decoder turns that plan into sound, reading the planner's memory at every layer as it goes.
A ten-second sample can't carry a voice's range. Robin instead learns new speakers through low-rank adaptation (LoRA) on transcribed recordings of the target voice. Adapters are trained on both networks while their pretrained weights stay frozen, and each voice is saved as a single file whose strength is set at inference.
$tree my_voice/ my_voice/ ├── line_001.txt # what line_001.wav says ├── line_001.wav ├── line_002.txt ├── line_002.wav ├── … └── voice.txt # optional: text description of voice attributes and qualities $python -m robin prep my_voice/ Checked 212 clips in my_voice ready: 209 clips, 21.4 minutes of speech left out: 3 clips no transcript (add a .txt file with the same name): 2 line_118.wav line_204.wav almost silent: 1 line_150.wav voice description (voice.txt): 'A warm, unhurried baritone.'
Example report. Run the check before training, or press Check data in the app. It lists clips it will leave out (no transcript, silent, too short or too long) and notes in plain words: clipping, digits, low sample rates, transcripts that may not match, repeated lines.
Recommendations for datasets:
We recommend using at least 15 minutes of speech or more. Our test trains averaged 20 minutes of audio that was split into approximately 200 individual clips for a single voice.
One or two sentences, 3 to 15 seconds. Anything from 1 to 30 seconds is accepted, so split longer takes.
One speaker in a quiet, dead-sounding room, with the same mic and distance throughout. No music, effects or other voices. Keep peaks around −6 dBFS.
WAV or FLAC at 44.1 or 48 kHz. Lower rates train a duller top end, and clips below 16 kHz are left out.
Exactly the words spoken. Write numbers the way they're said ("fifty percent"), and mark sounds and delivery with tags like [laughs], [sigh], [crying] or [shouting] where they happen. Re-record a stumble instead of transcribing it.
Mix statements, questions and exclamations, short lines and long ones. A calm read trains a calm voice, so record the delivery you want back.
TipThe surest way to exact transcripts: write the script first, then record it line by line. The script is the transcript.
So I told him the cat was the manager now, [laughs] and he actually believed me.
A kind older man with a soft, slightly husky voice, patient and good-humoured.
Sorry, give me a second. [coughs] The dust in this attic is unbelievable.
A man in his thirties with a clear, medium voice, a little out of breath.
Okay, big news: the bakery on the corner finally started making the cinnamon knots again.
A bright, fast-talking woman in her twenties with an American accent, upbeat and playful.
Okay, so the plan is simple: we wait until the bakery opens, and then we buy every single cinnamon roll.
The same take, re-voiced from a description: a warm, low-pitched man in his fifties with a slight rasp.
Robin speaks Japanese from the same plain-English voice descriptions, and can switch between Japanese and English in a single line.
おはようございます。今日は一日中、雨が降る予報です。傘をお忘れなく。A calm, clear Japanese woman in her thirties with a standard Tokyo accent, reading the morning weather report.
昔々、山の奥の小さな村に、一人のおじいさんが住んでいました。A warm, slightly gravelly Japanese man in his seventies, telling an old folk tale slowly and gently.
えっ、本当に?あのケーキ、全部一人で食べちゃったの?A bright, lively Japanese woman in her early twenties from Tokyo, surprised and teasing.
まもなく、一番線に電車がまいります。危ないですから、黄色い線の内側までお下がりください。A polite, crisp Japanese male station announcer in his forties, clear and steady.
明日のミーティングは午後三時からです。Please don't be late!
A friendly bilingual Japanese woman in her thirties who switches easily between Japanese and English.
Peak GPU memory for each job, measured on one workstation GPU. A short line takes one to two seconds.
# train a voice from a folder python -m robin train my_voice/ \ --model robin/ \ --out my_voice_lora/ # speak in a described voice python -m robin speak \ "Well, that went better than expected [laughs]" \ --model robin/ \ --voice "a warm, unhurried baritone, close to the mic"
python -m robin gui, runs locally in your browser