cottom/rvc-infer
AI song cover in an RVC voice: vocal, harmony and reverb separation, RVC conversion with automatic octave, reverb, key shift and mix.
Run cottom/rvc-infer with an API
Use one of our client libraries to get started quickly. Clicking on a library will take you to the Playground tab where you can tweak different inputs, see the results, and copy the corresponding code to use in your own project.
Input schema
The fields you can use to run this model with an API. If you don't give a value for a field its default value will be used.
| Field | Type | Default value | Description |
|---|---|---|---|
| song |
string
|
The song to cover (any format; stereo is kept). An a cappella vocal works too.
|
|
| voice |
string
|
The RVC voice: a .zip holding a .pth (and usually an .index), or a .pth.
|
|
| voice_octave |
None
|
auto
|
Octave for the new voice. auto picks -1, 0 or +1 from the voice's trained pitch (or voice_f0_hz) against the singer's.
|
| voice_f0_hz |
number
|
0
Max: 1000 |
The voice's typical pitch in Hz when the voice file does not record it; 0 = unknown.
|
| key_shift |
integer
|
0
Min: -12 Max: 12 |
Semitones to transpose the whole song: vocals, backing vocals and instrumental.
|
| pitch_extractor |
None
|
rmvpe
|
Pitch extraction for the conversion.
|
| index_rate |
number
|
0.5
Max: 1 |
How much the voice's retrieval index shapes the timbre (more = closer to the voice, less = clearer words).
|
| protect |
number
|
0.33
Max: 0.5 |
Protect breaths and voiceless consonants from conversion artefacts (0.5 = off).
|
| rms_mix_rate |
number
|
0.25
Max: 1 |
0 follows the singer's loudness contour, 1 keeps the converted voice's own.
|
| separation |
None
|
auto
|
auto: separate when the input has a backing track. never: the input is already a vocal.
|
| backing_vocals |
None
|
keep
|
Harmonies and backing vocals: keep them (original voices) or drop them.
|
| remove_reverb |
boolean
|
True
|
De-reverb the lead before conversion (strongly recommended).
|
| lead_volume_db |
number
|
0
Min: -20 Max: 20 |
New lead vocal level against the original lead, in dB.
|
| backing_volume_db |
number
|
0
Min: -20 Max: 20 |
Backing vocals level, in dB.
|
| instrumental_volume_db |
number
|
0
Min: -20 Max: 20 |
Instrumental level, in dB.
|
| reverb_size |
number
|
0.15
Max: 1 |
Reverb room size.
|
| reverb_wetness |
number
|
0.2
Max: 1 |
Reverb wet level.
|
| reverb_dryness |
number
|
0.8
Max: 1 |
Reverb dry level.
|
| reverb_damping |
number
|
0.7
Max: 1 |
Reverb high-frequency damping.
|
| output_format |
None
|
mp3
|
mp3 is 320 kbps; wav and flac are 16-bit. All 44.1 kHz stereo.
|
| return_stems |
boolean
|
False
|
Also return the new lead vocal and the instrumental as separate files.
|
{
"type": "object",
"title": "Input",
"required": [
"song",
"voice"
],
"properties": {
"song": {
"type": "string",
"title": "Song",
"format": "uri",
"x-order": 0,
"description": "The song to cover (any format; stereo is kept). An a cappella vocal works too."
},
"voice": {
"type": "string",
"title": "Voice",
"format": "uri",
"x-order": 1,
"description": "The RVC voice: a .zip holding a .pth (and usually an .index), or a .pth."
},
"protect": {
"type": "number",
"title": "Protect",
"default": 0.33,
"maximum": 0.5,
"minimum": 0,
"x-order": 7,
"description": "Protect breaths and voiceless consonants from conversion artefacts (0.5 = off)."
},
"key_shift": {
"type": "integer",
"title": "Key Shift",
"default": 0,
"maximum": 12,
"minimum": -12,
"x-order": 4,
"description": "Semitones to transpose the whole song: vocals, backing vocals and instrumental."
},
"index_rate": {
"type": "number",
"title": "Index Rate",
"default": 0.5,
"maximum": 1,
"minimum": 0,
"x-order": 6,
"description": "How much the voice's retrieval index shapes the timbre (more = closer to the voice, less = clearer words)."
},
"separation": {
"enum": [
"auto",
"always",
"never"
],
"type": "string",
"title": "separation",
"description": "auto: separate when the input has a backing track. never: the input is already a vocal.",
"default": "auto",
"x-order": 9
},
"reverb_size": {
"type": "number",
"title": "Reverb Size",
"default": 0.15,
"maximum": 1,
"minimum": 0,
"x-order": 15,
"description": "Reverb room size."
},
"voice_f0_hz": {
"type": "number",
"title": "Voice F0 Hz",
"default": 0,
"maximum": 1000,
"minimum": 0,
"x-order": 3,
"description": "The voice's typical pitch in Hz when the voice file does not record it; 0 = unknown."
},
"return_stems": {
"type": "boolean",
"title": "Return Stems",
"default": false,
"x-order": 20,
"description": "Also return the new lead vocal and the instrumental as separate files."
},
"rms_mix_rate": {
"type": "number",
"title": "Rms Mix Rate",
"default": 0.25,
"maximum": 1,
"minimum": 0,
"x-order": 8,
"description": "0 follows the singer's loudness contour, 1 keeps the converted voice's own."
},
"voice_octave": {
"enum": [
"auto",
"-1",
"0",
"+1"
],
"type": "string",
"title": "voice_octave",
"description": "Octave for the new voice. auto picks -1, 0 or +1 from the voice's trained pitch (or voice_f0_hz) against the singer's.",
"default": "auto",
"x-order": 2
},
"output_format": {
"enum": [
"mp3",
"wav",
"flac"
],
"type": "string",
"title": "output_format",
"description": "mp3 is 320 kbps; wav and flac are 16-bit. All 44.1 kHz stereo.",
"default": "mp3",
"x-order": 19
},
"remove_reverb": {
"type": "boolean",
"title": "Remove Reverb",
"default": true,
"x-order": 11,
"description": "De-reverb the lead before conversion (strongly recommended)."
},
"backing_vocals": {
"enum": [
"keep",
"remove"
],
"type": "string",
"title": "backing_vocals",
"description": "Harmonies and backing vocals: keep them (original voices) or drop them.",
"default": "keep",
"x-order": 10
},
"lead_volume_db": {
"type": "number",
"title": "Lead Volume Db",
"default": 0,
"maximum": 20,
"minimum": -20,
"x-order": 12,
"description": "New lead vocal level against the original lead, in dB."
},
"reverb_damping": {
"type": "number",
"title": "Reverb Damping",
"default": 0.7,
"maximum": 1,
"minimum": 0,
"x-order": 18,
"description": "Reverb high-frequency damping."
},
"reverb_dryness": {
"type": "number",
"title": "Reverb Dryness",
"default": 0.8,
"maximum": 1,
"minimum": 0,
"x-order": 17,
"description": "Reverb dry level."
},
"reverb_wetness": {
"type": "number",
"title": "Reverb Wetness",
"default": 0.2,
"maximum": 1,
"minimum": 0,
"x-order": 16,
"description": "Reverb wet level."
},
"pitch_extractor": {
"enum": [
"rmvpe",
"fcpe"
],
"type": "string",
"title": "pitch_extractor",
"description": "Pitch extraction for the conversion.",
"default": "rmvpe",
"x-order": 5
},
"backing_volume_db": {
"type": "number",
"title": "Backing Volume Db",
"default": 0,
"maximum": 20,
"minimum": -20,
"x-order": 13,
"description": "Backing vocals level, in dB."
},
"instrumental_volume_db": {
"type": "number",
"title": "Instrumental Volume Db",
"default": 0,
"maximum": 20,
"minimum": -20,
"x-order": 14,
"description": "Instrumental level, in dB."
}
}
}
Output schema
The shape of the response you’ll get when you run this model with an API.
{
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"title": "Output"
}