Skip to content

Vevo2

Vevo2 splits a voice into content, prosody, melody, style and timbre, then puts it back together against whatever references you give it. That is what lets one model cover singing conversion, speech conversion, speech editing and melody to singing.

Two tasks run on Vevo2, and they are on different pages.

Task Where Route
Sing it in another voice Remix style_preserved_svc
Sing lyrics in a voice Create text_to_singing or humming_to_singing

Upstream has eleven routes in total. Miso wires up three of them.

Pick a vocal stem, pick any other track in the project as the voice to copy, and it comes back as a stem beside the ones it was converted from.

This is the first task in Miso that reads two tracks. The form draws one picker per input role past the source.

A few seconds of clean vocal is enough for the reference.

Write lyrics, pick a track to borrow the voice from, and it sings them. Add a second track as a melody and it follows that instead of writing its own.

Whether you gave it a melody is what decides the route:

Melody Route Length follows
No text_to_singing Your words
Yes humming_to_singing The melody

The length limit on the form is what stops a long lyric short in the first case. The upstream default of 500 tokens is about seven seconds, which is why Miso sends 1500.

Option Default Does
source_audio The take being converted
target_voice The singer to copy
prosody_ref The melody, on the humming and instrument routes
target_text Lyrics, on the routes that take them
source_shift_steps 0 Manual pitch shift in semitones. Left at 0 the model works it out from the two voices
num_inference_steps 32 Flow matching steps
seed random Set it and the same inputs return the same audio

Everything Vevo2 sends travels flat, which is the opposite of RVC. Every field it uses is a CLI flag upstream.

24 kHz mono on every route. Nothing above 12 kHz survives.

That is the trade, and it is a real one. Vevo2 gives up bandwidth to be able to use any voice at all rather than a fixed set.

This is only relevant if you are working on Miso itself.

Vevo2 registers separately under each runtime task kind, and the backend refuses a route that does not belong to the kind its registration was loaded under. svc is not vc under another name, and loading Vevo2 as vc then asking for style_preserved_svc is refused.

generate.sing is the reason a task’s server kind can be a function rather than a fixed string. Its two routes live under different kinds, tts and svc, and the resolver reads the staged inputs to decide which.